From bbfb94d93ed42343fa95923b3fd3e83a0316db87 Mon Sep 17 00:00:00 2001 From: "Ralf S. Engelschall" Date: Sun, 3 Jun 2018 00:58:05 +0200 Subject: [PATCH] add PostgreSQL store option to package --- .../nats-streaming-server.conf | 9 +++- .../nats-streaming-server.spec | 49 +++++++++++++++++-- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/nats-streaming-server/nats-streaming-server.conf b/nats-streaming-server/nats-streaming-server.conf index a29bd02704..02e928784e 100644 --- a/nats-streaming-server/nats-streaming-server.conf +++ b/nats-streaming-server/nats-streaming-server.conf @@ -4,7 +4,7 @@ id: "node1" -store: "file" +store: "@store@" dir: "@l_prefix@/var/nats-streaming-server/data/store" debug: true @@ -45,6 +45,13 @@ file { slice_max_age: "24h" } +sql { + driver: "postgres" + source: "postgresql://nats:nats@127.0.0.1:5432/nats?sslmode=disable" + no_caching: true + max_open_conns: 16 +} + # cluster { # node_id: "node1" # peers: [ "node2", "node3" ] diff --git a/nats-streaming-server/nats-streaming-server.spec b/nats-streaming-server/nats-streaming-server.spec index 3b05ef146b..8f40b18533 100644 --- a/nats-streaming-server/nats-streaming-server.spec +++ b/nats-streaming-server/nats-streaming-server.spec @@ -36,16 +36,23 @@ Class: EVAL Group: Networking License: Apache Version: %{V_nats_streaming_server_base}.%{V_nats_streaming_server_snap} -Release: 20180602 +Release: 20180603 + +# package options +%option with_pgsql no # list of sources Source0: http://download.openpkg.org/components/versioned/nats/nats-streaming-server-%{V_nats_streaming_server_snap}.tar.xz Source1: rc.nats-streaming-server Source2: nats-streaming-server.conf +Source3: nats-streaming-server-setup.sh # build information BuildPreReq: OpenPKG, openpkg >= 20160101, go PreReq: OpenPKG, openpkg >= 20160101, nats-server +%if "%{with_pgsql}" == "yes" +PreReq: postgresql +%endif %description NATS is an open source, lightweight, high-performance cloud native @@ -84,6 +91,10 @@ PreReq: OpenPKG, openpkg >= 20160101, nats-server $RPM_BUILD_ROOT%{l_prefix}/sbin \ $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ $RPM_BUILD_ROOT%{l_prefix}/etc/nats-streaming-server \ +%if "%{with_pgsql}" == "yes" + $RPM_BUILD_ROOT%{l_prefix}/share/nats-streaming-server \ + $RPM_BUILD_ROOT%{l_prefix}/var/nats-streaming-server/data/db \ +%endif $RPM_BUILD_ROOT%{l_prefix}/var/nats-streaming-server/data/store \ $RPM_BUILD_ROOT%{l_prefix}/var/nats-streaming-server/data/raft \ $RPM_BUILD_ROOT%{l_prefix}/var/nats-streaming-server/run \ @@ -96,13 +107,30 @@ PreReq: OpenPKG, openpkg >= 20160101, nats-server # install run-command script %{l_shtool} install -c -m 755 %{l_value -s -a} \ - %{SOURCE rc.nats-streaming-server} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + %{SOURCE rc.nats-streaming-server} \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ # install default configuration +%if "%{with_pgsql}" == "yes" + store="sql" +%else + store="file" +%endif %{l_shtool} install -c -m 644 %{l_value -s -a} \ + -e "s;@store@;$store;g" \ %{SOURCE nats-streaming-server.conf} \ $RPM_BUILD_ROOT%{l_prefix}/etc/nats-streaming-server/ +%if "%{with_pgsql}" == "yes" + # install PostgreSQL schema definition and setup script + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE nats-streaming-server-setup.sh} \ + $RPM_BUILD_ROOT%{l_prefix}/sbin/nats-streaming-server-setup + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + src/github.com/nats-io/nats-streaming-server/postgres.db.sql \ + $RPM_BUILD_ROOT%{l_prefix}/share/nats-streaming-server/postgresql.sql +%endif + # determine installation files %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ %{l_files_std} \ @@ -115,6 +143,16 @@ PreReq: OpenPKG, openpkg >= 20160101, nats-server %clean %post +%if "%{with_pgsql}" == "yes" + if [ $1 -eq 1 ]; then + # display final hints on initial installation + ( echo "To complete this installation of NATS Streaming Server with" + echo "PostgreSQL support, initialize the database like this:" + echo " \$ $RPM_INSTALL_PREFIX/bin/openpkg rc postgresql start" + echo " \$ $RPM_INSTALL_PREFIX/sbin/nats-streaming-server-setup install" + ) | %{l_rpmtool} msg -b -t notice + fi +%endif if [ $1 -eq 2 ]; then # after upgrade, restart service eval `%{l_rc} nats-streaming-server status 2>/dev/null` @@ -126,9 +164,10 @@ PreReq: OpenPKG, openpkg >= 20160101, nats-server if [ $1 -eq 0 ]; then # before erase, stop service and remove log files %{l_rc} nats-streaming-server stop 2>/dev/null - rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/data/*/* >/dev/null 2>&1 || true - rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/log/* >/dev/null 2>&1 || true - rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/run/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/data/store/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/data/raft/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/log/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/run/* >/dev/null 2>&1 || true fi exit 0