From 785a571c70929435913c49cd2d1c8d9687b13435 Mon Sep 17 00:00:00 2001 From: Rohan Kumar Date: Wed, 16 Oct 2019 19:54:39 +0530 Subject: [PATCH] Pick Namespace/Project from kubeconfig or assume default As reported in #1 , this project doesn't seem to be working for users who have namespace set other than default. --- .../fabric8/podset/operator/PodSetOperatorMain.java | 13 ++++++++++++- .../operator/controller/PodSetController.java | 6 +++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/fabric8/podset/operator/PodSetOperatorMain.java b/src/main/java/io/fabric8/podset/operator/PodSetOperatorMain.java index 03135d6..f488da8 100644 --- a/src/main/java/io/fabric8/podset/operator/PodSetOperatorMain.java +++ b/src/main/java/io/fabric8/podset/operator/PodSetOperatorMain.java @@ -16,15 +16,26 @@ import io.fabric8.podset.operator.crd.PodSet; import io.fabric8.podset.operator.crd.PodSetList; +import java.util.logging.Level; +import java.util.logging.Logger; + /** * Main Class for Operator, you can run this sample using this command: * * mvn exec:java -Dexec.mainClass=io.fabric8.podset.operator.PodSetOperatorMain */ public class PodSetOperatorMain { + public static Logger logger = Logger.getLogger(PodSetOperatorMain.class.getName()); + public static void main(String args[]) { try (KubernetesClient client = new DefaultKubernetesClient()) { + String namespace = client.getNamespace(); + if (namespace == null) { + logger.log(Level.INFO, "No namespace found via config, assuming default."); + namespace = "default"; + } + logger.log(Level.INFO, "Using namespace : " + namespace); CustomResourceDefinition podSetCustomResourceDefinition = new CustomResourceDefinitionBuilder() .withNewMetadata().withName("podsets.demo.k8s.io").endMetadata() .withNewSpec() @@ -46,7 +57,7 @@ public static void main(String args[]) { MixedOperation> podSetClient = client.customResources(podSetCustomResourceDefinition, PodSet.class, PodSetList.class, DoneablePodSet.class); SharedIndexInformer podSharedIndexInformer = informerFactory.sharedIndexInformerFor(Pod.class, PodList.class, 10 * 60 * 1000); SharedIndexInformer podSetSharedIndexInformer = informerFactory.sharedIndexInformerForCustomResource(podSetCustomResourceDefinitionContext, PodSet.class, PodSetList.class, 10 * 60 * 1000); - PodSetController podSetController = new PodSetController(client, podSetClient, podSharedIndexInformer, podSetSharedIndexInformer); + PodSetController podSetController = new PodSetController(client, podSetClient, podSharedIndexInformer, podSetSharedIndexInformer, namespace); podSetController.create(); informerFactory.startAllRegisteredInformers(); diff --git a/src/main/java/io/fabric8/podset/operator/controller/PodSetController.java b/src/main/java/io/fabric8/podset/operator/controller/PodSetController.java index 68b92b6..37fa62c 100644 --- a/src/main/java/io/fabric8/podset/operator/controller/PodSetController.java +++ b/src/main/java/io/fabric8/podset/operator/controller/PodSetController.java @@ -31,12 +31,12 @@ public class PodSetController { public static Logger logger = Logger.getLogger(PodSetController.class.getName()); public static String APP_LABEL = "app"; - public PodSetController(KubernetesClient kubernetesClient, MixedOperation> podSetClient, SharedIndexInformer podInformer, SharedIndexInformer podSetInformer) { + public PodSetController(KubernetesClient kubernetesClient, MixedOperation> podSetClient, SharedIndexInformer podInformer, SharedIndexInformer podSetInformer, String namespace) { this.kubernetesClient = kubernetesClient; this.podSetClient = podSetClient; - this.podSetLister = new Lister<>(podSetInformer.getIndexer(), "default"); + this.podSetLister = new Lister<>(podSetInformer.getIndexer(), namespace); this.podSetInformer = podSetInformer; - this.podLister = new Lister<>(podInformer.getIndexer(), "default"); + this.podLister = new Lister<>(podInformer.getIndexer(), namespace); this.podInformer = podInformer; this.workqueue = new ArrayBlockingQueue<>(1024); }