Commit cdf02c667b18022abfd4898874767aeaaa12e91a

Authored by volodymyr-babak
2 parents 14c5cf24 be8f7062

Merge branch 'master' of github.com:volodymyr-babak/thingsboard

... ... @@ -115,7 +115,9 @@ cassandra:
115 115 # Thingsboard keyspace name
116 116 keyspace_name: "${CASSANDRA_KEYSPACE_NAME:thingsboard}"
117 117 # Specify node list
118   - url: "${CASSANDRA_URL:127.0.0.1:9042}"
  118 + host: "${CASSANDRA_HOST:127.0.0.1}"
  119 + # Specify node list
  120 + post: "${CASSANDRA_PORT:9042}"
119 121 # Enable/disable secure connection
120 122 ssl: "${CASSANDRA_USE_SSL:false}"
121 123 # Enable/disable JMX
... ... @@ -233,7 +235,7 @@ spring:
233 235 jpa:
234 236 hibernate:
235 237 ddl-auto: "validate"
236   - database-platform: "org.hibernate.dialect.HSQLDialect"
  238 + database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.HSQLDialect}"
237 239 datasource:
238 240 driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.hsqldb.jdbc.JDBCDriver}"
239 241 url: "${SPRING_DATASOURCE_URL:jdbc:hsqldb:file:${SQL_DATA_FOLDER:/tmp}/thingsboardDb;sql.enforce_size=false}"
... ... @@ -250,7 +252,7 @@ spring:
250 252 # jpa:
251 253 # hibernate:
252 254 # ddl-auto: "validate"
253   -# database-platform: "org.hibernate.dialect.PostgreSQLDialect"
  255 +# database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}"
