You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2015/03/11 17:11:37 UTC

[1/3] git commit: updated refs/heads/master to 54d44eb

Repository: cloudstack
Updated Branches:
  refs/heads/master 05d2b0a70 -> 54d44eb84


make topic configurable, provide default serializers

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/master
Commit: dd77fdf6c60ee769c334b58522fb94105ec9ef9b
Parents: 04b30e0
Author: Pierre-Yves Ritschard <py...@spootnik.org>
Authored: Wed Mar 11 08:55:05 2015 +0100
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Wed Mar 11 21:40:49 2015 +0530

----------------------------------------------------------------------
 .../cloudstack/mom/kafka/KafkaEventBus.java     | 21 +++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd77fdf6/plugins/event-bus/kafka/src/org/apache/cloudstack/mom/kafka/KafkaEventBus.java
----------------------------------------------------------------------
diff --git a/plugins/event-bus/kafka/src/org/apache/cloudstack/mom/kafka/KafkaEventBus.java b/plugins/event-bus/kafka/src/org/apache/cloudstack/mom/kafka/KafkaEventBus.java
index d959a5e..20a0e4c 100644
--- a/plugins/event-bus/kafka/src/org/apache/cloudstack/mom/kafka/KafkaEventBus.java
+++ b/plugins/event-bus/kafka/src/org/apache/cloudstack/mom/kafka/KafkaEventBus.java
@@ -47,7 +47,10 @@ import com.cloud.utils.PropertiesUtil;
 @Local(value = EventBus.class)
 public class KafkaEventBus extends ManagerBase implements EventBus {
 
-    private final String _topic = "cloudstack";
+    public static final String DEFAULT_TOPIC = "cloudstack";
+    public static final String DEFAULT_SERIALIZER = "org.apache.kafka.common.serialization.StringSerializer";
+
+    private String _topic = null;
     private Producer<String,String> _producer;
     private static final Logger s_logger = Logger.getLogger(KafkaEventBus.class);
 
@@ -58,7 +61,23 @@ public class KafkaEventBus extends ManagerBase implements EventBus {
 
         try {
             final FileInputStream is = new FileInputStream(PropertiesUtil.findConfigFile("kafka.producer.properties"));
+
             props.load(is);
+
+            _topic = (String)props.remove("topic");
+            if (_topic == null) {
+                _topic = DEFAULT_TOPIC;
+            }
+
+            if (!props.containsKey("key.serializer")) {
+                props.put("key.serializer", DEFAULT_SERIALIZER);
+            }
+
+            if (!props.containsKey("value.serializer")) {
+                props.put("value.serializer", DEFAULT_SERIALIZER);
+            }
+
+
             is.close();
         } catch (Exception e) {
             throw new ConfigurationException("Could not read kafka properties");


[3/3] git commit: updated refs/heads/master to 54d44eb

Posted by bh...@apache.org.
compatibility with HEAD on master

This closes #109

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/54d44eb8
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/54d44eb8
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/54d44eb8

Branch: refs/heads/master
Commit: 54d44eb84403535d6b6ea575ce278fe76d9636f1
Parents: dd77fdf
Author: Pierre-Yves Ritschard <py...@spootnik.org>
Authored: Wed Mar 11 09:11:31 2015 +0100
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Wed Mar 11 21:41:03 2015 +0530

----------------------------------------------------------------------
 plugins/event-bus/kafka/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/54d44eb8/plugins/event-bus/kafka/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/event-bus/kafka/pom.xml b/plugins/event-bus/kafka/pom.xml
index f6205e9..ecdf17e 100644
--- a/plugins/event-bus/kafka/pom.xml
+++ b/plugins/event-bus/kafka/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.cloudstack</groupId>
     <artifactId>cloudstack-plugins</artifactId>
-    <version>4.4.2</version>
+    <version>4.6.0-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
   <dependencies>


[2/3] git commit: updated refs/heads/master to 54d44eb

Posted by bh...@apache.org.
Add Apache Kafka event-bus support - producing only.

This commit produces event bus messages to a "cloudstack" topic
in Apache Kafka. Configuration is expected to be found in
/etc/cloudstack/management/kafka.producer.properties and will
generally be of the form:

    bootstrap.servers=kafka-host1:9092,kafka-host2:9092
    key.serializer=org.apache.kafka.common.serialization.StringSerializer
    value.serializer=org.apache.kafka.common.serialization.StringSerializer

There is no way to parameterize the topic yet, and the consuming
code is just place-holder. I think adding a consumer within cloudstack
is very debatable and likely not needed.

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/04b30e0e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/04b30e0e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/04b30e0e

Branch: refs/heads/master
Commit: 04b30e0e66e6aba3c0484423fcd96687bbe53826
Parents: 05d2b0a
Author: Pierre-Yves Ritschard <py...@spootnik.org>
Authored: Tue Mar 10 23:25:21 2015 +0100
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Wed Mar 11 21:40:49 2015 +0530

----------------------------------------------------------------------
 client/pom.xml                                  |   5 +
 plugins/event-bus/kafka/pom.xml                 |  45 ++++++++
 .../cloudstack/mom/kafka/KafkaEventBus.java     | 109 +++++++++++++++++++
 plugins/pom.xml                                 |   1 +
 4 files changed, 160 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/04b30e0e/client/pom.xml
----------------------------------------------------------------------
diff --git a/client/pom.xml b/client/pom.xml
index 9453159..59137ca 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -243,6 +243,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
+      <artifactId>cloud-mom-kafka</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-framework-ipc</artifactId>
       <version>${project.version}</version>
     </dependency>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/04b30e0e/plugins/event-bus/kafka/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/event-bus/kafka/pom.xml b/plugins/event-bus/kafka/pom.xml
new file mode 100644
index 0000000..f6205e9
--- /dev/null
+++ b/plugins/event-bus/kafka/pom.xml
@@ -0,0 +1,45 @@
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>cloud-mom-kafka</artifactId>
+  <name>Apache CloudStack Plugin - Kafka Event Bus</name>
+  <parent>
+    <groupId>org.apache.cloudstack</groupId>
+    <artifactId>cloudstack-plugins</artifactId>
+    <version>4.4.2</version>
+    <relativePath>../../pom.xml</relativePath>
+  </parent>
+  <dependencies>
+    <dependency>
+    <groupId>org.apache.cloudstack</groupId>
+      <artifactId>cloud-framework-events</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.kafka</groupId>
+      <artifactId>kafka-clients</artifactId>
+      <version>0.8.2.0</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <defaultGoal>install</defaultGoal>
+  </build>
+</project>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/04b30e0e/plugins/event-bus/kafka/src/org/apache/cloudstack/mom/kafka/KafkaEventBus.java
----------------------------------------------------------------------
diff --git a/plugins/event-bus/kafka/src/org/apache/cloudstack/mom/kafka/KafkaEventBus.java b/plugins/event-bus/kafka/src/org/apache/cloudstack/mom/kafka/KafkaEventBus.java
new file mode 100644
index 0000000..d959a5e
--- /dev/null
+++ b/plugins/event-bus/kafka/src/org/apache/cloudstack/mom/kafka/KafkaEventBus.java
@@ -0,0 +1,109 @@
+/*
+ * 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.cloudstack.mom.kafka;
+
+import java.io.FileInputStream;
+
+import java.util.Map;
+import java.util.UUID;
+import java.util.Properties;
+
+import javax.ejb.Local;
+import javax.naming.ConfigurationException;
+
+import org.apache.log4j.Logger;
+
+import org.apache.cloudstack.framework.events.Event;
+import org.apache.cloudstack.framework.events.EventBus;
+import org.apache.cloudstack.framework.events.EventBusException;
+import org.apache.cloudstack.framework.events.EventSubscriber;
+import org.apache.cloudstack.framework.events.EventTopic;
+
+import com.cloud.utils.component.ManagerBase;
+
+import org.apache.kafka.clients.producer.Producer;
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.ProducerRecord;
+
+import com.cloud.utils.PropertiesUtil;
+
+@Local(value = EventBus.class)
+public class KafkaEventBus extends ManagerBase implements EventBus {
+
+    private final String _topic = "cloudstack";
+    private Producer<String,String> _producer;
+    private static final Logger s_logger = Logger.getLogger(KafkaEventBus.class);
+
+    @Override
+    public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
+
+        final Properties props = new Properties();
+
+        try {
+            final FileInputStream is = new FileInputStream(PropertiesUtil.findConfigFile("kafka.producer.properties"));
+            props.load(is);
+            is.close();
+        } catch (Exception e) {
+            throw new ConfigurationException("Could not read kafka properties");
+        }
+
+        _producer = new KafkaProducer<String,String>(props);
+        _name = name;
+
+        return true;
+    }
+
+    @Override
+    public void setName(String name) {
+        _name = name;
+    }
+
+    @Override
+    public UUID subscribe(EventTopic topic, EventSubscriber subscriber) throws EventBusException {
+        /* NOOP */
+        return UUID.randomUUID();
+    }
+
+    @Override
+    public void unsubscribe(UUID subscriberId, EventSubscriber subscriber) throws EventBusException {
+        /* NOOP */
+    }
+
+    @Override
+    public void publish(Event event) throws EventBusException {
+        ProducerRecord<String, String> record = new ProducerRecord<String,String>(_topic, event.getResourceUUID(), event.getDescription());
+        _producer.send(record);
+    }
+
+    @Override
+    public String getName() {
+        return _name;
+    }
+
+    @Override
+    public boolean start() {
+        return true;
+    }
+
+    @Override
+    public boolean stop() {
+        return true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/04b30e0e/plugins/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/pom.xml b/plugins/pom.xml
index 962ce46..8034bd1 100755
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -54,6 +54,7 @@
     <module>hypervisors/kvm</module>
     <module>event-bus/rabbitmq</module>
     <module>event-bus/inmemory</module>
+    <module>event-bus/kafka</module>
     <module>hypervisors/baremetal</module>
     <module>hypervisors/ucs</module>
     <module>hypervisors/hyperv</module>