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/08/08 14:27:23 UTC
[camel-karavan] 03/03: First attempt for #484
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 7144594f250ba6c6e70d179f58c832c12b30ffe9
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Tue Aug 8 10:27:08 2023 -0400
First attempt for #484
---
.../org/apache/camel/karavan/cli/CommandUtils.java | 59 ++-
.../org/apache/camel/karavan/cli/Constants.java | 4 +
.../apache/camel/karavan/cli/InstallCommand.java | 109 ------
.../apache/camel/karavan/cli/KaravanCommand.java | 357 +++++++++++++++++-
.../apache/camel/karavan/cli/KaravanConfig.java | 304 ---------------
.../apache/camel/karavan/cli/ResourceUtils.java | 4 +-
.../apache/camel/karavan/cli/UpgradeCommand.java | 20 -
.../karavan/cli/resources/KaravanConfigMap.java | 6 +-
.../karavan/cli/resources/KaravanDeployment.java | 4 +-
.../camel/karavan/cli/resources/KaravanPvc.java | 8 +-
.../camel/karavan/cli/resources/KaravanRole.java | 12 +-
.../camel/karavan/cli/resources/KaravanSecret.java | 4 +-
.../karavan/cli/resources/KaravanService.java | 6 +-
.../cli/resources/KaravanServiceAccount.java | 6 +-
.../camel/karavan/cli/resources/KaravanTekton.java | 8 +-
.../apache/camel/karavan/cli/resources/Nexus.java | 6 +-
.../src/main/resources/infinispan-secrets.yaml | 11 -
.../src/main/resources/infinispan-values.yaml | 14 -
.../karavan-cli/src/main/resources/infinispan.yaml | 414 +++++++++++++++++++++
19 files changed, 858 insertions(+), 498 deletions(-)
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/CommandUtils.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/CommandUtils.java
index 53b10eef..4b170f69 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/CommandUtils.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/CommandUtils.java
@@ -19,6 +19,7 @@ package org.apache.camel.karavan.cli;
import io.fabric8.kubernetes.api.model.*;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.apps.DeploymentCondition;
+import io.fabric8.kubernetes.api.model.apps.StatefulSet;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
import io.fabric8.openshift.api.model.operatorhub.v1.Operator;
@@ -27,16 +28,20 @@ import io.fabric8.tekton.pipeline.v1beta1.Pipeline;
import io.fabric8.tekton.pipeline.v1beta1.Task;
import org.apache.camel.karavan.cli.resources.*;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
+import java.util.stream.Collectors;
public class CommandUtils {
private static final Pipeline pipeline = new Pipeline();
private static final Task task = new Task();
- public static void installKaravan(KaravanConfig config) {
+ public static void installKaravan(KaravanCommand config) {
try (KubernetesClient client = new KubernetesClientBuilder().build()) {
OpenShiftClient oClient = client.adapt(OpenShiftClient.class);
if (oClient.isSupported()) {
@@ -50,7 +55,7 @@ public class CommandUtils {
}
}
- private static void install(KaravanConfig config, KubernetesClient client) {
+ private static void install(KaravanCommand config, KubernetesClient client) {
// Check and install Tekton
if (!isTektonInstalled(client)) {
log("Tekton is not installed");
@@ -72,6 +77,17 @@ public class CommandUtils {
log("Namespace " + config.getNamespace() + " already exists");
}
+ // Check and install Infinispan
+ if (!isInfinispanInstalled(client)) {
+ log("Infinispan is not installed");
+ if (isOpenShift(client)) {
+ logPoint("Please install Infinispan first");
+ System.exit(0);
+ }
+ installInfinispan(config, client);
+ }
+ log("Infinispan is installed");
+
// Check secrets
if (!checkKaravanSecrets(config, client)) {
logError("Karavan secrets not found");
@@ -134,12 +150,12 @@ public class CommandUtils {
log("Karavan is ready");
}
- public static boolean checkKaravanSecrets(KaravanConfig config, KubernetesClient client) {
+ public static boolean checkKaravanSecrets(KaravanCommand config, KubernetesClient client) {
Secret secret = client.secrets().inNamespace(config.getNamespace()).withName(Constants.NAME).get();
return secret != null;
}
- public static boolean tryToCreateKaravanSecrets(KaravanConfig config, KubernetesClient client) {
+ public static boolean tryToCreateKaravanSecrets(KaravanCommand config, KubernetesClient client) {
if (config.gitConfigured()) {
if (config.getImageRegistry() == null) {
if (config.isOpenShift()) {
@@ -161,7 +177,7 @@ public class CommandUtils {
return false;
}
- public static boolean checkReady(KaravanConfig config, KubernetesClient client) {
+ public static boolean checkReady(KaravanCommand config, KubernetesClient client) {
Deployment deployment = client.apps().deployments().inNamespace(config.getNamespace()).withName(Constants.NAME).get();
Integer replicas = deployment.getStatus().getReplicas();
Integer ready = deployment.getStatus().getReadyReplicas();
@@ -183,7 +199,22 @@ public class CommandUtils {
}
}
- private static void installTekton(KaravanConfig config, KubernetesClient client) {
+ private static void installInfinispan(KaravanCommand config, KubernetesClient client) {
+ System.out.print("⏳ Installing Infinispan");
+ String yaml = getResourceFile("/infinispan.yaml");
+//
+// client.load(CommandUtils.class.getResourceAsStream("/pipelines.yaml")).create().forEach(hasMetadata -> {
+// System.out.print(".");
+// });
+// client.load(CommandUtils.class.getResourceAsStream("/dashboard.yaml")).create().forEach(hasMetadata -> {
+// System.out.print(".");
+// });
+ System.out.println(yaml);
+ System.exit(0);
+ log("Infinispan is installed");
+ }
+
+ private static void installTekton(KaravanCommand config, KubernetesClient client) {
System.out.print("⏳ Installing Tekton");
client.load(CommandUtils.class.getResourceAsStream("/pipelines.yaml")).create().forEach(hasMetadata -> {
System.out.print(".");
@@ -219,6 +250,12 @@ public class CommandUtils {
return false;
}
+ private static boolean isInfinispanInstalled(KubernetesClient client) {
+ Service service = client.services().withName("infinispan").get();
+ StatefulSet set = client.apps().statefulSets().withName("infinispan").get();
+ return service != null && set != null;
+ }
+
public static void log(String emoji, String message) {
System.out.println(emoji + " " + message);
}
@@ -250,4 +287,14 @@ public class CommandUtils {
private static boolean isOpenShift(KubernetesClient client) {
return client.adapt(OpenShiftClient.class).isSupported();
}
+
+ private static String getResourceFile(String path) {
+ try {
+ InputStream inputStream = CommandUtils.class.getResourceAsStream(path);
+ return new BufferedReader(new InputStreamReader(inputStream))
+ .lines().collect(Collectors.joining(System.getProperty("line.separator")));
+ } catch (Exception e) {
+ return null;
+ }
+ }
}
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/Constants.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/Constants.java
index 061105d2..53558b88 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/Constants.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/Constants.java
@@ -30,6 +30,10 @@ public final class Constants {
public static final String KARAVAN_IMAGE = "ghcr.io/apache/camel-karavan";
+ public static final String INFINISPAN_IMAGE = "quay.io/infinispan/server:14.0.6.Final";
+ public static final String INFINISPAN_USERNAME = "admin";
+ public static final String INFINISPAN_PASSWORD = "karavan";
+
public static final String CRD_GROUP = "camel.apache.org";
public static final String CRD_VERSION = "v1";
public static final String SHORT_NAME = "karavan";
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/InstallCommand.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/InstallCommand.java
deleted file mode 100644
index 7ea78b73..00000000
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/InstallCommand.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.apache.camel.karavan.cli;
-
-import picocli.CommandLine;
-
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.concurrent.Callable;
-
-@CommandLine.Command(name = "install",
- mixinStandardHelpOptions = true,
- description = "Install Karavan")
-public class InstallCommand implements Callable<Integer> {
-
- @CommandLine.Option(names = {"-v", "--version"}, required = true, description = "Karavan version", defaultValue = "4.0.0-RC2")
- private String version;
- @CommandLine.Option(names = {"-n", "--namespace"}, description = "Namespace", defaultValue = Constants.DEFAULT_NAMESPACE)
- private String namespace;
- @CommandLine.Option(names = {"-e", "--environment"}, description = "Environment", defaultValue = Constants.DEFAULT_ENVIRONMENT)
- private String environment;
- @CommandLine.Option(names = {"-r", "--runtimes"}, description = "Runtimes: quarkus, spring-boot", defaultValue = Constants.DEFAULT_RUNTIMES)
- private String runtimes;
- @CommandLine.Option(names = {"--auth"}, description = "Authentication: public, basic, oidc", defaultValue = Constants.DEFAULT_AUTH)
- private String auth;
- @CommandLine.Option(names = {"--node-port"}, description = "Node port", defaultValue = "0")
- private int nodePort;
- @CommandLine.Option(names = {"--instances"}, description = "Instances. Default: 1", defaultValue = "1")
- private int instances;
- @CommandLine.Option(names = {"--base-image"}, description = "Base Image", defaultValue = Constants.KARAVAN_IMAGE)
- private String baseImage;
- @CommandLine.Option(names = {"--base-builder-image"}, description = "Base Builder Image", defaultValue = Constants.DEFAULT_BUILD_IMAGE)
- private String baseBuilderImage;
- @CommandLine.Option(names = {"--file"}, description = "YAML file name", defaultValue = "karavan.yaml")
- private String file;
- @CommandLine.Option(names = {"--yaml"}, description = "Create YAML file. Do not apply")
- private boolean yaml;
- @CommandLine.Option(names = {"--openshift"}, description = "Create files for OpenShift")
- private boolean isOpenShift;
-
- @CommandLine.Option(names = {"--master-password"}, description = "Master password", defaultValue = "karavan")
- private String masterPassword;
- @CommandLine.Option(names = {"--oidc-secret"}, description = "OIDC secret")
- private String oidcSecret;
- @CommandLine.Option(names = {"--oidc-server-url"}, description = "OIDC server URL")
- private String oidcServerUrl;
- @CommandLine.Option(names = {"--oidc-frontend-url"}, description = "OIDC frontend URL")
- private String oidcFrontendUrl;
- @CommandLine.Option(names = {"--git-repository"}, description = "Git repository")
- private String gitRepository;
- @CommandLine.Option(names = {"--git-username"}, description = "Git username")
- private String gitUsername;
- @CommandLine.Option(names = {"--git-password"}, description = "Git password")
- private String gitPassword;
- @CommandLine.Option(names = {"--git-branch"}, description = "Git branch", defaultValue = "main")
- private String gitBranch;
- @CommandLine.Option(names = {"--git-pull"}, description = "Git pull interval. Default: off", defaultValue = "off")
- private String gitPullInterval;
- @CommandLine.Option(names = {"--image-registry"}, description = "Image registry")
- private String imageRegistry;
- @CommandLine.Option(names = {"--image-group"}, description = "Image group", defaultValue = "karavan")
- private String imageGroup;
- @CommandLine.Option(names = {"--image-registry-username"}, description = "Image registry username")
- private String imageRegistryUsername;
- @CommandLine.Option(names = {"--image-registry-password"}, description = "Image registry password")
- private String imageRegistryPassword;
-
- @CommandLine.Option(names = {"--nexus-proxy"}, description = "Deploy nexus proxy")
- private boolean nexusProxy;
-
- @CommandLine.Option(names = { "-h", "--help" }, usageHelp = true, description = "Display help")
- private boolean helpRequested;
-
- @Override
- public Integer call() throws Exception {
- KaravanConfig config = new KaravanConfig (
- version,
- namespace,
- environment,
- runtimes,
- auth,
- nodePort,
- instances,
- baseImage,
- baseBuilderImage,
- isOpenShift,
- new HashMap<>(),
- masterPassword,
- oidcSecret,
- oidcServerUrl,
- oidcFrontendUrl,
- gitRepository,
- gitUsername,
- gitPassword,
- gitBranch,
- gitPullInterval,
- imageRegistry,
- imageGroup,
- imageRegistryUsername,
- imageRegistryPassword,
- nexusProxy
- );
- if (yaml) {
- Files.writeString(Path.of(file), ResourceUtils.generateResources(config));
- } else {
- CommandUtils.installKaravan(config);
- }
- return 0;
- }
-}
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanCommand.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanCommand.java
index 5963ae6f..82d0e3ec 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanCommand.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanCommand.java
@@ -2,9 +2,83 @@ package org.apache.camel.karavan.cli;
import picocli.CommandLine;
-@CommandLine.Command(mixinStandardHelpOptions = true, subcommands = {InstallCommand.class, UpgradeCommand.class})
-public class KaravanCommand {
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.Callable;
+@CommandLine.Command(name = "install",
+ mixinStandardHelpOptions = true,
+ description = "Karavan CLI")
+public class KaravanCommand implements Callable<Integer> {
+
+ @CommandLine.Option(names = {"-v", "--version"}, required = true, description = "Karavan version", defaultValue = "4.0.0-RC2")
+ private String version;
+ @CommandLine.Option(names = {"-n", "--namespace"}, description = "Namespace", defaultValue = Constants.DEFAULT_NAMESPACE)
+ private String namespace;
+ @CommandLine.Option(names = {"-e", "--environment"}, description = "Environment", defaultValue = Constants.DEFAULT_ENVIRONMENT)
+ private String environment;
+ @CommandLine.Option(names = {"-r", "--runtimes"}, description = "Runtimes: quarkus, spring-boot", defaultValue = Constants.DEFAULT_RUNTIMES)
+ private String runtimes;
+ @CommandLine.Option(names = {"--auth"}, description = "Authentication: public, basic, oidc", defaultValue = Constants.DEFAULT_AUTH)
+ private String auth;
+ @CommandLine.Option(names = {"--node-port"}, description = "Node port", defaultValue = "0")
+ private int nodePort;
+ @CommandLine.Option(names = {"--instances"}, description = "Instances. Default: 1", defaultValue = "1")
+ private int instances;
+ @CommandLine.Option(names = {"--base-image"}, description = "Base Image", defaultValue = Constants.KARAVAN_IMAGE)
+ private String baseImage;
+ @CommandLine.Option(names = {"--base-builder-image"}, description = "Base Builder Image", defaultValue = Constants.DEFAULT_BUILD_IMAGE)
+ private String baseBuilderImage;
+ @CommandLine.Option(names = {"--file"}, description = "YAML file name", defaultValue = "karavan.yaml")
+ private String file;
+ @CommandLine.Option(names = {"--yaml"}, description = "Create YAML file. Do not apply")
+ private boolean yaml;
+ @CommandLine.Option(names = {"--openshift"}, description = "Create files for OpenShift")
+ private boolean isOpenShift;
+
+ @CommandLine.Option(names = {"--master-password"}, description = "Master password", defaultValue = "karavan")
+ private String masterPassword;
+ @CommandLine.Option(names = {"--oidc-secret"}, description = "OIDC secret")
+ private String oidcSecret;
+ @CommandLine.Option(names = {"--oidc-server-url"}, description = "OIDC server URL")
+ private String oidcServerUrl;
+ @CommandLine.Option(names = {"--oidc-frontend-url"}, description = "OIDC frontend URL")
+ private String oidcFrontendUrl;
+ @CommandLine.Option(names = {"--git-repository"}, description = "Git repository")
+ private String gitRepository;
+ @CommandLine.Option(names = {"--git-username"}, description = "Git username")
+ private String gitUsername;
+ @CommandLine.Option(names = {"--git-password"}, description = "Git password")
+ private String gitPassword;
+ @CommandLine.Option(names = {"--git-branch"}, description = "Git branch", defaultValue = "main")
+ private String gitBranch;
+ @CommandLine.Option(names = {"--git-pull"}, description = "Git pull interval. Default: off", defaultValue = "off")
+ private String gitPullInterval;
+ @CommandLine.Option(names = {"--image-registry"}, description = "Image registry")
+ private String imageRegistry;
+ @CommandLine.Option(names = {"--image-group"}, description = "Image group", defaultValue = "karavan")
+ private String imageGroup;
+ @CommandLine.Option(names = {"--image-registry-username"}, description = "Image registry username")
+ private String imageRegistryUsername;
+ @CommandLine.Option(names = {"--image-registry-password"}, description = "Image registry password")
+ private String imageRegistryPassword;
+
+ @CommandLine.Option(names = {"--infinispan-image"}, description = "Infinispan Image", defaultValue = Constants.INFINISPAN_IMAGE)
+ private String infinispanImage;
+ @CommandLine.Option(names = {"--infinispan-username"}, description = "Infinispan Username", defaultValue = Constants.INFINISPAN_USERNAME)
+ private String infinispanUsername;
+ @CommandLine.Option(names = {"--infinispan-password"}, description = "Infinispan Password", defaultValue = Constants.INFINISPAN_PASSWORD)
+ private String infinispanPassword;
+
+ @CommandLine.Option(names = {"--nexus-proxy"}, description = "Deploy nexus proxy")
+ private boolean nexusProxy;
+
+ @CommandLine.Option(names = { "-h", "--help" }, usageHelp = true, description = "Display help")
+ private boolean helpRequested;
+
+ private Map<String,String> labels;
public static void main(String... args) {
CommandLine commandLine = new CommandLine(new KaravanCommand());
@@ -16,4 +90,283 @@ public class KaravanCommand {
int exitCode = commandLine.execute(args);
System.exit(exitCode);
}
+
+ @Override
+ public Integer call() throws Exception {
+ if (yaml) {
+ Files.writeString(Path.of(file), ResourceUtils.generateResources(this));
+ } else {
+ CommandUtils.installKaravan(this);
+ }
+ return 0;
+ }
+
+ public boolean gitConfigured() {
+ return gitRepository != null
+ && gitUsername != null
+ && gitPassword != null
+ && gitBranch != null;
+ }
+
+ public boolean oidcConfigured() {
+ return oidcSecret != null
+ && oidcServerUrl != null
+ && oidcFrontendUrl != null;
+ }
+
+ public boolean isAuthOidc() {
+ return Objects.equals(this.auth, "oidc");
+ }
+
+ public boolean isAuthBasic() {
+ return Objects.equals(this.auth, "basic");
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public String getNamespace() {
+ return namespace;
+ }
+
+ public void setNamespace(String namespace) {
+ this.namespace = namespace;
+ }
+
+ public String getEnvironment() {
+ return environment;
+ }
+
+ public void setEnvironment(String environment) {
+ this.environment = environment;
+ }
+
+ public String getRuntimes() {
+ return runtimes;
+ }
+
+ public void setRuntimes(String runtimes) {
+ this.runtimes = runtimes;
+ }
+
+ public String getAuth() {
+ return auth;
+ }
+
+ public void setAuth(String auth) {
+ this.auth = auth;
+ }
+
+ public int getNodePort() {
+ return nodePort;
+ }
+
+ public void setNodePort(int nodePort) {
+ this.nodePort = nodePort;
+ }
+
+ public int getInstances() {
+ return instances;
+ }
+
+ public void setInstances(int instances) {
+ this.instances = instances;
+ }
+
+ public String getBaseImage() {
+ return baseImage;
+ }
+
+ public void setBaseImage(String baseImage) {
+ this.baseImage = baseImage;
+ }
+
+ public String getBaseBuilderImage() {
+ return baseBuilderImage;
+ }
+
+ public void setBaseBuilderImage(String baseBuilderImage) {
+ this.baseBuilderImage = baseBuilderImage;
+ }
+
+ public String getFile() {
+ return file;
+ }
+
+ public void setFile(String file) {
+ this.file = file;
+ }
+
+ public boolean isYaml() {
+ return yaml;
+ }
+
+ public void setYaml(boolean yaml) {
+ this.yaml = yaml;
+ }
+
+ public boolean isOpenShift() {
+ return isOpenShift;
+ }
+
+ public void setOpenShift(boolean openShift) {
+ isOpenShift = openShift;
+ }
+
+ public String getMasterPassword() {
+ return masterPassword;
+ }
+
+ public void setMasterPassword(String masterPassword) {
+ this.masterPassword = masterPassword;
+ }
+
+ public String getOidcSecret() {
+ return oidcSecret;
+ }
+
+ public void setOidcSecret(String oidcSecret) {
+ this.oidcSecret = oidcSecret;
+ }
+
+ public String getOidcServerUrl() {
+ return oidcServerUrl;
+ }
+
+ public void setOidcServerUrl(String oidcServerUrl) {
+ this.oidcServerUrl = oidcServerUrl;
+ }
+
+ public String getOidcFrontendUrl() {
+ return oidcFrontendUrl;
+ }
+
+ public void setOidcFrontendUrl(String oidcFrontendUrl) {
+ this.oidcFrontendUrl = oidcFrontendUrl;
+ }
+
+ public String getGitRepository() {
+ return gitRepository;
+ }
+
+ public void setGitRepository(String gitRepository) {
+ this.gitRepository = gitRepository;
+ }
+
+ public String getGitUsername() {
+ return gitUsername;
+ }
+
+ public void setGitUsername(String gitUsername) {
+ this.gitUsername = gitUsername;
+ }
+
+ public String getGitPassword() {
+ return gitPassword;
+ }
+
+ public void setGitPassword(String gitPassword) {
+ this.gitPassword = gitPassword;
+ }
+
+ public String getGitBranch() {
+ return gitBranch;
+ }
+
+ public void setGitBranch(String gitBranch) {
+ this.gitBranch = gitBranch;
+ }
+
+ public String getGitPullInterval() {
+ return gitPullInterval;
+ }
+
+ public void setGitPullInterval(String gitPullInterval) {
+ this.gitPullInterval = gitPullInterval;
+ }
+
+ public String getImageRegistry() {
+ return imageRegistry;
+ }
+
+ public void setImageRegistry(String imageRegistry) {
+ this.imageRegistry = imageRegistry;
+ }
+
+ public String getImageGroup() {
+ return imageGroup;
+ }
+
+ public void setImageGroup(String imageGroup) {
+ this.imageGroup = imageGroup;
+ }
+
+ public String getImageRegistryUsername() {
+ return imageRegistryUsername;
+ }
+
+ public void setImageRegistryUsername(String imageRegistryUsername) {
+ this.imageRegistryUsername = imageRegistryUsername;
+ }
+
+ public String getImageRegistryPassword() {
+ return imageRegistryPassword;
+ }
+
+ public void setImageRegistryPassword(String imageRegistryPassword) {
+ this.imageRegistryPassword = imageRegistryPassword;
+ }
+
+ public String getInfinispanImage() {
+ return infinispanImage;
+ }
+
+ public void setInfinispanImage(String infinispanImage) {
+ this.infinispanImage = infinispanImage;
+ }
+
+ public String getInfinispanUsername() {
+ return infinispanUsername;
+ }
+
+ public void setInfinispanUsername(String infinispanUsername) {
+ this.infinispanUsername = infinispanUsername;
+ }
+
+ public String getInfinispanPassword() {
+ return infinispanPassword;
+ }
+
+ public void setInfinispanPassword(String infinispanPassword) {
+ this.infinispanPassword = infinispanPassword;
+ }
+
+ public boolean isNexusProxy() {
+ return nexusProxy;
+ }
+
+ public void setNexusProxy(boolean nexusProxy) {
+ this.nexusProxy = nexusProxy;
+ }
+
+ public boolean isHelpRequested() {
+ return helpRequested;
+ }
+
+ public void setHelpRequested(boolean helpRequested) {
+ this.helpRequested = helpRequested;
+ }
+
+ public Map<String, String> getLabels() {
+ return labels;
+ }
+
+ public void setLabels(Map<String, String> labels) {
+ this.labels = labels;
+ }
}
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanConfig.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanConfig.java
deleted file mode 100644
index 476acf1e..00000000
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanConfig.java
+++ /dev/null
@@ -1,304 +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.cli;
-
-import java.util.Map;
-import java.util.Objects;
-
-public class KaravanConfig {
-
- private String version;
- private String namespace;
- private String environment;
- private String runtimes;
- private String auth;
- private int nodePort;
- private int instances;
- private String baseImage;
- private String baseBuilderImage;
- private boolean isOpenShift;
- private Map<String,String> labels;
-
- private String masterPassword;
- private String oidcSecret;
- private String oidcServerUrl;
- private String oidcFrontendUrl;
- private String gitRepository;
- private String gitUsername;
- private String gitPassword;
- private String gitBranch;
- private String gitPullInterval;
- private String imageRegistry;
- private String imageGroup;
- private String imageRegistryUsername;
- private String imageRegistryPassword;
- private boolean nexusProxy;
-
- public KaravanConfig(String version, String namespace, String environment, String runtimes, String auth,
- int nodePort, int instances, String baseImage, String baseBuilderImage, boolean isOpenShift,
- Map<String, String> labels, String masterPassword, String oidcSecret, String oidcServerUrl,
- String oidcFrontendUrl, String gitRepository, String gitUsername, String gitPassword,
- String gitBranch, String gitPullInterval, String imageRegistry, String imageGroup,
- String imageRegistryUsername, String imageRegistryPassword, boolean nexusProxy) {
- this.version = version;
- this.namespace = namespace;
- this.environment = environment;
- this.runtimes = runtimes;
- this.auth = auth;
- this.nodePort = nodePort;
- this.instances = instances;
- this.baseImage = baseImage;
- this.baseBuilderImage = baseBuilderImage;
- this.isOpenShift = isOpenShift;
- this.labels = labels;
- this.masterPassword = masterPassword;
- this.oidcSecret = oidcSecret;
- this.oidcServerUrl = oidcServerUrl;
- this.oidcFrontendUrl = oidcFrontendUrl;
- this.gitRepository = gitRepository;
- this.gitUsername = gitUsername;
- this.gitPassword = gitPassword;
- this.gitBranch = gitBranch;
- this.gitPullInterval = gitPullInterval;
- this.imageRegistry = imageRegistry;
- this.imageGroup = imageGroup;
- this.imageRegistryUsername = imageRegistryUsername;
- this.imageRegistryPassword = imageRegistryPassword;
- this.nexusProxy = nexusProxy;
- }
-
- public boolean gitConfigured() {
- return gitRepository != null
- && gitUsername != null
- && gitPassword != null
- && gitBranch != null;
- }
-
- public boolean oidcConfigured() {
- return oidcSecret != null
- && oidcServerUrl != null
- && oidcFrontendUrl != null;
- }
-
- public boolean isAuthOidc() {
- return Objects.equals(this.auth, "oidc");
- }
-
- public boolean isAuthBasic() {
- return Objects.equals(this.auth, "basic");
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getNamespace() {
- return namespace;
- }
-
- public void setNamespace(String namespace) {
- this.namespace = namespace;
- }
-
- public String getEnvironment() {
- return environment;
- }
-
- public void setEnvironment(String environment) {
- this.environment = environment;
- }
-
- public String getRuntimes() {
- return runtimes;
- }
-
- public void setRuntimes(String runtimes) {
- this.runtimes = runtimes;
- }
-
- public String getAuth() {
- return auth;
- }
-
- public void setAuth(String auth) {
- this.auth = auth;
- }
-
- public int getNodePort() {
- return nodePort;
- }
-
- public void setNodePort(int nodePort) {
- this.nodePort = nodePort;
- }
-
- public String getGitPullInterval() {
- return gitPullInterval;
- }
-
- public void setGitPullInterval(String gitPullInterval) {
- this.gitPullInterval = gitPullInterval;
- }
-
- public int getInstances() {
- return instances;
- }
-
- public void setInstances(int instances) {
- this.instances = instances;
- }
-
- public String getImageRegistry() {
- return imageRegistry;
- }
-
- public void setImageRegistry(String imageRegistry) {
- this.imageRegistry = imageRegistry;
- }
-
- public String getBaseImage() {
- return baseImage;
- }
-
- public void setBaseImage(String baseImage) {
- this.baseImage = baseImage;
- }
-
- public String getBaseBuilderImage() {
- return baseBuilderImage;
- }
-
- public void setBaseBuilderImage(String baseBuilderImage) {
- this.baseBuilderImage = baseBuilderImage;
- }
-
- public boolean isOpenShift() {
- return isOpenShift;
- }
-
- public void setOpenShift(boolean openShift) {
- isOpenShift = openShift;
- }
-
- public Map<String, String> getLabels() {
- return labels;
- }
-
- public void setLabels(Map<String, String> labels) {
- this.labels = labels;
- }
-
- public String getMasterPassword() {
- return masterPassword;
- }
-
- public void setMasterPassword(String masterPassword) {
- this.masterPassword = masterPassword;
- }
-
- public String getOidcSecret() {
- return oidcSecret;
- }
-
- public void setOidcSecret(String oidcSecret) {
- this.oidcSecret = oidcSecret;
- }
-
- public String getOidcServerUrl() {
- return oidcServerUrl;
- }
-
- public void setOidcServerUrl(String oidcServerUrl) {
- this.oidcServerUrl = oidcServerUrl;
- }
-
- public String getOidcFrontendUrl() {
- return oidcFrontendUrl;
- }
-
- public void setOidcFrontendUrl(String oidcFrontendUrl) {
- this.oidcFrontendUrl = oidcFrontendUrl;
- }
-
- public String getGitRepository() {
- return gitRepository;
- }
-
- public void setGitRepository(String gitRepository) {
- this.gitRepository = gitRepository;
- }
-
- public String getGitUsername() {
- return gitUsername;
- }
-
- public void setGitUsername(String gitUsername) {
- this.gitUsername = gitUsername;
- }
-
- public String getGitPassword() {
- return gitPassword;
- }
-
- public void setGitPassword(String gitPassword) {
- this.gitPassword = gitPassword;
- }
-
- public String getGitBranch() {
- return gitBranch;
- }
-
- public void setGitBranch(String gitBranch) {
- this.gitBranch = gitBranch;
- }
-
- public String getImageRegistryUsername() {
- return imageRegistryUsername;
- }
-
- public void setImageRegistryUsername(String imageRegistryUsername) {
- this.imageRegistryUsername = imageRegistryUsername;
- }
-
- public String getImageRegistryPassword() {
- return imageRegistryPassword;
- }
-
- public void setImageRegistryPassword(String imageRegistryPassword) {
- this.imageRegistryPassword = imageRegistryPassword;
- }
-
- public String getImageGroup() {
- return imageGroup;
- }
-
- public void setImageGroup(String imageGroup) {
- this.imageGroup = imageGroup;
- }
-
- public boolean isNexusProxy() {
- return nexusProxy;
- }
-
- public void setNexusProxy(boolean nexusProxy) {
- this.nexusProxy = nexusProxy;
- }
-}
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/ResourceUtils.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/ResourceUtils.java
index d5ddd333..b8352b25 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/ResourceUtils.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/ResourceUtils.java
@@ -23,11 +23,11 @@ import java.util.*;
public class ResourceUtils {
- public static String generateResources(KaravanConfig config) {
+ public static String generateResources(KaravanCommand config) {
return String.join("", generateResourcesMap(config).values());
}
- public static Map<String, String> generateResourcesMap(KaravanConfig config) {
+ public static Map<String, String> generateResourcesMap(KaravanCommand config) {
Map<String, String> result = new HashMap<>();
result.put("sa-karavan", toYAML(KaravanServiceAccount.getServiceAccount(config)));
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/UpgradeCommand.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/UpgradeCommand.java
deleted file mode 100644
index 8a05a100..00000000
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/UpgradeCommand.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.apache.camel.karavan.cli;
-
-import picocli.CommandLine;
-
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.concurrent.Callable;
-
-@CommandLine.Command(name = "upgrade",
- mixinStandardHelpOptions = true,
- description = "Upgrade Karavan")
-public class UpgradeCommand implements Callable<Integer> {
-
- @Override
- public Integer call() throws Exception {
- System.out.println("Not implemented yet");
- return 0;
- }
-}
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanConfigMap.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanConfigMap.java
index 2fbc1316..36f20c21 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanConfigMap.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanConfigMap.java
@@ -19,7 +19,7 @@ package org.apache.camel.karavan.cli.resources;
import io.fabric8.kubernetes.api.model.ConfigMap;
import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
import org.apache.camel.karavan.cli.Constants;
-import org.apache.camel.karavan.cli.KaravanConfig;
+import org.apache.camel.karavan.cli.KaravanCommand;
import org.apache.camel.karavan.cli.ResourceUtils;
import java.io.BufferedReader;
@@ -32,7 +32,7 @@ public class KaravanConfigMap {
private static final String MAVEN_URL = "<url>https://repo.maven.apache.org/maven2/</url>";
- public static ConfigMap getConfigMap(KaravanConfig config) {
+ public static ConfigMap getConfigMap(KaravanCommand config) {
String xml = getXml(config);
@@ -46,7 +46,7 @@ public class KaravanConfigMap {
.build();
}
- private static String getXml(KaravanConfig config) {
+ private static String getXml(KaravanCommand config) {
try {
InputStream inputStream = KaravanConfigMap.class.getResourceAsStream("/settings.xml");
return new BufferedReader(new InputStreamReader(inputStream))
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanDeployment.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanDeployment.java
index 8c3529a1..ccf6cd41 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanDeployment.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanDeployment.java
@@ -29,7 +29,7 @@ import io.fabric8.kubernetes.api.model.VolumeMountBuilder;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder;
import org.apache.camel.karavan.cli.Constants;
-import org.apache.camel.karavan.cli.KaravanConfig;
+import org.apache.camel.karavan.cli.KaravanCommand;
import java.util.ArrayList;
import java.util.List;
@@ -38,7 +38,7 @@ import java.util.Objects;
public class KaravanDeployment {
- public static Deployment getDeployment (KaravanConfig config) {
+ public static Deployment getDeployment (KaravanCommand config) {
String baseImage = config.getBaseImage();
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanPvc.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanPvc.java
index 889cae15..b22bf7b9 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanPvc.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanPvc.java
@@ -21,14 +21,14 @@ import io.fabric8.kubernetes.api.model.PersistentVolumeClaimBuilder;
import io.fabric8.kubernetes.api.model.Quantity;
import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder;
import org.apache.camel.karavan.cli.Constants;
-import org.apache.camel.karavan.cli.KaravanConfig;
+import org.apache.camel.karavan.cli.KaravanCommand;
import org.apache.camel.karavan.cli.ResourceUtils;
import java.util.Map;
public class KaravanPvc {
- public static PersistentVolumeClaim getPvcData (KaravanConfig config) {
+ public static PersistentVolumeClaim getPvcData (KaravanCommand config) {
return new PersistentVolumeClaimBuilder()
.withNewMetadata()
.withName(Constants.PVC_DATA)
@@ -43,7 +43,7 @@ public class KaravanPvc {
.build();
}
- public static PersistentVolumeClaim getPvcM2Cache(KaravanConfig config) {
+ public static PersistentVolumeClaim getPvcM2Cache(KaravanCommand config) {
return new PersistentVolumeClaimBuilder()
.withNewMetadata()
.withName(Constants.PVC_M2_CACHE)
@@ -58,7 +58,7 @@ public class KaravanPvc {
.build();
}
- public static PersistentVolumeClaim getPvcJbangCache(KaravanConfig config) {
+ public static PersistentVolumeClaim getPvcJbangCache(KaravanCommand config) {
return new PersistentVolumeClaimBuilder()
.withNewMetadata()
.withName(Constants.PVC_JBANG_CACHE)
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanRole.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanRole.java
index e93b72eb..f2d88d51 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanRole.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanRole.java
@@ -18,11 +18,11 @@ package org.apache.camel.karavan.cli.resources;
import io.fabric8.kubernetes.api.model.rbac.*;
import org.apache.camel.karavan.cli.Constants;
-import org.apache.camel.karavan.cli.KaravanConfig;
+import org.apache.camel.karavan.cli.KaravanCommand;
public class KaravanRole {
- public static Role getRole(KaravanConfig config) {
+ public static Role getRole(KaravanCommand config) {
return new RoleBuilder()
.withNewMetadata()
.withName(Constants.ROLE_KARAVAN)
@@ -39,7 +39,7 @@ public class KaravanRole {
.build();
}
- public static RoleBinding getRoleBinding(KaravanConfig config) {
+ public static RoleBinding getRoleBinding(KaravanCommand config) {
return new RoleBindingBuilder()
.withNewMetadata()
.withName(Constants.ROLEBINDING_KARAVAN)
@@ -50,7 +50,7 @@ public class KaravanRole {
.build();
}
- public static RoleBinding getRoleBindingView(KaravanConfig config) {
+ public static RoleBinding getRoleBindingView(KaravanCommand config) {
return new RoleBindingBuilder()
.withNewMetadata()
.withName(Constants.ROLEBINDING_KARAVAN_VIEW)
@@ -63,7 +63,7 @@ public class KaravanRole {
// Pipeline roles
- public static Role getRoleDeployer(KaravanConfig config) {
+ public static Role getRoleDeployer(KaravanCommand config) {
return new RoleBuilder()
.withNewMetadata()
.withName(Constants.ROLE_PIPELINE_DEPLOYER)
@@ -78,7 +78,7 @@ public class KaravanRole {
.build();
}
- public static RoleBinding getRoleBindingPipeline(KaravanConfig config) {
+ public static RoleBinding getRoleBindingPipeline(KaravanCommand config) {
return new RoleBindingBuilder()
.withNewMetadata()
.withName(Constants.ROLEBINDING_PIPELINE_DEPLOYER)
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanSecret.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanSecret.java
index aba82ead..5544f456 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanSecret.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanSecret.java
@@ -18,7 +18,7 @@ package org.apache.camel.karavan.cli.resources;
import io.fabric8.kubernetes.api.model.*;
import org.apache.camel.karavan.cli.Constants;
-import org.apache.camel.karavan.cli.KaravanConfig;
+import org.apache.camel.karavan.cli.KaravanCommand;
import org.apache.camel.karavan.cli.ResourceUtils;
import java.util.HashMap;
@@ -26,7 +26,7 @@ import java.util.Map;
public class KaravanSecret {
- public static Secret getSecret(KaravanConfig config) {
+ public static Secret getSecret(KaravanCommand config) {
Map<String, String> secretData = new HashMap<>();
secretData.put("master-password", (config.isAuthBasic() ? config.getMasterPassword() : "karavan"));
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanService.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanService.java
index 4d012458..eb14741f 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanService.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanService.java
@@ -25,14 +25,14 @@ import io.fabric8.openshift.api.model.RouteBuilder;
import io.fabric8.openshift.api.model.RoutePort;
import io.fabric8.openshift.api.model.RouteTargetReferenceBuilder;
import org.apache.camel.karavan.cli.Constants;
-import org.apache.camel.karavan.cli.KaravanConfig;
+import org.apache.camel.karavan.cli.KaravanCommand;
import org.apache.camel.karavan.cli.ResourceUtils;
import java.util.Map;
public class KaravanService {
- public static Service getService(KaravanConfig config) {
+ public static Service getService(KaravanCommand config) {
ServicePortBuilder portBuilder = new ServicePortBuilder()
.withName("http").withPort(80).withProtocol("TCP").withTargetPort(new IntOrString(8080));
@@ -54,7 +54,7 @@ public class KaravanService {
.build();
}
- public static Route getRoute(KaravanConfig config) {
+ public static Route getRoute(KaravanCommand config) {
return new RouteBuilder()
.withNewMetadata()
.withName(Constants.NAME)
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanServiceAccount.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanServiceAccount.java
index 1c07d93b..e1642041 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanServiceAccount.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanServiceAccount.java
@@ -19,14 +19,14 @@ package org.apache.camel.karavan.cli.resources;
import io.fabric8.kubernetes.api.model.ServiceAccount;
import io.fabric8.kubernetes.api.model.ServiceAccountBuilder;
import org.apache.camel.karavan.cli.Constants;
-import org.apache.camel.karavan.cli.KaravanConfig;
+import org.apache.camel.karavan.cli.KaravanCommand;
import org.apache.camel.karavan.cli.ResourceUtils;
import java.util.Map;
public class KaravanServiceAccount {
- public static ServiceAccount getServiceAccount(KaravanConfig config) {
+ public static ServiceAccount getServiceAccount(KaravanCommand config) {
return new ServiceAccountBuilder()
.withNewMetadata()
.withName(Constants.SERVICEACCOUNT_KARAVAN)
@@ -36,7 +36,7 @@ public class KaravanServiceAccount {
.build();
}
- public static ServiceAccount getServiceAccountPipeline(KaravanConfig config) {
+ public static ServiceAccount getServiceAccountPipeline(KaravanCommand config) {
return new ServiceAccountBuilder()
.withNewMetadata()
.withName(Constants.SERVICEACCOUNT_PIPELINE)
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanTekton.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanTekton.java
index 66e8caf5..88087892 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanTekton.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanTekton.java
@@ -20,7 +20,7 @@ import io.fabric8.kubernetes.api.model.EnvVarBuilder;
import io.fabric8.kubernetes.api.model.EnvVarSourceBuilder;
import io.fabric8.tekton.pipeline.v1beta1.*;
import org.apache.camel.karavan.cli.Constants;
-import org.apache.camel.karavan.cli.KaravanConfig;
+import org.apache.camel.karavan.cli.KaravanCommand;
import org.apache.camel.karavan.cli.ResourceUtils;
import java.io.BufferedReader;
@@ -31,7 +31,7 @@ import java.util.stream.Collectors;
public class KaravanTekton {
- public static Task getTask(KaravanConfig config, String runtime) {
+ public static Task getTask(KaravanCommand config, String runtime) {
String taskName = Constants.TASK_DEV + runtime;
String buildImage = config.getBaseBuilderImage();
String script = getScript(config, runtime);
@@ -78,7 +78,7 @@ public class KaravanTekton {
.build();
}
- private static String getScript(KaravanConfig config, String runtime) {
+ private static String getScript(KaravanCommand config, String runtime) {
try {
InputStream inputStream = config.isOpenShift()
? KaravanTekton.class.getResourceAsStream("/" + runtime + "-builder-script-openshift.sh")
@@ -99,7 +99,7 @@ public class KaravanTekton {
}
}
- public static Pipeline getPipeline(KaravanConfig config, String runtime) {
+ public static Pipeline getPipeline(KaravanCommand config, String runtime) {
String taskName = Constants.TASK_DEV + runtime;
String pipelineName = Constants.PIPELINE_DEV + runtime;
diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/Nexus.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/Nexus.java
index cb4aaecb..45c18fc4 100644
--- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/Nexus.java
+++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/Nexus.java
@@ -20,7 +20,7 @@ import io.fabric8.kubernetes.api.model.*;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder;
import org.apache.camel.karavan.cli.Constants;
-import org.apache.camel.karavan.cli.KaravanConfig;
+import org.apache.camel.karavan.cli.KaravanCommand;
import java.util.Map;
@@ -31,7 +31,7 @@ public class Nexus {
public static final String NEXUS_DATA = "nexus-data";
public static final int NEXUS_PORT = 8081;
- public static Service getService(KaravanConfig config) {
+ public static Service getService(KaravanCommand config) {
ServicePortBuilder portBuilder = new ServicePortBuilder()
.withPort(80)
@@ -50,7 +50,7 @@ public class Nexus {
.build();
}
- public static Deployment getDeployment (KaravanConfig config) {
+ public static Deployment getDeployment (KaravanCommand config) {
return new DeploymentBuilder()
.withNewMetadata()
.withName(NEXUS_NAME)
diff --git a/karavan-web/karavan-cli/src/main/resources/infinispan-secrets.yaml b/karavan-web/karavan-cli/src/main/resources/infinispan-secrets.yaml
deleted file mode 100644
index e2c15bac..00000000
--- a/karavan-web/karavan-cli/src/main/resources/infinispan-secrets.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-apiVersion: v1
-kind: Secret
-metadata:
- name: karavan-infinispan
-type: Opaque
-stringData:
- username: monitor
- password: password
- identities-batch: |-
- user create admin -p admin -g admin
- user create monitor -p password --users-file metrics-users.properties --groups-file metrics-groups.properties
diff --git a/karavan-web/karavan-cli/src/main/resources/infinispan-values.yaml b/karavan-web/karavan-cli/src/main/resources/infinispan-values.yaml
deleted file mode 100644
index a59f9635..00000000
--- a/karavan-web/karavan-cli/src/main/resources/infinispan-values.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-images:
- server: quay.io/infinispan/server:latest
- initContainer: registry.access.redhat.com/ubi8-micro
-deploy:
- security:
- authentication: true
- secretName: karavan-infinispan
- replicas: 1
- container:
- storage:
- ephemeral: true
- expose:
- type: NodePort
- nodePort: 32666
\ No newline at end of file
diff --git a/karavan-web/karavan-cli/src/main/resources/infinispan.yaml b/karavan-web/karavan-cli/src/main/resources/infinispan.yaml
new file mode 100644
index 00000000..42fff892
--- /dev/null
+++ b/karavan-web/karavan-cli/src/main/resources/infinispan.yaml
@@ -0,0 +1,414 @@
+---
+# Source: infinispan/templates/secret.yaml
+apiVersion: v1
+kind: Secret
+metadata:
+ name: infinispan-generated-secret
+ labels:
+ app: infinispan-secret-identities
+ clusterName: infinispan
+ helm.sh/chart: infinispan-0.3.1
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ app.kubernetes.io/version: "14.0"
+ app.kubernetes.io/managed-by: Helm
+ annotations:
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ "helm.sh/resource-policy": keep
+type: Opaque
+stringData:
+ username: monitor
+ password: $INFINISPAN_PASSWORD
+ identities-batch: |-
+ user create admin -p $INFINISPAN_PASSWORD
+ user create monitor -p $INFINISPAN_PASSWORD --users-file metrics-users.properties --groups-file metrics-groups.properties
+---
+# Source: infinispan/templates/configmap.yaml
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: infinispan-configuration
+ annotations:
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ labels:
+ app: infinispan-configmap-configuration
+ clusterName: infinispan
+ helm.sh/chart: infinispan-0.3.1
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ app.kubernetes.io/version: "14.0"
+ app.kubernetes.io/managed-by: Helm
+data:
+ infinispan.yml: |-
+ infinispan:
+ cacheContainer:
+ name: default
+ security:
+ authorization: {}
+ transport:
+ cluster: ${infinispan.cluster.name:cluster}
+ node-name: ${infinispan.node.name:}
+ stack: kubernetes
+ server:
+ endpoints:
+ - connectors:
+ hotrod:
+ hotrodConnector: null
+ rest:
+ restConnector: null
+ securityRealm: default
+ socketBinding: default
+ - connectors:
+ rest:
+ restConnector:
+ authentication:
+ mechanisms: BASIC
+ securityRealm: metrics
+ socketBinding: metrics
+ interfaces:
+ - inetAddress:
+ value: ${infinispan.bind.address:127.0.0.1}
+ name: public
+ security:
+ credentialStores:
+ - clearTextCredential:
+ clearText: secret
+ name: credentials
+ path: credentials.pfx
+ securityRealms:
+ - name: default
+ propertiesRealm:
+ groupProperties:
+ path: groups.properties
+ groupsAttribute: Roles
+ userProperties:
+ path: users.properties
+ - name: metrics
+ propertiesRealm:
+ groupProperties:
+ path: metrics-groups.properties
+ relativeTo: infinispan.server.config.path
+ groupsAttribute: Roles
+ userProperties:
+ path: metrics-users.properties
+ relativeTo: infinispan.server.config.path
+ socketBindings:
+ defaultInterface: public
+ portOffset: ${infinispan.socket.binding.port-offset:0}
+ socketBinding:
+ - name: default
+ port: 11222
+ - name: metrics
+ port: 11223
+ log4j2.xml: |-
+ <Configuration name="InfinispanServerConfig" monitorInterval="60" shutdownHook="disable">
+ <Properties>
+ <Property name="path">${sys:infinispan.server.log.path}</Property>
+ <Property name="accessLogPattern">%X{address} %X{user} [%d{dd/MMM/yyyy:HH:mm:ss Z}] "%X{method} %m %X{protocol}" %X{status} %X{requestSize} %X{responseSize} %X{duration}%n</Property>
+ </Properties>
+ <Appenders>
+ <!-- Colored output on the console -->
+ <Console name="STDOUT">
+ <PatternLayout pattern="%highlight{%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%t) [%c] %m%throwable}{INFO=normal, DEBUG=normal, TRACE=normal}%n"/>
+ </Console>
+
+ <!-- Rolling file -->
+ <RollingFile name="FILE" createOnDemand="true"
+ fileName="${path}/server.log"
+ filePattern="${path}/server.log.%d{yyyy-MM-dd}-%i">
+ <Policies>
+ <OnStartupTriggeringPolicy />
+ <SizeBasedTriggeringPolicy size="100 MB" />
+ <TimeBasedTriggeringPolicy />
+ </Policies>
+ <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%t) [%c] %m%throwable%n"/>
+ </RollingFile>
+
+ <!-- Rolling file -->
+ <RollingFile name="AUDIT-FILE" createOnDemand="true"
+ fileName="${path}/audit.log"
+ filePattern="${path}/audit.log.%d{yyyy-MM-dd}-%i">
+ <Policies>
+ <OnStartupTriggeringPolicy />
+ <SizeBasedTriggeringPolicy size="100 MB" />
+ <TimeBasedTriggeringPolicy />
+ </Policies>
+ <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %m%n"/>
+ </RollingFile>
+
+ <!-- Rolling JSON file, disabled by default -->
+ <RollingFile name="JSON-FILE" createOnDemand="true"
+ fileName="${path}/server.log.json"
+ filePattern="${path}/server.log.json.%d{yyyy-MM-dd}-%i">
+ <Policies>
+ <OnStartupTriggeringPolicy />
+ <SizeBasedTriggeringPolicy size="100 MB" />
+ <TimeBasedTriggeringPolicy />
+ </Policies>
+ <JsonLayout compact="true" eventEol="true" stacktraceAsString="true">
+ <KeyValuePair key="time" value="$${date:yyyy-MM-dd'T'HH:mm:ss.SSSZ}" />
+ </JsonLayout>
+ </RollingFile>
+
+ <!-- Rolling HotRod access log, disabled by default -->
+ <RollingFile name="HR-ACCESS-FILE" createOnDemand="true"
+ fileName="${path}/hotrod-access.log"
+ filePattern="${path}/hotrod-access.log.%i">
+ <Policies>
+ <SizeBasedTriggeringPolicy size="100 MB" />
+ </Policies>
+ <PatternLayout pattern="${accessLogPattern}"/>
+ </RollingFile>
+ <!-- Rolling REST access log, disabled by default -->
+ <RollingFile name="REST-ACCESS-FILE" createOnDemand="true"
+ fileName="${path}/rest-access.log"
+ filePattern="${path}/rest-access.log.%i">
+ <Policies>
+ <SizeBasedTriggeringPolicy size="100 MB" />
+ </Policies>
+ <PatternLayout pattern="${accessLogPattern}"/>
+ </RollingFile>
+ </Appenders>
+
+ <Loggers>
+ <Root level="INFO">
+ <AppenderRef ref="STDOUT"/>
+
+ <!-- Uncomment just one of the two lines bellow to use alternatively JSON logging or plain-text logging to file-->
+ <AppenderRef ref="FILE"/>
+ <!-- <AppenderRef ref="JSON-FILE"/>-->
+ </Root>
+
+ <!-- Set to INFO to enable audit logging -->
+ <Logger name="org.infinispan.AUDIT" additivity="false" level="ERROR">
+ <AppenderRef ref="AUDIT-FILE"/>
+ </Logger>
+
+ <!-- Set to TRACE to enable access logging for Hot Rod requests -->
+ <Logger name="org.infinispan.HOTROD_ACCESS_LOG" additivity="false" level="INFO">
+ <AppenderRef ref="HR-ACCESS-FILE"/>
+ </Logger>
+
+ <!-- Set to TRACE to enable access logging for REST requests -->
+ <Logger name="org.infinispan.REST_ACCESS_LOG" additivity="false" level="INFO">
+ <AppenderRef ref="REST-ACCESS-FILE"/>
+ </Logger>
+ <Logger name="com.arjuna" level="WARN" />
+ <Logger name="io.netty.handler.ssl.ApplicationProtocolNegotiationHandler" level="ERROR" />
+
+ </Loggers>
+ </Configuration>
+---
+# Source: infinispan/templates/metrics-service.yaml
+apiVersion: v1
+kind: Service
+metadata:
+ name: infinispan-metrics
+ annotations:
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ labels:
+ app: infinispan-service-metrics
+ clusterName: infinispan
+ helm.sh/chart: infinispan-0.3.1
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ app.kubernetes.io/version: "14.0"
+ app.kubernetes.io/managed-by: Helm
+
+spec:
+ type: ClusterIP
+ clusterIP: None
+ ports:
+ - port: 11223
+ protocol: TCP
+ name: infinispan-met
+ selector:
+ clusterName: infinispan
+ app: infinispan-pod
+---
+# Source: infinispan/templates/ping-service.yaml
+apiVersion: v1
+kind: Service
+metadata:
+ name: infinispan-ping
+ annotations:
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ labels:
+ app: infinispan-service-ping
+ clusterName: infinispan
+ helm.sh/chart: infinispan-0.3.1
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ app.kubernetes.io/version: "14.0"
+ app.kubernetes.io/managed-by: Helm
+
+spec:
+ publishNotReadyAddresses: true
+ type: ClusterIP
+ clusterIP: None
+ ports:
+ - port: 8888
+ protocol: TCP
+ name: infinispan
+ selector:
+ clusterName: infinispan
+ app: infinispan-pod
+---
+# Source: infinispan/templates/service.yaml
+apiVersion: v1
+kind: Service
+metadata:
+ name: infinispan
+ annotations:
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ labels:
+ app: infinispan-service
+ clusterName: infinispan
+ helm.sh/chart: infinispan-0.3.1
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ app.kubernetes.io/version: "14.0"
+ app.kubernetes.io/managed-by: Helm
+
+spec:
+ type: ClusterIP
+ ports:
+ - port: 11222
+ protocol: TCP
+ name: infinispan
+ selector:
+ clusterName: infinispan
+ app: infinispan-pod
+---
+# Source: infinispan/templates/statefulset.yaml
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ name: infinispan
+ labels:
+ clusterName: infinispan
+ helm.sh/chart: infinispan-0.3.1
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ app.kubernetes.io/version: "14.0"
+ app.kubernetes.io/managed-by: Helm
+ annotations:
+ meta.helm.sh/release-name: infinispan
+ meta.helm.sh/release-namespace: default
+ "openshift.io/display-name": "Infinispan Cluster"
+ "openshift.io/documentation-url": "http://infinispan.org/documentation/"
+spec:
+ serviceName: ""
+ replicas: 1
+ selector:
+ matchLabels:
+ app: infinispan-pod
+ clusterName: infinispan
+ template:
+ metadata:
+ annotations:
+ checksum/config: ca538163e78ecc00edba4e1673737254437fed9ada3bb7baf487e5c0802b3d15
+ checksum/identities: fb28be4f4f777fd60bbc48733fd8087787ba577efcb9616a64f83d1617f6106c
+ labels:
+ app: infinispan-pod
+ clusterName: infinispan
+
+ spec:
+ affinity:
+ podAntiAffinity:
+ preferredDuringSchedulingIgnoredDuringExecution:
+ - podAffinityTerm:
+ labelSelector:
+ matchLabels:
+ clusterName: infinispan
+ app: infinispan-pod
+ topologyKey: kubernetes.io/hostname
+ weight: 100
+
+ containers:
+ - env:
+ - name: JAVA_OPTIONS
+ value:
+ - name: IDENTITIES_BATCH
+ value: /etc/security/identities-batch
+ - name: SERVER_LIBS
+ value:
+ image: $INFINISPAN_IMAGE
+ imagePullPolicy: Always
+ args:
+ - --cluster-name=infinispan
+ - --server-config=/etc/config/infinispan.yml
+ - --logging-config=/etc/config/log4j2.xml
+ - --bind-address=0.0.0.0
+ - -Djgroups.dns.query=infinispan-ping.default.svc.cluster.local
+ ports:
+ - containerPort: 8888
+ name: ping
+ protocol: TCP
+ - containerPort: 11222
+ name: infinispan
+ protocol: TCP
+ - containerPort: 11223
+ name: infinispan-met
+ protocol: TCP
+ livenessProbe:
+ failureThreshold: 5
+ httpGet:
+ path: rest/v2/cache-managers/default/health/status
+ port: 11222
+ scheme: HTTP
+ initialDelaySeconds: 10
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 80
+ name: infinispan
+ readinessProbe:
+ failureThreshold: 5
+ httpGet:
+ path: rest/v2/cache-managers/default/health/status
+ port: 11222
+ scheme: HTTP
+ initialDelaySeconds: 10
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 80
+ startupProbe:
+ failureThreshold: 60
+ httpGet:
+ path: rest/v2/cache-managers/default/health/status
+ port: 11222
+ scheme: HTTP
+ initialDelaySeconds: 10
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 80
+ resources:
+ limits:
+ cpu: 1000m
+ memory: 1Gi
+ requests:
+ cpu: 500m
+ memory: 512Mi
+ volumeMounts:
+ - mountPath: /etc/config
+ name: config-volume
+ - mountPath: /opt/infinispan/server/data
+ name: data-volume
+ - mountPath: /etc/security
+ name: identities-volume
+ volumes:
+ - configMap:
+ name: infinispan-configuration
+ name: config-volume
+ - name: identities-volume
+ secret:
+ secretName: infinispan-generated-secret
+ - name: data-volume
+ emptyDir: { }
+ updateStrategy:
+ type: RollingUpdate