You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2016/07/11 08:48:35 UTC

[4/4] camel git commit: CAMEL-10134: Camel-Kubernetes: Add the ability to consume events from Resources filtered by labels and/or name - Removed Secrets consumer, it doesn't really make sense

CAMEL-10134: Camel-Kubernetes: Add the ability to consume events from Resources filtered by labels and/or name - Removed Secrets consumer, it doesn't really make sense


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/22a4f28e
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/22a4f28e
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/22a4f28e

Branch: refs/heads/master
Commit: 22a4f28e5910ad95631c6d9dab994b6746f0b446
Parents: bef891e
Author: Andrea Cosentino <an...@gmail.com>
Authored: Mon Jul 11 10:44:32 2016 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Mon Jul 11 10:44:32 2016 +0200

----------------------------------------------------------------------
 .../kubernetes/KubernetesEndpoint.java          |   4 -
 .../consumer/KubernetesSecretsConsumer.java     | 138 -------------------
 .../kubernetes/consumer/common/SecretEvent.java |  47 -------
 .../consumer/KubernetesSecretsConsumerTest.java | 125 -----------------
 .../KubernetesConfigMapsProducerTest.java       |   8 +-
 5 files changed, 1 insertion(+), 321 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/22a4f28e/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesEndpoint.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesEndpoint.java
index 8a81bdf..f710e77 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesEndpoint.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesEndpoint.java
@@ -28,7 +28,6 @@ import org.apache.camel.Producer;
 import org.apache.camel.component.kubernetes.consumer.KubernetesNamespacesConsumer;
 import org.apache.camel.component.kubernetes.consumer.KubernetesPodsConsumer;
 import org.apache.camel.component.kubernetes.consumer.KubernetesReplicationControllersConsumer;
-import org.apache.camel.component.kubernetes.consumer.KubernetesSecretsConsumer;
 import org.apache.camel.component.kubernetes.consumer.KubernetesServicesConsumer;
 import org.apache.camel.component.kubernetes.producer.KubernetesBuildConfigsProducer;
 import org.apache.camel.component.kubernetes.producer.KubernetesBuildsProducer;
