From 793c269925d1a2685ae57cf7288c72b7eb37167d Mon Sep 17 00:00:00 2001 From: Vitaliy Levitski Date: Fri, 20 Jan 2017 12:50:24 +0200 Subject: [PATCH] Add Kafka to MapR plugin Implements: blueprint add-mapr-kafka Change-Id: I2b88cb053f0ff51c2a72bea7acdcfdeacd3df343 --- .../add-mapr-kafka-3a808bbc1aa21055.yaml | 3 + .../plugins/mapr/services/kafka/__init__.py | 0 sahara/plugins/mapr/services/kafka/kafka.py | 73 +++++++++++++++++++ .../versions/v5_2_0_mrv2/version_handler.py | 4 + 4 files changed, 80 insertions(+) create mode 100644 releasenotes/notes/add-mapr-kafka-3a808bbc1aa21055.yaml create mode 100644 sahara/plugins/mapr/services/kafka/__init__.py create mode 100644 sahara/plugins/mapr/services/kafka/kafka.py diff --git a/releasenotes/notes/add-mapr-kafka-3a808bbc1aa21055.yaml b/releasenotes/notes/add-mapr-kafka-3a808bbc1aa21055.yaml new file mode 100644 index 00000000..bde55568 --- /dev/null +++ b/releasenotes/notes/add-mapr-kafka-3a808bbc1aa21055.yaml @@ -0,0 +1,3 @@ +--- +features: + - Add Kafka to MapR plugin diff --git a/sahara/plugins/mapr/services/kafka/__init__.py b/sahara/plugins/mapr/services/kafka/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/kafka/kafka.py b/sahara/plugins/mapr/services/kafka/kafka.py new file mode 100644 index 00000000..a97c7fe8 --- /dev/null +++ b/sahara/plugins/mapr/services/kafka/kafka.py @@ -0,0 +1,73 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed 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. + + +import sahara.plugins.mapr.domain.node_process as np +import sahara.plugins.mapr.domain.service as s +import sahara.plugins.mapr.util.validation_utils as vu + +KAFKA = np.NodeProcess( + name='kafka', + ui_name='Kafka', + package='mapr-kafka', + open_ports=[9092] +) + +KAFKA_REST = np.NodeProcess( + name='kafka', + ui_name='Kafka Rest', + package='mapr-kafka-rest', + open_ports=[8082] +) + +KAFKA_CONNECT_HDFS = np.NodeProcess( + name='kafka', + ui_name='Kafka Connect HDFS', + package='mapr-kafka-connect-hdfs' +) + +KAFKA_CONNECT_JDBC = np.NodeProcess( + name='kafka', + ui_name='Kafka Connect JDBC', + package='mapr-kafka-connect-jdbc' +) + + +class Kafka(s.Service): + def __init__(self): + super(Kafka, self).__init__() + self._version = '0.9.0' + self._name = 'kafka' + self._ui_name = 'Kafka' + self._node_processes = [KAFKA] + + +class KafkaRest(s.Service): + def __init__(self): + super(KafkaRest, self).__init__() + self._version = '2.0.1' + self._name = 'kafka-eco' + self._ui_name = 'Kafka Rest' + self._node_processes = [KAFKA_REST] + self._validation_rules = [vu.at_least(1, KAFKA)] + + +class KafkaConnect(s.Service): + def __init__(self): + super(KafkaConnect, self).__init__() + self._version = '2.0.1' + self._name = 'kafka-connect' + self._ui_name = 'Kafka Connect' + self._node_processes = [KAFKA_CONNECT_HDFS, KAFKA_CONNECT_JDBC] + self._validation_rules = [vu.at_least(1, KAFKA)] diff --git a/sahara/plugins/mapr/versions/v5_2_0_mrv2/version_handler.py b/sahara/plugins/mapr/versions/v5_2_0_mrv2/version_handler.py index 0e7b30e2..f947db71 100644 --- a/sahara/plugins/mapr/versions/v5_2_0_mrv2/version_handler.py +++ b/sahara/plugins/mapr/versions/v5_2_0_mrv2/version_handler.py @@ -21,6 +21,7 @@ from sahara.plugins.mapr.services.hive import hive from sahara.plugins.mapr.services.httpfs import httpfs from sahara.plugins.mapr.services.hue import hue from sahara.plugins.mapr.services.impala import impala +from sahara.plugins.mapr.services.kafka import kafka from sahara.plugins.mapr.services.mahout import mahout from sahara.plugins.mapr.services.management import management as mng from sahara.plugins.mapr.services.maprfs import maprfs @@ -65,6 +66,9 @@ class VersionHandler(bvh.BaseVersionHandler): swift.Swift(), sentry.SentryV16(), spark.SparkOnYarnV201(), + kafka.Kafka(), + kafka.KafkaConnect(), + kafka.KafkaRest(), ] def get_context(self, cluster, added=None, removed=None):