thingsboard-memoizeit
Changes
application/build.gradle 15(+15 -0)
application/pom.xml 29(+28 -1)
application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java 3(+2 -1)
Details
application/build.gradle 15(+15 -0)
diff --git a/application/build.gradle b/application/build.gradle
index 25ad51d..1d8a526 100644
--- a/application/build.gradle
+++ b/application/build.gradle
@@ -57,6 +57,21 @@ ospackage {
into "bin"
}
+ // Copy the install files
+ from("target/bin/install/install.sh") {
+ fileMode 0775
+ into "bin/install"
+ }
+
+ from("target/bin/install/upgrade.sh") {
+ fileMode 0775
+ into "bin/install"
+ }
+
+ from("target/bin/install/logback.xml") {
+ into "bin/install"
+ }
+
// Copy the config files
from("target/conf") {
exclude "${pkgName}.conf"
application/pom.xml 29(+28 -1)
diff --git a/application/pom.xml b/application/pom.xml
index 7465109..4241b66 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -376,6 +376,29 @@
</configuration>
</execution>
<execution>
+ <id>copy-install</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/bin/install</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/scripts/install</directory>
+ <includes>
+ <include>**/*.sh</include>
+ <include>**/*.xml</include>
+ </includes>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ <filters>
+ <filter>src/main/filters/unix.properties</filter>
+ </filters>
+ </configuration>
+ </execution>
+ <execution>
<id>copy-windows-control</id>
<phase>process-resources</phase>
<goals>
@@ -395,7 +418,7 @@
</configuration>
</execution>
<execution>
- <id>copy-data-cql</id>
+ <id>copy-data</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
@@ -404,9 +427,13 @@
<outputDirectory>${project.build.directory}/data</outputDirectory>
<resources>
<resource>
+ <directory>src/main/data</directory>
+ </resource>
+ <resource>
<directory>../dao/src/main/resources</directory>
<includes>
<include>**/*.cql</include>
+ <include>**/*.sql</include>
</includes>
<filtering>false</filtering>
</resource>
diff --git a/application/src/main/data/upgrade/1.3.0/schema_update.cql b/application/src/main/data/upgrade/1.3.0/schema_update.cql
index 4e59577..4070614 100644
--- a/application/src/main/data/upgrade/1.3.0/schema_update.cql
+++ b/application/src/main/data/upgrade/1.3.0/schema_update.cql
@@ -1,3 +1,19 @@
+--
+-- 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.
+--
+
DROP MATERIALIZED VIEW IF EXISTS thingsboard.device_by_tenant_and_name;
DROP MATERIALIZED VIEW IF EXISTS thingsboard.device_by_tenant_and_search_text;
DROP MATERIALIZED VIEW IF EXISTS thingsboard.device_by_tenant_by_type_and_search_text;
diff --git a/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java b/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
index 52d5998..61b3e8a 100644
--- a/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
+++ b/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
@@ -39,7 +39,7 @@ public class ThingsboardInstallService {
@Value("${install.upgrade:false}")
private Boolean isUpgrade;
- @Value("${install.upgrade.form_version:1.2.3}")
+ @Value("${install.upgrade.from_version:1.2.3}")
private String upgradeFromVersion;
@Value("${install.data_dir}")
diff --git a/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java
index ea18b92..eaef0e4 100644
--- a/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java
+++ b/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseSchemaService.java
@@ -35,6 +35,7 @@ import java.util.List;
@Slf4j
public class CassandraDatabaseSchemaService implements DatabaseSchemaService {
+ private static final String CASSANDRA_DIR = "cassandra";
private static final String SCHEMA_CQL = "schema.cql";
@Value("${install.data_dir}")
@@ -47,7 +48,7 @@ public class CassandraDatabaseSchemaService implements DatabaseSchemaService {
public void createDatabaseSchema() throws Exception {
log.info("Installing Cassandra DataBase schema...");
- Path schemaFile = Paths.get(this.dataDir, SCHEMA_CQL);
+ Path schemaFile = Paths.get(this.dataDir, CASSANDRA_DIR, SCHEMA_CQL);
loadCql(schemaFile);
}
diff --git a/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseSchemaService.java
index fc92de8..9d22776 100644
--- a/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseSchemaService.java
+++ b/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseSchemaService.java
@@ -22,20 +22,44 @@ import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;
import org.thingsboard.server.dao.util.SqlDao;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
@Service
@Profile("install")
@Slf4j
@SqlDao
public class SqlDatabaseSchemaService implements DatabaseSchemaService {
+ private static final String SQL_DIR = "sql";
+ private static final String SCHEMA_SQL = "schema.sql";
+
@Value("${install.data_dir}")
private String dataDir;
+ @Value("${spring.datasource.url}")
+ private String dbUrl;
+
+ @Value("${spring.datasource.username}")
+ private String dbUserName;
+
+ @Value("${spring.datasource.password}")
+ private String dbPassword;
+
@Override
public void createDatabaseSchema() throws Exception {
log.info("Installing SQL DataBase schema...");
- //TODO:
+
+ Path schemaFile = Paths.get(this.dataDir, SQL_DIR, SCHEMA_SQL);
+ try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) {
+ String sql = new String(Files.readAllBytes(schemaFile), Charset.forName("UTF-8"));
+ conn.createStatement().execute(sql);
+ }
}
diff --git a/application/src/main/scripts/install/install.sh b/application/src/main/scripts/install/install.sh
new file mode 100755
index 0000000..be96363
--- /dev/null
+++ b/application/src/main/scripts/install/install.sh
@@ -0,0 +1,63 @@
+#!/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.
+#
+
+while [[ $# -gt 0 ]]
+do
+key="$1"
+
+case $key in
+ --loadDemo)
+ LOAD_DEMO=true
+ shift # past argument
+ ;;
+ *)
+ # unknown option
+ ;;
+esac
+shift # past argument or value
+done
+
+if [ "$LOAD_DEMO" == "true" ]; then
+ loadDemo=true
+else
+ loadDemo=false
+fi
+
+CONF_FOLDER=${pkg.installFolder}/conf
+configfile=${pkg.name}.conf
+jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
+installDir=${pkg.installFolder}/data
+
+source "${CONF_FOLDER}/${configfile}"
+
+run_user=${pkg.name}
+
+su -s /bin/sh -c "java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardInstallApplication \
+ -Dinstall.data_dir=${installDir} \
+ -Dinstall.load_demo=${loadDemo} \
+ -Dspring.jpa.hibernate.ddl-auto=none \
+ -Dinstall.upgrade=false \
+ -Dlogging.config=${pkg.installFolder}/bin/install/logback.xml \
+ org.springframework.boot.loader.PropertiesLauncher" "$run_user"
+
+if [ $? -ne 0 ]; then
+ echo "ThingsBoard installation failed!"
+else
+ echo "ThingsBoard installed successfully!"
+fi
+
+exit $?
diff --git a/application/src/main/scripts/install/logback.xml b/application/src/main/scripts/install/logback.xml
new file mode 100644
index 0000000..aadd92f
--- /dev/null
+++ b/application/src/main/scripts/install/logback.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+ 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.
+
+-->
+<!DOCTYPE configuration>
+<configuration>
+
+ <appender name="fileLogAppender"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${pkg.logFolder}/install.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <fileNamePattern>${pkg.logFolder}/install.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+ <maxFileSize>100MB</maxFileSize>
+ <maxHistory>30</maxHistory>
+ <totalSizeCap>3GB</totalSizeCap>
+ </rollingPolicy>
+ <encoder>
+ <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>%msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <logger name="org.thingsboard.server.install" level="INFO">
+ <appender-ref ref="STDOUT" />
+ </logger>
+
+ <logger name="org.thingsboard.server.service.install" level="INFO">
+ <appender-ref ref="STDOUT" />
+ </logger>
+
+ <logger name="org.thingsboard.server" level="INFO" />
+ <logger name="akka" level="INFO" />
+
+ <root level="INFO">
+ <appender-ref ref="fileLogAppender"/>
+ </root>
+
+</configuration>
diff --git a/application/src/main/scripts/install/upgrade.sh b/application/src/main/scripts/install/upgrade.sh
new file mode 100755
index 0000000..b40c3bb
--- /dev/null
+++ b/application/src/main/scripts/install/upgrade.sh
@@ -0,0 +1,62 @@
+#!/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.
+#
+
+for i in "$@"
+do
+case $i in
+ --fromVersion=*)
+ FROM_VERSION="${i#*=}"
+ shift
+ ;;
+ *)
+ # unknown option
+ ;;
+esac
+done
+
+if [[ -z "${FROM_VERSION// }" ]]; then
+ echo "--fromVersion parameter is invalid or unspecified!"
+ echo "Usage: upgrade.sh --fromVersion={VERSION}"
+ exit 1
+else
+ fromVersion="${FROM_VERSION// }"
+fi
+
+CONF_FOLDER=${pkg.installFolder}/conf
+configfile=${pkg.name}.conf
+jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
+installDir=${pkg.installFolder}/data
+
+source "${CONF_FOLDER}/${configfile}"
+
+run_user=${pkg.name}
+
+su -s /bin/sh -c "java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardInstallApplication \
+ -Dinstall.data_dir=${installDir} \
+ -Dspring.jpa.hibernate.ddl-auto=none \
+ -Dinstall.upgrade=true \
+ -Dinstall.upgrade.from_version=${fromVersion} \
+ -Dlogging.config=${pkg.installFolder}/bin/install/logback.xml \
+ org.springframework.boot.loader.PropertiesLauncher" "$run_user"
+
+if [ $? -ne 0 ]; then
+ echo "ThingsBoard upgrade failed!"
+else
+ echo "ThingsBoard upgraded successfully!"
+fi
+
+exit $?