@@ -139,9 +138,6 @@ public class KubernetesEndpoint extends DefaultEndpoint {
 
             case KubernetesCategory.REPLICATION_CONTROLLERS:
                 return new KubernetesReplicationControllersConsumer(this, processor);
-
-            case KubernetesCategory.SECRETS:
-                return new KubernetesSecretsConsumer(this, processor);
                 
             case KubernetesCategory.NAMESPACES:
                 return new KubernetesNamespacesConsumer(this, processor);

http://git-wip-us.apache.org/repos/asf/camel/blob/22a4f28e/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/consumer/KubernetesSecretsConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/consumer/KubernetesSecretsConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/consumer/KubernetesSecretsConsumer.java
deleted file mode 100644
index a677945..0000000
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/consumer/KubernetesSecretsConsumer.java
+++ /dev/null
@@ -1,138 +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.component.kubernetes.consumer;
-
-import java.util.concurrent.ExecutorService;
-
-import io.fabric8.kubernetes.api.model.Secret;
-import io.fabric8.kubernetes.client.KubernetesClientException;
-import io.fabric8.kubernetes.client.Watcher;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.component.kubernetes.KubernetesConstants;
-import org.apache.camel.component.kubernetes.KubernetesEndpoint;
-import org.apache.camel.component.kubernetes.consumer.common.SecretEvent;
-import org.apache.camel.impl.DefaultConsumer;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class KubernetesSecretsConsumer extends DefaultConsumer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(KubernetesSecretsConsumer.class);
-
-    private final Processor processor;
-    private ExecutorService executor;
-
-    public KubernetesSecretsConsumer(KubernetesEndpoint endpoint, Processor processor) {
-        super(endpoint, processor);
-        this.processor = processor;
-    }
-
-    @Override
-    public KubernetesEndpoint getEndpoint() {
-        return (KubernetesEndpoint) super.getEndpoint();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        executor = getEndpoint().createExecutor();
-
-        executor.submit(new SecretsConsumerTask());       
-
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-        
-        LOG.debug("Stopping Kubernetes Secrets Consumer");
-        if (executor != null) {
-            if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
-                getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
-            } else {
-                executor.shutdownNow();
-            }
-        }
-        executor = null;
-    }
-    
-    class SecretsConsumerTask implements Runnable {
-        
-        @Override
-        public void run() {
-            if (ObjectHelper.isNotEmpty(getEndpoint().getKubernetesConfiguration().getOauthToken())) {
-                if (ObjectHelper.isNotEmpty(getEndpoint().getKubernetesConfiguration().getNamespace())) {
-                    getEndpoint().getKubernetesClient().secrets()
-                            .inNamespace(getEndpoint().getKubernetesConfiguration().getNamespace())
-                            .watch(new Watcher<Secret>() {
-
-                                @Override
-                                public void eventReceived(io.fabric8.kubernetes.client.Watcher.Action action,
-                                        Secret resource) {
-                                    SecretEvent se = new SecretEvent(action, resource);
-                                    Exchange exchange = getEndpoint().createExchange();
-                                    exchange.getIn().setBody(se.getSecret());
-                                    exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_ACTION, se.getAction());
-                                    exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_TIMESTAMP, System.currentTimeMillis());
-                                    try {
-                                        processor.process(exchange);
-                                    } catch (Exception e) {
-                                        getExceptionHandler().handleException("Error during processing", exchange, e);
-                                    }
-                                }
-
-                                @Override
-                                public void onClose(KubernetesClientException cause) {
-                                    if (cause != null) {
-                                        LOG.error(cause.getMessage(), cause);
-                                    }
-
-                                }
-                            });
-                } else {
-                    getEndpoint().getKubernetesClient().secrets().watch(new Watcher<Secret>() {
-
-                        @Override
-                        public void eventReceived(io.fabric8.kubernetes.client.Watcher.Action action, Secret resource) {
-                            SecretEvent se = new SecretEvent(action, resource);
-                            Exchange exchange = getEndpoint().createExchange();
-                            exchange.getIn().setBody(se.getSecret());
-                            exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_ACTION, se.getAction());
-                            exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_TIMESTAMP, System.currentTimeMillis());
-                            try {
-                                processor.process(exchange);
-                            } catch (Exception e) {
-                                getExceptionHandler().handleException("Error during processing", exchange, e);
-                            }
-                        }
-
-                        @Override
-                        public void onClose(KubernetesClientException cause) {
-                            if (cause != null) {
-                                LOG.error(cause.getMessage(), cause);
-                            }
-                        }
-                    });
-                }
-            }
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/22a4f28e/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/consumer/common/SecretEvent.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/consumer/common/SecretEvent.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/consumer/common/SecretEvent.java
deleted file mode 100644
index 913da10..0000000
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/consumer/common/SecretEvent.java
+++ /dev/null
@@ -1,47 +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.component.kubernetes.consumer.common;
-
-import io.fabric8.kubernetes.api.model.Secret;
-import io.fabric8.kubernetes.client.Watcher.Action;
-
-public class SecretEvent {
-    private io.fabric8.kubernetes.client.Watcher.Action action;
-
-    private Secret secret;
-
-    public SecretEvent(Action action, Secret secret) {
-        this.action = action;
-        this.secret = secret;
-    }
-
-    public io.fabric8.kubernetes.client.Watcher.Action getAction() {
-        return action;
-    }
-
-    public void setAction(io.fabric8.kubernetes.client.Watcher.Action action) {
-        this.action = action;
-    }
-
-    public Secret getSecret() {
-        return secret;
-    }
-
-    public void setSecret(Secret secret) {
-        this.secret = secret;
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/22a4f28e/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesSecretsConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesSecretsConsumerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesSecretsConsumerTest.java
deleted file mode 100644
index ac576aa..0000000
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesSecretsConsumerTest.java
+++ /dev/null
@@ -1,125 +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.component.kubernetes.consumer;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import io.fabric8.kubernetes.api.model.ObjectMeta;
-import io.fabric8.kubernetes.api.model.Secret;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.kubernetes.KubernetesConstants;
-import org.apache.camel.component.kubernetes.KubernetesTestSupport;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.commons.codec.binary.Base64;
-import org.junit.Test;
-
-public class KubernetesSecretsConsumerTest extends KubernetesTestSupport {
-
-    @EndpointInject(uri = "mock:result")
-    protected MockEndpoint mockResultEndpoint;
-
-    @Test
-    public void createAndDeleteSecrets() throws Exception {
-        if (ObjectHelper.isEmpty(authToken)) {
-            return;
-        }
-
-        mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION, "ADDED",
-                "DELETED");
-        Exchange ex = template.request("direct:create", new Processor() {
-
-            @Override
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "default");
-                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SECRET_NAME, "test");
-                Map<String, String> labels = new HashMap<String, String>();
-                labels.put("this", "rocks");
-                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SECRETS_LABELS, labels);
-                Secret s = new Secret();
-                s.setKind("Secret");
-                Map<String, String> mp = new HashMap<String, String>();
-                mp.put("username", Base64.encodeBase64String("pippo".getBytes()));
-                mp.put("password", Base64.encodeBase64String("password".getBytes()));
-                s.setData(mp);
-
-                ObjectMeta meta = new ObjectMeta();
-                meta.setName("test");
-                s.setMetadata(meta);
-                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SECRET, s);
-            }
-        });
-
-        Secret sec = ex.getOut().getBody(Secret.class);
-
-        assertEquals(sec.getMetadata().getName(), "test");
-
-        ex = template.request("direct:delete", new Processor() {
-
-            @Override
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "default");
-                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SECRET_NAME, "test");
-            }
-        });
-
-        boolean secDeleted = ex.getOut().getBody(Boolean.class);
-
-        assertTrue(secDeleted);
-
-        Thread.sleep(3000);
-
-        mockResultEndpoint.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:list").toF("kubernetes://%s?oauthToken=%s&category=secrets&operation=listSecrets", host,
-                        authToken);
-                from("direct:listByLabels").toF(
-                        "kubernetes://%s?oauthToken=%s&category=secrets&operation=listSecretsByLabels", host,
-                        authToken);
-                from("direct:get").toF("kubernetes://%s?oauthToken=%s&category=secrets&operation=getSecret", host,
-                        authToken);
-                from("direct:create").toF("kubernetes://%s?oauthToken=%s&category=secrets&operation=createSecret", host,
-                        authToken);
-                from("direct:delete").toF("kubernetes://%s?oauthToken=%s&category=secrets&operation=deleteSecret", host,
-                        authToken);
-                fromF("kubernetes://%s?oauthToken=%s&category=secrets", host, authToken)
-                        .process(new KubernertesProcessor()).to(mockResultEndpoint);
-            }
-        };
-    }
-
-    public class KubernertesProcessor implements Processor {
-        @Override
-        public void process(Exchange exchange) throws Exception {
-            Message in = exchange.getIn();
-            log.info("Got event with body: " + in.getBody() + " and action "
-                    + in.getHeader(KubernetesConstants.KUBERNETES_EVENT_ACTION));
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/22a4f28e/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesConfigMapsProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesConfigMapsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesConfigMapsProducerTest.java
index 47c2e63..9b26a7e 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesConfigMapsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesConfigMapsProducerTest.java
@@ -16,17 +16,12 @@
  */
 package org.apache.camel.component.kubernetes.producer;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
 import io.fabric8.kubernetes.api.model.ConfigMap;
-import io.fabric8.kubernetes.api.model.Container;
-import io.fabric8.kubernetes.api.model.ContainerPort;
-import io.fabric8.kubernetes.api.model.Pod;
-import io.fabric8.kubernetes.api.model.PodSpec;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
@@ -44,8 +39,7 @@ public class KubernetesConfigMapsProducerTest extends KubernetesTestSupport {
             return;
         }
         List<ConfigMap> result = template.requestBody("direct:list", "", List.class);
-
-        assertEquals(0, result.size());
+        assertEquals(1, result.size());
     }
 
     @Test