This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 67d17887368 Fixed login for Openshift and Minikube (#7608) 67d17887368 is described below commit 67d17887368b78e70d720c7cb73fb62298c29cb8 Author: Marat Gubaidullin <marat.gubaidul...@gmail.com> AuthorDate: Fri May 13 01:27:21 2022 -0400 Fixed login for Openshift and Minikube (#7608) --- .../camel/dsl/jbang/core/commands/Deploy.java | 19 +++++++++-------- .../camel/dsl/jbang/core/commands/Image.java | 22 ++++++++------------ .../dsl/jbang/core/commands/KubernetesHelper.java | 24 ++++++++++++++++++++++ .../camel/dsl/jbang/core/commands/Undeploy.java | 17 ++++++++------- 4 files changed, 54 insertions(+), 28 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Deploy.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Deploy.java index d0a34a7826a..a88072e5a1c 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Deploy.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Deploy.java @@ -27,8 +27,6 @@ import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.openshift.api.model.Route; import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftClient; -import io.fabric8.openshift.client.OpenShiftConfig; -import io.fabric8.openshift.client.OpenShiftConfigBuilder; import picocli.CommandLine; @CommandLine.Command(name = "deploy", description = "Deploy resources to Kubernetes, OpenShift, Minikube") @@ -60,6 +58,10 @@ public class Deploy implements Callable<Integer> { private String server; @CommandLine.Option(names = { "--token" }, description = "Token") private String token; + @CommandLine.Option(names = { "-u", "--username" }, description = "Username") + private String username; + @CommandLine.Option(names = { "-p", "--password" }, description = "Password") + private String password; @Override public Integer call() throws Exception { @@ -76,9 +78,8 @@ public class Deploy implements Callable<Integer> { System.out.println("Generating Route..."); Route route = KubernetesHelper.createRoute(namespace, name, version, containerPort); - OpenShiftConfig config - = new OpenShiftConfigBuilder().withMasterUrl(server).withOauthToken(token).withTrustCerts(true).build(); - try (OpenShiftClient client = new DefaultOpenShiftClient(config)) { + try (OpenShiftClient client + = new DefaultOpenShiftClient(KubernetesHelper.getOpenShiftConfig(server, username, password, token))) { System.out.println("Creating Deployment in Openshift"); client.apps().deployments().inNamespace(namespace).createOrReplace(deployment); client.services().inNamespace(namespace).delete(service); @@ -96,13 +97,14 @@ public class Deploy implements Callable<Integer> { } } } else { - System.out.println("Generating Deployment..."); + System.out.println("Generating Deployment for " + (minikube ? "Minikube" : "Kubernetes")); Deployment deployment = KubernetesHelper.createDeployment(namespace, name, image, version, containerPort, replicas); - System.out.println("Generating Service..."); + System.out.println("Generating Service " + (minikube ? "Minikube" : "Kubernetes")); Service service = KubernetesHelper.createService(namespace, name, version, servicePort, containerPort, minikube, nodePort); - try (KubernetesClient client = new DefaultKubernetesClient()) { + try (KubernetesClient client + = new DefaultKubernetesClient(KubernetesHelper.getConfig(server, username, password, token))) { System.out.println("Creating Deployment in " + (minikube ? "Minikube" : "Kubernetes")); client.apps().deployments().inNamespace(namespace).createOrReplace(deployment); client.services().inNamespace(namespace).delete(service); @@ -110,6 +112,7 @@ public class Deploy implements Callable<Integer> { client.services().inNamespace(namespace).createOrReplace(service); } catch (Exception ex) { System.out.println("ERROR: " + ex.getMessage()); + ex.printStackTrace(); } } return 0; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Image.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Image.java index 8708f6bfbdb..8232e7f7c01 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Image.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Image.java @@ -40,8 +40,6 @@ import io.fabric8.openshift.api.model.BuildConfig; import io.fabric8.openshift.api.model.ImageStream; import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftClient; -import io.fabric8.openshift.client.OpenShiftConfig; -import io.fabric8.openshift.client.OpenShiftConfigBuilder; import picocli.CommandLine; @CommandLine.Command(name = "image", description = "Create Docker and OCI container images") @@ -67,6 +65,8 @@ public class Image implements Callable<Integer> { private boolean openshift; @CommandLine.Option(names = { "--build-config" }, description = "Build in OpenShift using BuildConfig") private boolean buildConfig; + @CommandLine.Option(names = { "--image" }, description = "Image name") + private String image; @CommandLine.Option(names = { "--server" }, description = "Master URL") private String server; @CommandLine.Option(names = { "--token" }, description = "Token") @@ -84,11 +84,12 @@ public class Image implements Callable<Integer> { @Override public Integer call() throws Exception { File jarFile = Paths.get(jar).toFile(); + image = image == null ? namespace + "/" + name + ":" + version : image; if (openshift && buildConfig) { buildInOpenshiftWithBuildConfig(jarFile); } else { String host = openshift ? getOpenshiftRegistryHost() : registry; - String imageReference = host + "/" + namespace + "/" + name + ":" + version; + String imageReference = host + "/" + image; Jib.from(from) .addLayer(Arrays.asList(Paths.get(jar)), "/deployments/") .setWorkingDirectory(AbsoluteUnixPath.get("/deployments")) @@ -99,21 +100,16 @@ public class Image implements Callable<Integer> { } private String getOpenshiftRegistryHost() { - OpenShiftConfig config - = new OpenShiftConfigBuilder().withMasterUrl(server).withOauthToken(token).withNamespace(namespace) - .withTrustCerts(true).build(); - try (OpenShiftClient client = new DefaultOpenShiftClient(config)) { - String host = client.routes().inNamespace("openshift-image-registry").list().getItems().get(0).getSpec().getHost(); - return host + "/" + namespace + "/" + name + ":" + version; + try (OpenShiftClient client + = new DefaultOpenShiftClient(KubernetesHelper.getOpenShiftConfig(server, username, password, token))) { + return client.routes().inNamespace("openshift-image-registry").list().getItems().get(0).getSpec().getHost(); } } private void buildInOpenshiftWithBuildConfig(File jarFile) throws InvalidImageReferenceException { System.out.println("Generating resources..."); - OpenShiftConfig config - = new OpenShiftConfigBuilder().withMasterUrl(server).withOauthToken(token).withNamespace(namespace) - .withTrustCerts(true).build(); - try (OpenShiftClient client = new DefaultOpenShiftClient(config)) { + try (OpenShiftClient client + = new DefaultOpenShiftClient(KubernetesHelper.getOpenShiftConfig(server, username, password, token))) { ImageStream imageStream = KubernetesHelper.createImageStream(namespace, name, version); BuildConfig buildConfig = KubernetesHelper.createBuildConfig(namespace, name, version, jarFile.getName(), sourceImage); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/KubernetesHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/KubernetesHelper.java index d79c2e870d4..5cb7327b3cb 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/KubernetesHelper.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/KubernetesHelper.java @@ -27,6 +27,8 @@ import io.fabric8.kubernetes.api.model.ServicePortBuilder; import io.fabric8.kubernetes.api.model.ServiceSpecBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; +import io.fabric8.kubernetes.client.Config; +import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.openshift.api.model.BinaryBuildSource; import io.fabric8.openshift.api.model.BuildConfig; import io.fabric8.openshift.api.model.BuildConfigBuilder; @@ -35,6 +37,8 @@ import io.fabric8.openshift.api.model.ImageStreamBuilder; import io.fabric8.openshift.api.model.Route; import io.fabric8.openshift.api.model.RouteBuilder; import io.fabric8.openshift.api.model.RoutePortBuilder; +import io.fabric8.openshift.client.OpenShiftConfig; +import io.fabric8.openshift.client.OpenShiftConfigBuilder; public final class KubernetesHelper { @@ -214,4 +218,24 @@ public final class KubernetesHelper { "app.kubernetes.io/name", name, "app.kubernetes.io/version", version); } + + public static OpenShiftConfig getOpenShiftConfig(String server, String username, String password, String token) { + if (token != null) { + return new OpenShiftConfigBuilder().withMasterUrl(server).withOauthToken(token).withTrustCerts(true).build(); + } else { + return new OpenShiftConfigBuilder().withMasterUrl(server).withUsername(username).withPassword(password) + .withTrustCerts(true).build(); + } + } + + public static Config getConfig(String server, String username, String password, String token) { + if (token != null && server != null) { + return new ConfigBuilder().withMasterUrl(server).withOauthToken(token).withTrustCerts(true).build(); + } else if (username != null && token != null && server != null) { + return new ConfigBuilder().withMasterUrl(server).withUsername(username).withPassword(password).withTrustCerts(true) + .build(); + } else { + return new ConfigBuilder().build(); + } + } } diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Undeploy.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Undeploy.java index 03ad0a82203..21effdf524a 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Undeploy.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Undeploy.java @@ -23,8 +23,6 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftClient; -import io.fabric8.openshift.client.OpenShiftConfig; -import io.fabric8.openshift.client.OpenShiftConfigBuilder; import picocli.CommandLine; @CommandLine.Command(name = "undeploy", description = "Undeploy resources from Kubernetes, OpenShift, Minikube") @@ -44,14 +42,17 @@ public class Undeploy implements Callable<Integer> { private String server; @CommandLine.Option(names = { "--token" }, description = "Token") private String token; + @CommandLine.Option(names = { "-u", "--username" }, description = "Username") + private String username; + @CommandLine.Option(names = { "-p", "--password" }, description = "Password") + private String password; @Override public Integer call() throws Exception { Map labels = KubernetesHelper.getLabels(name, version); if (openshift) { - OpenShiftConfig config - = new OpenShiftConfigBuilder().withMasterUrl(server).withOauthToken(token).withTrustCerts(true).build(); - try (OpenShiftClient client = new DefaultOpenShiftClient(config)) { + try (OpenShiftClient client + = new DefaultOpenShiftClient(KubernetesHelper.getOpenShiftConfig(server, username, password, token))) { System.out.println("Deleting Routes..."); client.routes().inNamespace(namespace).withLabels(labels).delete(); System.out.println("Deleting Service..."); @@ -64,13 +65,15 @@ public class Undeploy implements Callable<Integer> { client.buildConfigs().inNamespace(namespace).withLabels(labels).delete(); } } else { - try (KubernetesClient client = new DefaultKubernetesClient()) { + try (KubernetesClient client + = new DefaultKubernetesClient(KubernetesHelper.getConfig(server, username, password, token))) { System.out.println("Deleting Service..."); client.services().inNamespace(namespace).withLabels(labels).delete(); System.out.println("Deleting Deployment..."); client.apps().deployments().inNamespace(namespace).withLabels(labels).delete(); } catch (Exception ex) { - System.out.println("Error Undeploying " + ex.getMessage()); + System.out.println("Error undeploy " + ex.getMessage()); + ex.printStackTrace(); } } return 0;