From 4e87b07d38074d751571e957b64c6bda9fad7e94 Mon Sep 17 00:00:00 2001 From: John Ahlroos Date: Sun, 27 May 2018 20:06:09 +0300 Subject: [PATCH] Add docker support --- build.gradle | 9 +- .../groovy/com/devsoap/dbt/DBTModule.groovy | 4 +- .../dbt/actions/ExecutorChainAction.groovy | 6 +- .../dbt/actions/LedgerChainAction.groovy | 6 +- .../devsoap/dbt/config/ExecutorConfig.groovy | 1 + .../devsoap/dbt/config/LedgerConfig.groovy | 1 + .../dbt/handlers/ExecutorHandler.groovy | 49 +++++---- docker-compose.yml | 13 +++ docker-executor/build.gradle | 22 ++++ docker-executor/src/ratpack/Ratpack.groovy | 24 +++++ docker-ledger/Ratpack.groovy | 16 +++ docker-ledger/build.gradle | 22 ++++ docker-ledger/src/ratpack/Ratpack.groovy | 24 +++++ gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 54413 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 100 ++++++++++-------- gradlew.bat | 14 +-- settings.gradle | 4 + 18 files changed, 234 insertions(+), 84 deletions(-) create mode 100644 docker-compose.yml create mode 100644 docker-executor/build.gradle create mode 100644 docker-executor/src/ratpack/Ratpack.groovy create mode 100644 docker-ledger/Ratpack.groovy create mode 100644 docker-ledger/build.gradle create mode 100644 docker-ledger/src/ratpack/Ratpack.groovy diff --git a/build.gradle b/build.gradle index 28e9640..0d7c939 100644 --- a/build.gradle +++ b/build.gradle @@ -4,14 +4,15 @@ buildscript { } dependencies { classpath "io.ratpack:ratpack-gradle:1.5.1" + classpath 'se.transmode.gradle:gradle-docker:1.2' } } plugins { id 'idea' id 'groovy' - id "io.ratpack.ratpack-groovy" version "1.5.1" - id "org.flywaydb.flyway" version "5.0.7" + id "io.ratpack.ratpack-groovy" version "1.5.1" apply false + id "org.flywaydb.flyway" version "5.0.7" apply false } allprojects { @@ -21,3 +22,7 @@ allprojects { jcenter() } } + +task wrapper(type: Wrapper) { + gradleVersion = '4.7' +} \ No newline at end of file diff --git a/dbt-core/src/main/groovy/com/devsoap/dbt/DBTModule.groovy b/dbt-core/src/main/groovy/com/devsoap/dbt/DBTModule.groovy index ebfe2b5..6079c20 100644 --- a/dbt-core/src/main/groovy/com/devsoap/dbt/DBTModule.groovy +++ b/dbt-core/src/main/groovy/com/devsoap/dbt/DBTModule.groovy @@ -27,6 +27,7 @@ import com.devsoap.dbt.services.LedgerService import com.devsoap.dbt.services.TransactionManagerService import com.fasterxml.jackson.databind.ObjectMapper import com.google.inject.multibindings.Multibinder +import groovy.json.JsonBuilder import groovy.util.logging.Slf4j import ratpack.guice.ConfigurableModule import ratpack.handling.HandlerDecorator @@ -48,7 +49,6 @@ class DBTModule extends ConfigurableModule { bind(ExecutorHandler) bind(LedgerData) - bind(LedgerService) bind(TransactionManagerService) @@ -70,7 +70,7 @@ class DBTModule extends ConfigurableModule { config.executor.remoteUrl = "http://localhost:${serverConfig.port}/${config.executor.path}" } if(!config.ledger.remoteUrl) { - config.executor.remoteUrl = "http://localhost:${serverConfig.port}/${config.ledger.path}" + config.ledger.remoteUrl = "http://localhost:${serverConfig.port}/${config.ledger.path}" } } } \ No newline at end of file diff --git a/dbt-core/src/main/groovy/com/devsoap/dbt/actions/ExecutorChainAction.groovy b/dbt-core/src/main/groovy/com/devsoap/dbt/actions/ExecutorChainAction.groovy index 797814e..1e734a9 100644 --- a/dbt-core/src/main/groovy/com/devsoap/dbt/actions/ExecutorChainAction.groovy +++ b/dbt-core/src/main/groovy/com/devsoap/dbt/actions/ExecutorChainAction.groovy @@ -25,15 +25,19 @@ import ratpack.groovy.handling.GroovyChainAction class ExecutorChainAction extends GroovyChainAction { private final String executorPath + private final boolean enabled @Inject ExecutorChainAction(DBTConfig config) { executorPath = config.executor.path + enabled = config.executor.enabled } @Override void execute() throws Exception { - log.info("Registering executor at $executorPath") + if(!enabled) return + + log.info("Registering executor at /$executorPath") path(executorPath, ExecutorHandler) } } diff --git a/dbt-core/src/main/groovy/com/devsoap/dbt/actions/LedgerChainAction.groovy b/dbt-core/src/main/groovy/com/devsoap/dbt/actions/LedgerChainAction.groovy index eb06f0a..e3cbadb 100644 --- a/dbt-core/src/main/groovy/com/devsoap/dbt/actions/LedgerChainAction.groovy +++ b/dbt-core/src/main/groovy/com/devsoap/dbt/actions/LedgerChainAction.groovy @@ -28,15 +28,19 @@ import ratpack.handling.Handlers class LedgerChainAction extends GroovyChainAction { private final String ledgerPath + private final boolean enabled @Inject LedgerChainAction(DBTConfig config) { ledgerPath = config.ledger.path + enabled = config.ledger.enabled } @Override void execute() throws Exception { - log.info("Registering ledger at $ledgerPath") + if(!enabled) return + + log.info("Registering ledger at /$ledgerPath") path(ledgerPath, Handlers.chain( registry.get(LedgerGetTransactionHandler), registry.get(LedgerUpdateTransactionHandler), diff --git a/dbt-core/src/main/groovy/com/devsoap/dbt/config/ExecutorConfig.groovy b/dbt-core/src/main/groovy/com/devsoap/dbt/config/ExecutorConfig.groovy index 833ed76..81a2a76 100644 --- a/dbt-core/src/main/groovy/com/devsoap/dbt/config/ExecutorConfig.groovy +++ b/dbt-core/src/main/groovy/com/devsoap/dbt/config/ExecutorConfig.groovy @@ -16,6 +16,7 @@ package com.devsoap.dbt.config class ExecutorConfig { + boolean enabled = true String path = 'executor' String remoteUrl } diff --git a/dbt-core/src/main/groovy/com/devsoap/dbt/config/LedgerConfig.groovy b/dbt-core/src/main/groovy/com/devsoap/dbt/config/LedgerConfig.groovy index a73dc0f..e6392ab 100644 --- a/dbt-core/src/main/groovy/com/devsoap/dbt/config/LedgerConfig.groovy +++ b/dbt-core/src/main/groovy/com/devsoap/dbt/config/LedgerConfig.groovy @@ -16,6 +16,7 @@ package com.devsoap.dbt.config class LedgerConfig { + boolean enabled = true String path = 'ledger' String remoteUrl } diff --git a/dbt-core/src/main/groovy/com/devsoap/dbt/handlers/ExecutorHandler.groovy b/dbt-core/src/main/groovy/com/devsoap/dbt/handlers/ExecutorHandler.groovy index 3eaa30f..9550394 100644 --- a/dbt-core/src/main/groovy/com/devsoap/dbt/handlers/ExecutorHandler.groovy +++ b/dbt-core/src/main/groovy/com/devsoap/dbt/handlers/ExecutorHandler.groovy @@ -22,6 +22,7 @@ import groovy.util.logging.Slf4j import ratpack.exec.Promise import ratpack.handling.Context import ratpack.handling.Handler +import ratpack.http.HttpMethod import ratpack.http.Status import ratpack.http.client.HttpClient import ratpack.jdbctx.Transaction @@ -46,32 +47,36 @@ class ExecutorHandler implements Handler { @Override void handle(Context ctx) throws Exception { - ctx.request.body.then { body -> - def mapper = ctx.get(ObjectMapper) - def ds = ctx.get(DataSource) - def transaction = mapper.readValue(body.text, BlockTransaction) + if(ctx.request.method == HttpMethod.POST) { + ctx.request.body.then { body -> + def mapper = ctx.get(ObjectMapper) + def ds = ctx.get(DataSource) + def transaction = mapper.readValue(body.text, BlockTransaction) - if(!validateChain(transaction)) { - ctx.response.status(Status.of(400, 'Transaction chain invalid')) - return - } - - executeCommands(ds, transaction).onError { e -> - log.info("Sending rolled back transaction to ledger") - println mapper.writeValueAsString(transaction) - client.post(config.ledger.remoteUrl.toURI(), { spec -> - spec.body.text(mapper.writeValueAsString(transaction)) - }).then { - ctx.error(e) + if(!validateChain(transaction)) { + ctx.response.status(Status.of(400, 'Transaction chain invalid')) + return } - }.then { - log.info("Updating ledger with execution result") - client.post(config.ledger.remoteUrl.toURI(), { spec -> - spec.body.text(mapper.writeValueAsString(transaction)) - }).then { - ctx.response.send(mapper.writeValueAsString(transaction)) + + executeCommands(ds, transaction).onError { e -> + log.info("Sending rolled back transaction to ledger") + println mapper.writeValueAsString(transaction) + client.post(config.ledger.remoteUrl.toURI(), { spec -> + spec.body.text(mapper.writeValueAsString(transaction)) + }).then { + ctx.error(e) + } + }.then { + log.info("Updating ledger with execution result") + client.post(config.ledger.remoteUrl.toURI(), { spec -> + spec.body.text(mapper.writeValueAsString(transaction)) + }).then { + ctx.response.send(mapper.writeValueAsString(transaction)) + } } } + } else { + ctx.next() } } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9365cf4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: '2' + +services: + executor: + image: com.devsoap/dbt-executor + container_name: dbt-executor + environment: + - dbt.ledger.url=http://ledger:5050 + ledger: + image: com.devsoap/dbt-ledger + container_name: dbt-ledger + environment: + - dbt.executor.url=http://executor:5050 \ No newline at end of file diff --git a/docker-executor/build.gradle b/docker-executor/build.gradle new file mode 100644 index 0000000..1db051d --- /dev/null +++ b/docker-executor/build.gradle @@ -0,0 +1,22 @@ +apply plugin: 'docker' + +group 'com.devsoap' + +dependencies { + compile project(':dbt-core') + runtime ratpack.dependency('h2') + runtime ratpack.dependency('jdbc-tx') + runtime 'org.slf4j:slf4j-simple:1.7.25' +} + +run { + environment('RATPACK_DBT__LEDGER__REMOTE_URL', findProperty('ledgerURL').toString() ?: "http://localhost:5050/ledger") + environment('RATPACK_DBT__LEDGER__ENABLED', false) +} + +distDocker { + registry = findProperty('dockerRegistry') + tagVersion = 'latest' + exposePort 5050 + run.environment.each {key,value -> setEnvironment(key.toString(), value.toString())} +} diff --git a/docker-executor/src/ratpack/Ratpack.groovy b/docker-executor/src/ratpack/Ratpack.groovy new file mode 100644 index 0000000..e783ffc --- /dev/null +++ b/docker-executor/src/ratpack/Ratpack.groovy @@ -0,0 +1,24 @@ +import com.devsoap.dbt.DBTModule +import org.h2.jdbcx.JdbcDataSource +import org.slf4j.LoggerFactory + +import javax.sql.DataSource + +import static ratpack.groovy.Groovy.ratpack + +def log = LoggerFactory.getLogger('dbt-executor') + +ratpack { + serverConfig { + env() + sysProps() + } + + bindings { + bindInstance(DataSource, new JdbcDataSource(url: 'jdbc:h2:mem:dbtdb;DB_CLOSE_DELAY=-1', user: '')) + module (DBTModule) { config -> + log.info "Executor available at $config.executor.remoteUrl" + log.info "Ledger available at $config.ledger.remoteUrl" + } + } +} diff --git a/docker-ledger/Ratpack.groovy b/docker-ledger/Ratpack.groovy new file mode 100644 index 0000000..669f971 --- /dev/null +++ b/docker-ledger/Ratpack.groovy @@ -0,0 +1,16 @@ +@Grapes([ + @Grab('io.ratpack:ratpack-groovy:1.5.4'), + @Grab('org.slf4j:slf4j-simple:1.7.25') +]) + +import com.devsoap.dbt.DBTModule + +import static ratpack.groovy.Groovy.ratpack + +ratpack { + bindings { + module (DBTModule) { config -> + config.executor.remoteUrl = System.properties.getProperty('dbt.executor.url') + } + } +} diff --git a/docker-ledger/build.gradle b/docker-ledger/build.gradle new file mode 100644 index 0000000..9c0012a --- /dev/null +++ b/docker-ledger/build.gradle @@ -0,0 +1,22 @@ +apply plugin: 'docker' + +group 'com.devsoap' + +dependencies { + compile project(':dbt-core') + runtime ratpack.dependency('h2') + runtime ratpack.dependency('jdbc-tx') + runtime 'org.slf4j:slf4j-simple:1.7.25' +} + +run { + environment('RATPACK_DBT__EXECUTOR__REMOTE_URL', findProperty('executorURL').toString() ?: "http://localhost:5050/executor") + environment('RATPACK_DBT__EXECUTOR__ENABLED', false) +} + +distDocker { + registry = findProperty('dockerRegistry') + tagVersion = 'latest' + exposePort 5050 + run.environment.each {key,value -> setEnvironment(key.toString(), value.toString())} +} diff --git a/docker-ledger/src/ratpack/Ratpack.groovy b/docker-ledger/src/ratpack/Ratpack.groovy new file mode 100644 index 0000000..e783ffc --- /dev/null +++ b/docker-ledger/src/ratpack/Ratpack.groovy @@ -0,0 +1,24 @@ +import com.devsoap.dbt.DBTModule +import org.h2.jdbcx.JdbcDataSource +import org.slf4j.LoggerFactory + +import javax.sql.DataSource + +import static ratpack.groovy.Groovy.ratpack + +def log = LoggerFactory.getLogger('dbt-executor') + +ratpack { + serverConfig { + env() + sysProps() + } + + bindings { + bindInstance(DataSource, new JdbcDataSource(url: 'jdbc:h2:mem:dbtdb;DB_CLOSE_DELAY=-1', user: '')) + module (DBTModule) { config -> + log.info "Executor available at $config.executor.remoteUrl" + log.info "Ledger available at $config.ledger.remoteUrl" + } + } +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 941144813d241db74e1bf25b6804c679fbe7f0a3..91ca28c8b802289c3a438766657a5e98f20eff03 100644 GIT binary patch delta 41666 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 delta 40989 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 ?J?8Ac@^Ezil)x+L*XTK6k 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 35937d2..16d2805 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Feb 23 08:49:01 EET 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.9-bin.zip diff --git a/gradlew b/gradlew index 9d82f78..cccdd3d 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,42 +6,6 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" @@ -60,6 +24,46 @@ cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME="`pwd -P`" cd "$SAVED" >/dev/null +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -85,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -150,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282..f955316 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/settings.gradle b/settings.gradle index 99a4aad..d83491a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,8 @@ include 'dbt-core' include 'dbt-test' include 'dbt-demo' +include 'docker-executor' +include 'docker-ledger' +project(':docker-executor').name = 'dbt-executor' +project(':docker-ledger').name = 'dbt-ledger'