254 256 # datasource:
255 257 # driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
256 258 # url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
... ...
... ... @@ -44,7 +44,7 @@ public abstract class AbstractCassandraCluster {
44 44
45 45 @Value("${cassandra.cluster_name}")
46 46 private String clusterName;
47   - @Value("${cassandra.url}")
  47 + @Value("${cassandra.host}:${cassandra.port}")
48 48 private String url;
49 49 @Value("${cassandra.compression}")
50 50 private String compression;
... ...
... ... @@ -2,7 +2,9 @@ cassandra.cluster_name=Thingsboard Cluster
2 2
3 3 cassandra.keyspace_name=thingsboard
4 4
5   -cassandra.url=127.0.0.1:9142
  5 +cassandra.host=127.0.0.1
  6 +
  7 +cassandra.port=9142
6 8
7 9 cassandra.ssl=false
8 10
... ...
1 1 # cassandra environment variables
2 2 CASSANDRA_DATA_DIR=/home/docker/cassandra_volume
3   -CASSANDRA_URL=cassandra
4 3
5 4 # postgres environment variables
6 5 POSTGRES_DATA_DIR=/home/docker/postgres_volume
7 6 POSTGRES_DB=thingsboard
8   -POSTGRES_USER=postgres
9   -POSTGRES_PASSWORD=postgres
10   -POSTGRES_URL=postgres
  7 +
  8 +# hsqldb environment variables
  9 +HSQLDB_DATA_DIR=/home/docker/hsqldb_volume
11 10
12 11 # environment variables for schema init and insert system and demo data
13   -CREATE_SCHEMA=true
14   -ADD_SYSTEM_DATA=false
  12 +ADD_SCHEMA_AND_SYSTEM_DATA=false
15 13 ADD_DEMO_DATA=false
\ No newline at end of file
... ...
docker/cassandra-setup/Dockerfile renamed from docker/tb-cassandra-schema/Dockerfile
... ... @@ -14,15 +14,11 @@
14 14 # limitations under the License.
15 15 #
16 16
17   -FROM cassandra:3.9
  17 +FROM openjdk:8-jre
18 18
19   -ADD install-schema.sh /install-schema.sh
  19 +ADD install.sh /install.sh
  20 +ADD thingsboard.deb /thingsboard.deb
20 21
21 22 RUN apt-get update \
22 23 && apt-get install -y nmap \
23   - && chmod +x /install-schema.sh
24   -
25   -ADD schema.cql /schema.cql
26   -ADD demo-data.cql /demo-data.cql
27   -ADD system-data.cql /system-data.cql
28   -
  24 + && chmod +x /install.sh
... ...
docker/cassandra-setup/Makefile renamed from docker/tb-cassandra-schema/Makefile
1 1 VERSION=1.2.4
2 2 PROJECT=thingsboard
3   -APP=tb-cassandra-schema
  3 +APP=cassandra-setup
4 4
5 5 build:
6   - cp ../../dao/src/main/resources/cassandra/schema.cql .
7   - cp ../../dao/src/main/resources/cassandra/demo-data.cql .
8   - cp ../../dao/src/main/resources/cassandra/system-data.cql .
  6 + cp ../../application/target/thingsboard.deb .
9 7 docker build --pull -t ${PROJECT}/${APP}:${VERSION} -t ${PROJECT}/${APP}:latest .
10   - rm schema.cql demo-data.cql system-data.cql
  8 + rm thingsboard.deb
11 9
12 10 push: build
13 11 docker push ${PROJECT}/${APP}:${VERSION}
... ...
docker/cassandra-setup/install.sh renamed from docker/tb-postgres-schema/Dockerfile 100644 → 100755
  1 +#!/bin/bash
1 2 #
2 3 # Copyright © 2016-2017 The Thingsboard Authors
3 4 #
... ... @@ -14,14 +15,19 @@
14 15 # limitations under the License.
15 16 #
16 17
17   -FROM postgres:9.6
18 18
19   -ADD install-schema.sh /install-schema.sh
  19 +dpkg -i /thingsboard.deb
20 20
21   -RUN apt-get update \
22   - && apt-get install -y nmap \
23   - && chmod +x /install-schema.sh
  21 +until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open"
  22 +do
  23 + echo "Wait for cassandra db to start..."
  24 + sleep 10
  25 +done
24 26
25   -ADD schema.sql /schema.sql
26   -ADD system-data.sql /system-data.sql
27   -ADD demo-data.sql /demo-data.sql
\ No newline at end of file
  27 +echo "Creating 'Thingsboard' schema and system data..."
  28 +if [ "$ADD_DEMO_DATA" == "true" ]; then
  29 + echo "plus demo data..."
  30 + /usr/share/thingsboard/bin/install/install.sh --loadDemo
  31 +elif [ "$ADD_DEMO_DATA" == "false" ]; then
  32 + /usr/share/thingsboard/bin/install/install.sh
  33 +fi
... ...
... ... @@ -7,4 +7,4 @@ build:
7 7
8 8 push: build
9 9 docker push ${PROJECT}/${APP}:${VERSION}
10   - docker push ${PROJECT}/${APP}:latest
  10 + docker push ${PROJECT}/${APP}:latest
... ...
... ... @@ -25,15 +25,12 @@ services:
25 25 - "5683:5683/udp"
26 26 env_file:
27 27 - tb.env
28   - entrypoint: /run-application.sh
29   - tb-cassandra-schema:
30   - image: "thingsboard/tb-cassandra-schema:1.2.4"
31 28 environment:
32   - - CREATE_SCHEMA=${CREATE_SCHEMA}
33   - - ADD_SYSTEM_DATA=${ADD_SYSTEM_DATA}
  29 + - ADD_SCHEMA_AND_SYSTEM_DATA=${ADD_SCHEMA_AND_SYSTEM_DATA}
34 30 - ADD_DEMO_DATA=${ADD_DEMO_DATA}
35   - - CASSANDRA_URL=${CASSANDRA_URL}
36   - entrypoint: /install-schema.sh
  31 + volumes:
  32 + - "${HSQLDB_DATA_DIR}:/usr/share/thingsboard/data/sql"
  33 + entrypoint: /run-application.sh
37 34 cassandra:
38 35 image: "cassandra:3.9"
39 36 ports:
... ... @@ -52,18 +49,5 @@ services:
52 49 - "5432"
53 50 environment:
54 51 - POSTGRES_DB=${POSTGRES_DB}
55   - - POSTGRES_USER=${POSTGRES_USER}
56   - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
57 52 volumes:
58 53 - "${POSTGRES_DATA_DIR}:/var/lib/postgresql/data"
59   - tb-postgres-schema:
60   - image: "thingsboard/tb-postgres-schema:1.2.4"
61   - environment:
62   - - POSTGRES_URL=${POSTGRES_URL}
63   - - POSTGRES_DB=${POSTGRES_DB}
64   - - POSTGRES_USER=${POSTGRES_USER}
65   - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
66   - - CREATE_SCHEMA=${CREATE_SCHEMA}
67   - - ADD_SYSTEM_DATA=${ADD_SYSTEM_DATA}
68   - - ADD_DEMO_DATA=${ADD_DEMO_DATA}
69   - entrypoint: /install-schema.sh
\ No newline at end of file
... ...
docker/k8s/cassandra-setup.yaml renamed from docker/tb-cassandra-schema/tb-cassandra-schema.yaml
... ... @@ -17,23 +17,23 @@
17 17 apiVersion: v1
18 18 kind: Pod
19 19 metadata:
20   - name: tb-cassandra-schema
  20 + name: cassandra-setup
21 21 spec:
22 22 containers:
23   - - name: tb-cassandra-schema
  23 + - name: cassandra-setup
24 24 imagePullPolicy: Always
25   - image: thingsboard/tb-cassandra-schema:1.2.4
  25 + image: thingsboard/cassandra-setup:1.2.4
26 26 env:
27   - - name: CREATE_SCHEMA
  27 + - name: ADD_DEMO_DATA
28 28 value: "true"
29   - - name: ADD_SYSTEM_DATA
30   - value: "true"
31   - - name : ADD_DEMO_DATA
32   - value: "true"
33   - - name : CASSANDRA_URL
  29 + - name : CASSANDRA_HOST
34 30 value: "cassandra-headless"
  31 + - name : CASSANDRA_PORT
  32 + value: "9042"
  33 + - name : DATABASE_TYPE
  34 + value: "cassandra"
35 35 command:
36 36 - sh
37 37 - -c
38   - - /install-schema.sh
39   - restartPolicy: Never
\ No newline at end of file
  38 + - /install.sh
  39 + restartPolicy: Never
... ...
docker/k8s/cassandra.yaml renamed from docker/cassandra/cassandra.yaml
docker/k8s/common.yaml renamed from docker/common/common.yaml
docker/k8s/tb.yaml renamed from docker/tb/tb.yaml
... ... @@ -50,7 +50,9 @@ metadata:
50 50 data:
51 51 zookeeper.enabled: "true"
52 52 zookeeper.url: "zk-headless"
53   - cassandra.url: "cassandra-headless:9042"
  53 + cassandra.host: "cassandra-headless"
  54 + cassandra.port: "9042"
  55 + database.type: "cassandra"
54 56 ---
55 57 apiVersion: apps/v1beta1
56 58 kind: StatefulSet
... ... @@ -100,11 +102,21 @@ spec:
100 102 configMapKeyRef:
101 103 name: tb-config
102 104 key: zookeeper.url
103   - - name : CASSANDRA_URL
  105 + - name : CASSANDRA_HOST
104 106 valueFrom:
105 107 configMapKeyRef:
106 108 name: tb-config
107   - key: cassandra.url
  109 + key: cassandra.host
  110 + - name : CASSANDRA_PORT
  111 + valueFrom:
  112 + configMapKeyRef:
  113 + name: tb-config
  114 + key: cassandra.port
  115 + - name: DATABASE_TYPE
  116 + valueFrom:
  117 + configMapKeyRef:
  118 + name: tb-config
  119 + key: database.type
108 120 - name : RPC_HOST
109 121 valueFrom:
110 122 fieldRef:
... ...
docker/k8s/zookeeper.yaml renamed from docker/zookeeper/zookeeper.yaml
1   -#!/bin/bash
2   -#
3   -# Copyright © 2016-2017 The Thingsboard Authors
4   -#
5   -# Licensed under the Apache License, Version 2.0 (the "License");
6   -# you may not use this file except in compliance with the License.
7   -# You may obtain a copy of the License at
8   -#
9   -# http://www.apache.org/licenses/LICENSE-2.0
10   -#
11   -# Unless required by applicable law or agreed to in writing, software
12   -# distributed under the License is distributed on an "AS IS" BASIS,
13   -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   -# See the License for the specific language governing permissions and
15   -# limitations under the License.
16   -#
17   -
18   -
19   -until nmap $CASSANDRA_URL -p 9042 | grep "9042/tcp open"
20   -do
21   - echo "Wait for $CASSANDRA_URL..."
22   - sleep 10
23   -done
24   -
25   -if [ "$CREATE_SCHEMA" == "true" ]; then
26   - echo "Creating 'Thingsboard' keyspace..."
27   - cqlsh $CASSANDRA_URL -f /schema.cql
28   - if [ "$?" -eq 0 ]; then
29   - echo "'Thingsboard' keyspace was successfully created!"
30   - else
31   - echo "There were issues while creating 'Thingsboard' keyspace!"
32   - fi
33   -fi
34   -
35   -if [ "$ADD_SYSTEM_DATA" == "true" ]; then
36   - echo "Adding system data..."
37   - cqlsh $CASSANDRA_URL -f /system-data.cql
38   - if [ "$?" -eq 0 ]; then
39   - echo "System data was successfully added!"
40   - else
41   - echo "There were issues while adding System data!"
42   - fi
43   -fi
44   -
45   -if [ "$ADD_DEMO_DATA" == "true" ]; then
46   - echo "Adding demo data..."
47   - cqlsh $CASSANDRA_URL -f /demo-data.cql
48   - if [ "$?" -eq 0 ]; then
49   - echo "Demo data was successfully added!"
50   - else
51   - echo "There were issues while adding Demo data!"
52   - fi
53   -fi
1   -VERSION=1.2.4
2   -PROJECT=thingsboard
3   -APP=tb-postgres-schema
4   -
5   -build:
6   - cp ../../dao/src/main/resources/postgres/schema.sql .
7   - cp ../../dao/src/main/resources/postgres/demo-data.sql .
8   - cp ../../dao/src/main/resources/postgres/system-data.sql .
9   - docker build --pull -t ${PROJECT}/${APP}:${VERSION} -t ${PROJECT}/${APP}:latest .
10   - rm schema.sql demo-data.sql system-data.sql
11   -
12   -push: build
13   - docker push ${PROJECT}/${APP}:${VERSION}
14   - docker push ${PROJECT}/${APP}:latest
1   -#!/bin/bash
2   -#
3   -# Copyright © 2016-2017 The Thingsboard Authors
4   -#
5   -# Licensed under the Apache License, Version 2.0 (the "License");
6   -# you may not use this file except in compliance with the License.
7   -# You may obtain a copy of the License at
8   -#
9   -# http://www.apache.org/licenses/LICENSE-2.0
10   -#
11   -# Unless required by applicable law or agreed to in writing, software
12   -# distributed under the License is distributed on an "AS IS" BASIS,
13   -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   -# See the License for the specific language governing permissions and
15   -# limitations under the License.
16   -#
17   -
18   -until nmap $POSTGRES_URL -p 5432 | grep "5432/tcp open"
19   -do
20   - echo "Waiting for $POSTGRES_URL..."
21   - sleep 10
22   -done
23   -
24   -if [ "$CREATE_SCHEMA" == "true" ]; then
25   - echo "Creating 'Thingsboard' database schema..."
26   - PGPASSWORD="$POSTGRES_PASSWORD" psql -h "$POSTGRES_URL" -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f /schema.sql
27   - if [ "$?" -eq 0 ]; then
28   - echo "'Thingsboard' database schema was successfully created!"
29   - else
30   - echo "There were issues while creating 'Thingsboard' database schema!"
31   - fi
32   -fi
33   -
34   -if [ "$ADD_SYSTEM_DATA" == "true" ]; then
35   - echo "Adding system data..."
36   - PGPASSWORD="$POSTGRES_PASSWORD" psql -h "$POSTGRES_URL" -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f /system-data.sql
37   - if [ "$?" -eq 0 ]; then
38   - echo "System data was successfully added!"
39   - else
40   - echo "There were issues while adding System data!"
41   - fi
42   -fi
43   -
44   -if [ "$ADD_DEMO_DATA" == "true" ]; then
45   - echo "Adding demo data..."
46   - PGPASSWORD="$POSTGRES_PASSWORD" psql -h "$POSTGRES_URL" -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f /demo-data.sql
47   - if [ "$?" -eq 0 ]; then
48   - echo "Demo data was successfully added!"
49   - else
50   - echo "There were issues while adding Demo data!"
51   - fi
52   -fi
1 1 #Thingsboard server configuration
2   -
3   -TB_CASSANDRA_SCHEMA_URL=tb-cassandra-schema
4   -CASSANDRA_URL=cassandra:9042
5   -ZOOKEEPER_URL=zk:2181
6 2 MQTT_BIND_ADDRESS=0.0.0.0
7 3 MQTT_BIND_PORT=1883
8 4 COAP_BIND_ADDRESS=0.0.0.0
9   -COAP_BIND_PORT=5683
\ No newline at end of file
  5 +COAP_BIND_PORT=5683
  6 +
  7 +# zk config
  8 +ZOOKEEPER_URL=zk:2181
  9 +
  10 +# type of database to use: sql[DEFAULT] or cassandra
  11 +DATABASE_TYPE=cassandra
  12 +
  13 +# cassandra db config
  14 +CASSANDRA_HOST=cassandra
  15 +CASSANDRA_PORT=9042
  16 +
  17 +# postgres db config
  18 +# SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
  19 +# SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
  20 +# SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard
  21 +# SPRING_DATASOURCE_USERNAME=postgres
  22 +# SPRING_DATASOURCE_PASSWORD=postgres
... ...
... ... @@ -19,4 +19,6 @@ FROM openjdk:8-jre
19 19 ADD run-application.sh /run-application.sh
20 20 ADD thingsboard.deb /thingsboard.deb
21 21
22   -RUN chmod +x /run-application.sh
  22 +RUN apt-get update \
  23 + && apt-get install -y nmap \
  24 + && chmod +x /run-application.sh
... ...
... ... @@ -9,4 +9,4 @@ build:
9 9
10 10 push: build
11 11 docker push ${PROJECT}/${APP}:${VERSION}
12   - docker push ${PROJECT}/${APP}:latest
  12 + docker push ${PROJECT}/${APP}:latest
... ...
... ... @@ -18,18 +18,34 @@
18 18
19 19 dpkg -i /thingsboard.deb
20 20
21   -reachable=0
22   -while [ $reachable -eq 0 ];
23   -do
24   - echo "$TB_CASSANDRA_SCHEMA_URL container is still in progress. waiting until it completed..."
25   - sleep 3
26   - ping -q -c 1 $TB_CASSANDRA_SCHEMA_URL > /dev/null 2>&1
27   - if [ "$?" -ne 0 ];
28   - then
29   - echo "$TB_CASSANDRA_SCHEMA_URL container completed!"
30   - reachable=1
31   - fi
32   -done
  21 +if [ "$DATABASE_TYPE" == "cassandra" ]; then
  22 + until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open"
  23 + do
  24 + echo "Wait for cassandra db to start..."
  25 + sleep 10
  26 + done
  27 +fi
  28 +
  29 +if [ "$DATABASE_TYPE" == "sql" ]; then
  30 + if [ "$SPRING_DRIVER_CLASS_NAME" == "org.postgresql.Driver" ]; then
  31 + until nmap postgres -p 5432 | grep "5432/tcp open"
  32 + do
  33 + echo "Waiting for postgres db to start..."
  34 + sleep 10
  35 + done
  36 + fi
  37 +fi
  38 +
  39 +if [ "$ADD_SCHEMA_AND_SYSTEM_DATA" == "true" ]; then
  40 + echo "Creating 'Thingsboard' schema and system data..."
  41 + if [ "$ADD_DEMO_DATA" == "true" ]; then
  42 + echo "plus demo data..."
  43 + /usr/share/thingsboard/bin/install/install.sh --loadDemo
  44 + elif [ "$ADD_DEMO_DATA" == "false" ]; then
  45 + /usr/share/thingsboard/bin/install/install.sh
  46 + fi
  47 +fi
  48 +
33 49
34 50 # Copying env variables into conf files
35 51 printenv | awk -F "=" '{print "export " $1 "='\''" $2 "'\''"}' >> /usr/share/thingsboard/conf/thingsboard.conf
... ...