thingsboard-aplcache

Details

diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index e57018d..d080f84 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/application/src/main/resources/thingsboard.yml
@@ -115,7 +115,9 @@ cassandra:
   # Thingsboard keyspace name
   keyspace_name: "${CASSANDRA_KEYSPACE_NAME:thingsboard}"
   # Specify node list
-  url: "${CASSANDRA_URL:127.0.0.1:9042}"
+  host: "${CASSANDRA_HOST:127.0.0.1}"
+  # Specify node list
+  post: "${CASSANDRA_PORT:9042}"
   # Enable/disable secure connection
   ssl: "${CASSANDRA_USE_SSL:false}"
   # Enable/disable JMX
diff --git a/dao/src/main/java/org/thingsboard/server/dao/cassandra/AbstractCassandraCluster.java b/dao/src/main/java/org/thingsboard/server/dao/cassandra/AbstractCassandraCluster.java
index 2b9000d..d693802 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/cassandra/AbstractCassandraCluster.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/cassandra/AbstractCassandraCluster.java
@@ -44,7 +44,7 @@ public abstract class AbstractCassandraCluster {
 
     @Value("${cassandra.cluster_name}")
     private String clusterName;
-    @Value("${cassandra.url}")
+    @Value("${cassandra.host}:${cassandra.port}")
     private String url;
     @Value("${cassandra.compression}")
     private String compression;
diff --git a/dao/src/test/resources/cassandra-test.properties b/dao/src/test/resources/cassandra-test.properties
index 82fcbe1..b9e2734 100644
--- a/dao/src/test/resources/cassandra-test.properties
+++ b/dao/src/test/resources/cassandra-test.properties
@@ -2,7 +2,9 @@ cassandra.cluster_name=Thingsboard Cluster
 
 cassandra.keyspace_name=thingsboard
 
-cassandra.url=127.0.0.1:9142
+cassandra.host=127.0.0.1
+
+cassandra.port=9142
 
 cassandra.ssl=false
 
diff --git a/docker/cassandra/Makefile b/docker/cassandra/Makefile
index f277e9e..ae82253 100644
--- a/docker/cassandra/Makefile
+++ b/docker/cassandra/Makefile
@@ -7,4 +7,4 @@ build:
 
 push: build
 	docker push ${PROJECT}/${APP}:${VERSION}
-    docker push ${PROJECT}/${APP}:latest
+	docker push ${PROJECT}/${APP}:latest
diff --git a/docker/cassandra-setup/Dockerfile b/docker/cassandra-setup/Dockerfile
new file mode 100644
index 0000000..f91f0f1
--- /dev/null
+++ b/docker/cassandra-setup/Dockerfile
@@ -0,0 +1,24 @@
+#
+# Copyright © 2016-2017 The Thingsboard Authors
+#
+# 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.
+#
+
+FROM openjdk:8-jre
+
+ADD install.sh /install.sh
+ADD thingsboard.deb /thingsboard.deb
+
+RUN apt-get update \
+        && apt-get install -y nmap \
+        && chmod +x /install.sh
diff --git a/docker/cassandra-setup/install.sh b/docker/cassandra-setup/install.sh
new file mode 100755
index 0000000..87aaeed
--- /dev/null
+++ b/docker/cassandra-setup/install.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+#
+# Copyright © 2016-2017 The Thingsboard Authors
+#
+# 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.
+#
+
+
+dpkg -i /thingsboard.deb
+
+until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open"
+do
+  echo "Wait for cassandra db to start..."
+  sleep 10
+done
+
+echo "Creating 'Thingsboard' schema and system data..."
+if [ "$ADD_DEMO_DATA" == "true" ]; then
+    echo "plus demo data..."
+    /usr/share/thingsboard/bin/install/install.sh --loadDemo
+elif [ "$ADD_DEMO_DATA" == "false" ]; then
+    /usr/share/thingsboard/bin/install/install.sh
+fi
diff --git a/docker/cassandra-setup/Makefile b/docker/cassandra-setup/Makefile
new file mode 100644
index 0000000..635b92f
--- /dev/null
+++ b/docker/cassandra-setup/Makefile
@@ -0,0 +1,12 @@
+VERSION=1.2.4
+PROJECT=thingsboard
+APP=cassandra-setup
+
+build:
+	cp ../../application/target/thingsboard.deb .
+	docker build --pull -t ${PROJECT}/${APP}:${VERSION} -t ${PROJECT}/${APP}:latest .
+	rm thingsboard.deb
+
+push: build
+	docker push ${PROJECT}/${APP}:${VERSION}
+	docker push ${PROJECT}/${APP}:latest
diff --git a/docker/k8s/cassandra-setup.yaml b/docker/k8s/cassandra-setup.yaml
new file mode 100644
index 0000000..996ab12
--- /dev/null
+++ b/docker/k8s/cassandra-setup.yaml
@@ -0,0 +1,39 @@
+#
+# Copyright © 2016-2017 The Thingsboard Authors
+#
+# 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.
+#
+
+apiVersion: v1
+kind: Pod
+metadata:
+  name: cassandra-setup
+spec:
+  containers:
+  - name: cassandra-setup
+    imagePullPolicy: Always
+    image: thingsboard/cassandra-setup:1.2.4
+    env:
+    - name: ADD_DEMO_DATA
+      value: "true"
+    - name : CASSANDRA_HOST
+      value: "cassandra-headless"
+    - name : CASSANDRA_PORT
+      value: "9042"
+    - name : DATABASE_TYPE
+      value: "cassandra"
+    command:
+    - sh
+    - -c
+    - /install.sh
+  restartPolicy: Never

docker/k8s/tb.yaml 18(+15 -3)

diff --git a/docker/k8s/tb.yaml b/docker/k8s/tb.yaml
index 45f987f..be22309 100644
--- a/docker/k8s/tb.yaml
+++ b/docker/k8s/tb.yaml
@@ -50,7 +50,9 @@ metadata:
 data:
   zookeeper.enabled: "true"
   zookeeper.url: "zk-headless"
-  cassandra.url: "cassandra-headless:9042"
+  cassandra.host: "cassandra-headless"
+  cassandra.port: "9042"
+  database.type: "cassandra"
 ---
 apiVersion: apps/v1beta1
 kind: StatefulSet
@@ -100,11 +102,21 @@ spec:
             configMapKeyRef:
               name: tb-config
               key: zookeeper.url
-        - name : CASSANDRA_URL
+        - name : CASSANDRA_HOST
           valueFrom:
             configMapKeyRef:
               name: tb-config
-              key: cassandra.url
+              key: cassandra.host
+        - name : CASSANDRA_PORT
+          valueFrom:
+            configMapKeyRef:
+              name: tb-config
+              key: cassandra.port
+        - name: DATABASE_TYPE
+          valueFrom:
+            configMapKeyRef:
+              name: tb-config
+              key: database.type
         - name : RPC_HOST
           valueFrom:
             fieldRef:

docker/tb.env 5(+3 -2)

diff --git a/docker/tb.env b/docker/tb.env
index c5d77c0..89a7dda 100644
--- a/docker/tb.env
+++ b/docker/tb.env
@@ -8,10 +8,11 @@ COAP_BIND_PORT=5683
 ZOOKEEPER_URL=zk:2181
 
 # type of database to use: sql[DEFAULT] or cassandra
-DATABASE_TYPE=sql
+DATABASE_TYPE=cassandra
 
 # cassandra db config
-CASSANDRA_URL=cassandra:9042
+CASSANDRA_HOST=cassandra
+CASSANDRA_PORT=9042
 
 # postgres db config
 # SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
diff --git a/docker/tb/Makefile b/docker/tb/Makefile
index b12e5a6..267a166 100644
--- a/docker/tb/Makefile
+++ b/docker/tb/Makefile
@@ -9,4 +9,4 @@ build:
 
 push: build
 	docker push ${PROJECT}/${APP}:${VERSION}
-    docker push ${PROJECT}/${APP}:latest
+	docker push ${PROJECT}/${APP}:latest
diff --git a/docker/tb/run-application.sh b/docker/tb/run-application.sh
index 274e255..783b35b 100755
--- a/docker/tb/run-application.sh
+++ b/docker/tb/run-application.sh
@@ -19,7 +19,7 @@
 dpkg -i /thingsboard.deb
 
 if [ "$DATABASE_TYPE" == "cassandra" ]; then
-    until nmap cassandra -p 9042 | grep "9042/tcp open"
+    until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open"
     do
       echo "Wait for cassandra db to start..."
       sleep 10
@@ -39,7 +39,7 @@ fi
 if [ "$ADD_SCHEMA_AND_SYSTEM_DATA" == "true" ]; then
     echo "Creating 'Thingsboard' schema and system data..."
     if [ "$ADD_DEMO_DATA" == "true" ]; then
-        echo "Adding demo data..."
+        echo "plus demo data..."
         /usr/share/thingsboard/bin/install/install.sh --loadDemo
     elif [ "$ADD_DEMO_DATA" == "false" ]; then
         /usr/share/thingsboard/bin/install/install.sh