You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/05/13 05:27:33 UTC

[camel] branch main updated: Fixed login for Openshift and Minikube (#7608)

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 <ma...@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;