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/03/01 21:52:00 UTC

[camel-karavan] branch main updated: operator: Optimize and use Kubernetes approach for GVK validation in isTektonInstalled func (#667)

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


The following commit(s) were added to refs/heads/main by this push:
     new 41f0fc03 operator: Optimize and use Kubernetes approach for GVK validation in isTektonInstalled func (#667)
41f0fc03 is described below

commit 41f0fc0358cdb28c601088a5af178b09db6fab4e
Author: Dmitry Volodin <dm...@gmail.com>
AuthorDate: Thu Mar 2 00:51:55 2023 +0300

    operator: Optimize and use Kubernetes approach for GVK validation in isTektonInstalled func (#667)
    
    * operator: Optimize and use Kubernetes approach for GVK validation in isTektonInstalled func
    
    Signed-off-by: Dmitry Volodin <dm...@gmail.com>
    
    * Fix small typo in operator Makefile
    
    Signed-off-by: Dmitry Volodin <dm...@gmail.com>
    
    ---------
    
    Signed-off-by: Dmitry Volodin <dm...@gmail.com>
---
 karavan-operator/Makefile                          |  2 +-
 .../org/apache/camel/karavan/operator/Utils.java   | 31 ++++++++++------------
 2 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/karavan-operator/Makefile b/karavan-operator/Makefile
index c4c4d627..3d4d999f 100644
--- a/karavan-operator/Makefile
+++ b/karavan-operator/Makefile
@@ -74,7 +74,7 @@ deploy: ## Deploy controller to the K8s cluster specified in ~/.kube/config.
 undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config.
 	kubectl delete -f target/kubernetes/kubernetes.yml
 
-##@Bundle
+##@ Bundle
 .PHONY: bundle
 bundle:  ## Generate bundle manifests and metadata, then validate generated files.
 ## marker
diff --git a/karavan-operator/src/main/java/org/apache/camel/karavan/operator/Utils.java b/karavan-operator/src/main/java/org/apache/camel/karavan/operator/Utils.java
index 5a20f592..425f83d3 100644
--- a/karavan-operator/src/main/java/org/apache/camel/karavan/operator/Utils.java
+++ b/karavan-operator/src/main/java/org/apache/camel/karavan/operator/Utils.java
@@ -16,14 +16,14 @@
  */
 package org.apache.camel.karavan.operator;
 
-import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinition;
-import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionList;
+import io.fabric8.kubernetes.api.model.APIResourceList;
 import io.fabric8.kubernetes.client.KubernetesClient;
 import io.fabric8.openshift.client.OpenShiftClient;
+import io.fabric8.tekton.pipeline.v1beta1.Pipeline;
+import io.fabric8.tekton.pipeline.v1beta1.Task;
 import org.eclipse.microprofile.config.ConfigProvider;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 public class Utils {
@@ -40,20 +40,17 @@ public class Utils {
     }
 
     public static boolean isTektonInstalled(KubernetesClient client) {
-        CustomResourceDefinitionList list = client.apiextensions().v1().customResourceDefinitions().list();
-        if (list != null) {
-            List<CustomResourceDefinition> items = list.getItems();
-            long crds = items.stream().filter(crd -> crd.getMetadata().getName().equalsIgnoreCase("pipelines.tekton.dev")
-                    || crd.getMetadata().getName().equalsIgnoreCase("tasks.tekton.dev")
-            ).count();
-            if (crds == 2) {
-                if (isOpenShift(client)) {
-                    long oper = client.adapt(OpenShiftClient.class).operatorHub().subscriptions().list().getItems().stream()
-                            .filter(sub -> sub.getMetadata().getName().contains("openshift-pipelines-operator")).count();
-                    return oper > 0;
-                } else {
-                    return true;
-                }
+        Pipeline pipeline = new Pipeline();
+        Task task = new Task();
+        APIResourceList kinds = client.getApiResources(pipeline.getApiVersion());
+        if (kinds != null && kinds.getResources().stream().filter(res -> res.getKind().equalsIgnoreCase(pipeline.getKind())).findAny().isPresent() &&
+                kinds.getResources().stream().filter(res -> res.getKind().equalsIgnoreCase(task.getKind())).findAny().isPresent()) {
+            if (isOpenShift(client)) {
+                long oper = client.adapt(OpenShiftClient.class).operatorHub().subscriptions().list().getItems().stream()
+                        .filter(sub -> sub.getMetadata().getName().contains("openshift-pipelines-operator")).count();
+                return oper > 0;
+            } else {
+                return true;
             }
         }
         return false;