From e62bf8fc1ad15ee0bb88e05fb4e85beb01bc9684 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Sat, 15 Aug 2020 16:44:17 +0800 Subject: [PATCH] add taoswrapper and install hook. now it works. --- snap/hooks/install | 17 +++++++++++++++ snap/local/launcher.sh | 6 +++++- snap/local/taoswrapper.sh | 25 ++++++++++++++++++++++ snap/snapcraft.yaml | 45 +++++++++++++++++++++++++++++++++------ 4 files changed, 86 insertions(+), 7 deletions(-) create mode 100755 snap/hooks/install create mode 100755 snap/local/taoswrapper.sh diff --git a/snap/hooks/install b/snap/hooks/install new file mode 100755 index 0000000000..e58918d2c3 --- /dev/null +++ b/snap/hooks/install @@ -0,0 +1,17 @@ +#!/bin/sh + +if [ ! -d /var/lib/taos ]; then + mkdir -p /var/lib/taos +fi + +if [ ! -d /var/log/taos ]; then + mkdir -p -m777 /var/log/taos +fi + +if [ ! -d /etc/taos ]; then + mkdir -p /etc/taos +fi + +if [ ! -f /etc/taos/taos.cfg ]; then + cp $SNAP/etc/taos/taos.cfg /etc/taos/taos.cfg +fi diff --git a/snap/local/launcher.sh b/snap/local/launcher.sh index 5986114931..52b3e4ce5c 100755 --- a/snap/local/launcher.sh +++ b/snap/local/launcher.sh @@ -15,7 +15,11 @@ case "$SNAP_USER_COMMON" in *) COMMON=$SNAP_USER_COMMON ;; esac -CONFIG_FILE="$SNAP/etc/taos" +if [ -d /etc/taos ]; then + CONFIG_FILE="/etc/taos" +else + CONFIG_FILE="$SNAP/etc/taos" +fi # Launch the snap $SNAP/usr/bin/taosd -c $CONFIG_FILE $@ diff --git a/snap/local/taoswrapper.sh b/snap/local/taoswrapper.sh new file mode 100755 index 0000000000..c7e5c1b856 --- /dev/null +++ b/snap/local/taoswrapper.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# Wrapper to check for custom config in $SNAP_USER_COMMON or $SNAP_COMMON and +# use it otherwise fall back to the included basic config which will at least +# allow mosquitto to run and do something. +# This script will also copy the full example config in to SNAP_USER_COMMON or +# SNAP_COMMON so that people can refer to it. +# +# The decision about whether to use SNAP_USER_COMMON or SNAP_COMMON is taken +# based on the user that runs the command. If the user is root, it is assumed +# that mosquitto is being run as a system daemon, and SNAP_COMMON will be used. +# If a non-root user runs the command, then SNAP_USER_COMMON will be used. + +case "$SNAP_USER_COMMON" in + */root/snap/tdengine/common*) COMMON=$SNAP_COMMON ;; + *) COMMON=$SNAP_USER_COMMON ;; +esac + +if [ -d /etc/taos ]; then + CONFIG_FILE="/etc/taos" +else + CONFIG_FILE="$SNAP/etc/taos" +fi + +# Launch the snap +$SNAP/usr/bin/taos -c $CONFIG_FILE $@ diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index dfa68a9347..b49298e828 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,7 +1,7 @@ name: tdengine base: core18 # the base snap is the execution environment for this snap version: '2.0.0.6' # just for humans, typically '1.2+git' or '1.3.2' -summary: Single-line elevator pitch for your amazing snap # 79 char long summary +summary: an open-source big data platform designed and optimized for IoT. description: | TDengine is an open-source big data platform designed and optimized for Internet of Things (IoT), Connected Vehicles, and Industrial IoT. Besides the 10x faster time-series database, it provides caching, stream computing, message queuing and other functionalities to reduce the complexity and costs of development and operations. @@ -16,19 +16,25 @@ apps: plugs: - network - network-bind + - system-observe - systemfiles taos: - command: usr/bin/taos + command: taoswrapper.sh plugs: - network - systemfiles + taosdemo: + command: usr/bin/taosdemo + plugs: + - network + plugs: systemfiles: interface: system-files read: - - /etc/taos + - /etc - /var/lib/taos - /tmp write: @@ -42,6 +48,7 @@ parts: source: snap/local/ prime: - launcher.sh + - taoswrapper.sh tdengine: source: . @@ -57,12 +64,21 @@ parts: if [ ! -d $SNAPCRAFT_STAGE/usr ]; then mkdir $SNAPCRAFT_STAGE/usr fi + if [ ! -d $SNAPCRAFT_STAGE/etc/taos ]; then mkdir -p $SNAPCRAFT_STAGE/etc/taos fi + cp $SNAPCRAFT_PART_BUILD/build/* -rf $SNAPCRAFT_STAGE/usr/ cp $SNAPCRAFT_PART_SRC/packaging/cfg/taos.cfg -rf $SNAPCRAFT_STAGE/etc/taos/ + if [ ! -d $SNAPCRAFT_STAGE/var/lib/taos ]; then + mkdir -p $SNAPCRAFT_STAGE/var/lib/taos + fi + if [ ! -d $SNAPCRAFT_STAGE/var/log/taos ]; then + mkdir -p $SNAPCRAFT_STAGE/var/log/taos + fi + prime: - etc/taos/taos.cfg - usr/bin/taosd @@ -72,7 +88,24 @@ parts: - usr/lib/libtaos.so.1 - usr/lib/libtaos.so + override-prime: | + snapcraftctl prime + if [ ! -d $SNAPCRAFT_STAGE/var/lib/taos ]; then + cp -rf $SNAPCRAFT_STAGE/var/lib/taos $SNAPCRAFT_PRIME + fi + if [ ! -d $SNAPCRAFT_STAGE/var/log/taos ]; then + cp -rf $SNAPCRAFT_STAGE/var/log/taos $SNAPCRAFT_PRIME + fi + +layout: + /var/lib/taos: + bind: $SNAP_DATA/var/lib/taos + /var/log/taos: + bind: $SNAP_DATA/var/log/taos + /etc/taos/taos.cfg: + bind-file: $SNAP_DATA/etc/taos/taos.cfg + - #layout: - # usr/bin/taosd: - #bind-file: debug/build/bin/taosd +hooks: + install: + plugs: [systemfiles] -- GitLab