You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marvin.apache.org by lu...@apache.org on 2019/05/10 05:28:56 UTC
[incubator-marvin] branch feature/MARVIN-1 updated: Adding support
for building docker images. Initial support for R engines.
This is an automated email from the ASF dual-hosted git repository.
lucasbm88 pushed a commit to branch feature/MARVIN-1
in repository https://gitbox.apache.org/repos/asf/incubator-marvin.git
The following commit(s) were added to refs/heads/feature/MARVIN-1 by this push:
new 01d1255 Adding support for building docker images. Initial support for R engines.
01d1255 is described below
commit 01d12556df9a5f032ac85dcaa534a25129cb97fc
Author: Lucas Bonatto Miguel <lu...@qume.io>
AuthorDate: Thu May 9 22:26:23 2019 -0700
Adding support for building docker images.
Initial support for R engines.
---
Makefile | 49 ++++++++++++
.../.github/ISSUE_TEMPLATE/bug_report.md | 0
.../.github/ISSUE_TEMPLATE/custom.md | 0
.../.github/ISSUE_TEMPLATE/feature_request.md | 0
{engine-executor => engine-server}/.gitignore | 0
.../CODE_OF_CONDUCT.md | 0
{engine-executor => engine-server}/Makefile | 0
{engine-executor => engine-server}/NOTICE | 0
.../PULL_REQUEST_TEMPLATE.md | 0
{engine-executor => engine-server}/README.md | 0
{engine-executor => engine-server}/build.sbt | 2 +-
engine-server/build/Dockerfile | 89 +++++++++++++++++++++
engine-server/build/docker-python/Dockerfile | 59 ++++++++++++++
engine-server/build/docker-r/Dockerfile | 61 ++++++++++++++
.../build/marvin-engine-server-assembly.jar | Bin 0 -> 94184375 bytes
engine-server/build/python-toolbox.tgz | Bin 0 -> 693248 bytes
.../project/assembly.sbt | 0
.../project/build.properties | 0
.../project/plugins.sbt | 0
.../project/scalapb.sbt | 0
{engine-executor => engine-server}/sonatype.sbt | 0
.../src/main/protobuf/actions.proto | 0
.../src/main}/resources/EngineActionSchema.json | 0
.../src/main}/resources/EngineMetadataSchema.json | 0
.../src/main/resources/application.conf | 0
.../src/main/resources/docs/favicon-16x16.png | Bin
.../src/main/resources/docs/favicon-32x32.png | Bin
.../src/main/resources/docs/index.html | 0
.../src/main/resources/docs/oauth2-redirect.html | 0
.../src/main/resources/docs/swagger-ui-bundle.js | 0
.../main/resources/docs/swagger-ui-bundle.js.map | 0
.../resources/docs/swagger-ui-standalone-preset.js | 0
.../docs/swagger-ui-standalone-preset.js.map | 0
.../src/main/resources/docs/swagger-ui.css | 0
.../src/main/resources/docs/swagger-ui.css.map | 0
.../src/main/resources/docs/swagger-ui.js | 0
.../src/main/resources/docs/swagger-ui.js.map | 0
.../src/main/resources/log4j.properties | 0
.../marvin/artifact/manager/ArtifactFSSaver.scala | 0
.../artifact/manager/ArtifactHdfsSaver.scala | 0
.../marvin/artifact/manager/ArtifactS3Saver.scala | 0
.../marvin/artifact/manager/ArtifactSaver.scala | 0
.../exception/MarvinEExecutorException.scala | 0
.../org/marvin/executor/EngineExecutorApp.scala | 0
.../org/marvin/executor/actions/BatchAction.scala | 0
.../org/marvin/executor/actions/OnlineAction.scala | 0
.../marvin/executor/actions/PipelineAction.scala | 0
.../scala/org/marvin/executor/api/GenericAPI.scala | 0
.../marvin/executor/api/GenericAPIHandlers.scala | 0
.../executor/manager/ExecutorClusterListener.scala | 0
.../marvin/executor/manager/ExecutorManager.scala | 0
.../marvin/executor/proxies/BatchActionProxy.scala | 0
.../org/marvin/executor/proxies/EngineProxy.scala | 0
.../executor/proxies/OnlineActionProxy.scala | 0
.../executor/statemachine/PredictorFSM.scala | 0
.../scala/org/marvin/model/BatchExecution.scala | 0
.../src/main/scala/org/marvin/model/Metadata.scala | 0
.../org/marvin/util/ConfigurationContext.scala | 0
.../src/main/scala/org/marvin/util/JsonUtil.scala | 0
.../main/scala/org/marvin/util/LocalCache.scala | 0
.../main/scala/org/marvin/util/ProtocolUtil.scala | 0
.../src/test}/resources/EngineActionSchema.json | 0
.../src/test}/resources/EngineMetadataSchema.json | 0
.../src/test/resources/application.conf | 0
.../src/test/resources/engine_home/docs.yaml | 0
.../src/test/resources/engine_home/engine.metadata | 0
.../src/test/resources/engine_home/engine.params | 0
.../resources/engine_home/predictor-message.schema | 0
.../src/test/resources/metadataToValidate.json | 0
.../resources/metadataToValidateWithError.json | 0
.../resources/metadataToValidateWithRefError.json | 0
.../src/test/resources/test-invalid.json | 0
.../src/test/resources/test.json | 0
.../artifact/manager/ArtifactS3SaverTest.scala | 0
.../artifact/manager/ArtifactSaverTest.scala | 0
.../marvin/executor/EngineExecutorAppTest.scala | 0
.../marvin/executor/actions/BatchActionTest.scala | 0
.../marvin/executor/actions/OnlineActionTest.scala | 0
.../org/marvin/executor/api/GenericAPITest.scala | 0
.../executor/manager/ExecutorManagerTest.scala | 0
.../executor/proxies/BatchActionProxyTest.scala | 0
.../executor/proxies/OnlineActionProxyTest.scala | 0
.../executor/statemachine/PredictorFSMTest.scala | 0
.../scala/org/marvin/fixtures/MetadataMock.scala | 0
.../test/scala/org/marvin/util/JsonUtilTest.scala | 0
.../scala/org/marvin/util/LocalCacheTest.scala | 0
.../scala/org/marvin/util/ProtocolUtilTest.scala | 0
python-toolbox/.dev | 0
python-toolbox/setup.py | 3 +-
89 files changed, 261 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f0a548c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,49 @@
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+.PHONY: help docker-base docker-python docker-r toolbox engine-server
+
+help:
+ @echo " docker-base"
+ @echo " Builds the base docker image with common dependecies among languages."
+ @echo " docker-python"
+ @echo " Builds a docker image that can run engines in Python."
+ @echo " docker-r"
+ @echo " Builds a docker image that can run engines in R."
+ @echo " toolbox"
+ @echo " Builds the toolbox and make it available for be included into docker images."
+ @echo " engine-server"
+ @echo " Builds a jar with the engine interpreter server."
+
+docker-base:
+ docker build -t marvin-base -f engine-server/build/Dockerfile engine-server/build
+
+docker-python:
+ $(MAKE) engine-server
+ $(MAKE) toolbox
+ docker build -t marvin-python -f engine-server/build/docker-python/Dockerfile engine-server/build
+
+docker-r:
+ $(MAKE) engine-server
+ $(MAKE) toolbox
+ docker build -t marvin-r -f engine-server/build/docker-r/Dockerfile engine-server/build
+
+engine-server:
+ cd engine-server && $(MAKE) package
+ mv engine-server/target/scala-2.12/marvin-engine-server-assembly-*.jar engine-server/build/marvin-engine-server-assembly.jar
+
+toolbox:
+ tar -cf engine-server/build/python-toolbox.tgz python-toolbox
\ No newline at end of file
diff --git a/engine-executor/.github/ISSUE_TEMPLATE/bug_report.md b/engine-server/.github/ISSUE_TEMPLATE/bug_report.md
similarity index 100%
rename from engine-executor/.github/ISSUE_TEMPLATE/bug_report.md
rename to engine-server/.github/ISSUE_TEMPLATE/bug_report.md
diff --git a/engine-executor/.github/ISSUE_TEMPLATE/custom.md b/engine-server/.github/ISSUE_TEMPLATE/custom.md
similarity index 100%
rename from engine-executor/.github/ISSUE_TEMPLATE/custom.md
rename to engine-server/.github/ISSUE_TEMPLATE/custom.md
diff --git a/engine-executor/.github/ISSUE_TEMPLATE/feature_request.md b/engine-server/.github/ISSUE_TEMPLATE/feature_request.md
similarity index 100%
rename from engine-executor/.github/ISSUE_TEMPLATE/feature_request.md
rename to engine-server/.github/ISSUE_TEMPLATE/feature_request.md
diff --git a/engine-executor/.gitignore b/engine-server/.gitignore
similarity index 100%
rename from engine-executor/.gitignore
rename to engine-server/.gitignore
diff --git a/engine-executor/CODE_OF_CONDUCT.md b/engine-server/CODE_OF_CONDUCT.md
similarity index 100%
rename from engine-executor/CODE_OF_CONDUCT.md
rename to engine-server/CODE_OF_CONDUCT.md
diff --git a/engine-executor/Makefile b/engine-server/Makefile
similarity index 100%
rename from engine-executor/Makefile
rename to engine-server/Makefile
diff --git a/engine-executor/NOTICE b/engine-server/NOTICE
similarity index 100%
rename from engine-executor/NOTICE
rename to engine-server/NOTICE
diff --git a/engine-executor/PULL_REQUEST_TEMPLATE.md b/engine-server/PULL_REQUEST_TEMPLATE.md
similarity index 100%
rename from engine-executor/PULL_REQUEST_TEMPLATE.md
rename to engine-server/PULL_REQUEST_TEMPLATE.md
diff --git a/engine-executor/README.md b/engine-server/README.md
similarity index 100%
rename from engine-executor/README.md
rename to engine-server/README.md
diff --git a/engine-executor/build.sbt b/engine-server/build.sbt
similarity index 98%
rename from engine-executor/build.sbt
rename to engine-server/build.sbt
index af58722..696f865 100644
--- a/engine-executor/build.sbt
+++ b/engine-server/build.sbt
@@ -14,7 +14,7 @@
* limitations under the License.
*
*/
-name := "marvin-engine-executor"
+name := "marvin-engine-server"
version := "0.0.4"
diff --git a/engine-server/build/Dockerfile b/engine-server/build/Dockerfile
new file mode 100644
index 0000000..bbf5394
--- /dev/null
+++ b/engine-server/build/Dockerfile
@@ -0,0 +1,89 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+##############################################################
+# Base docker image for Marvin
+##############################################################
+FROM ubuntu:16.04
+
+ENV SLEEP_MILLIS 0
+
+USER root
+
+##############################################################
+# Creates the marvin user
+##############################################################
+RUN groupadd marvin && \
+ useradd marvin -mg marvin
+
+##############################################################
+# Define all environment variables to be used
+##############################################################
+
+ENV MARVIN_HOME=/home/marvin
+ENV MARVIN_DATA_PATH=/home/marvin/marvin-data
+ENV MARVIN_ENGINE_HOME=$MARVIN_HOME/engine
+ENV MARVIN_ENGINE_ENV=marvin-engine-env
+
+
+##############################################################
+# Create all folders needed
+##############################################################
+
+RUN mkdir -p $MARVIN_HOME && \
+ mkdir -p $MARVIN_DATA_PATH && \
+ mkdir -p $MARVIN_ENGINE_HOME && \
+ mkdir -p /var/log/marvin/engines && \
+ mkdir -p /var/run/marvin/engines
+
+
+##############################################################
+# Install the system dependencies for default installation
+##############################################################
+
+RUN apt-get update -y && \
+ apt-get install -y build-essential && \
+ apt-get install -y maven git cmake software-properties-common curl libstdc++6 && \
+ apt-get install -y wget && \
+ apt-get install -y libffi-dev && \
+ apt-get install -y libssl-dev && \
+ apt-get install -y libxml2-dev && \
+ apt-get install -y libxslt1-dev && \
+ apt-get install -y libpng12-dev && \
+ apt-get install -y libfreetype6-dev && \
+ apt-get install -y libsasl2-dev && \
+ apt-get install -y graphviz && \
+ apt-get clean
+
+### Installs Open JDK 8
+RUN add-apt-repository ppa:openjdk-r/ppa && \
+ apt-get update && \
+ apt-get install -y openjdk-8-jdk
+
+## TODO - Think in a good way to make Spark an option as soon we implement docker supporting it
+##############################################################
+# Install Apache Spark
+#
+# Uncomment if you are using spark, note that is needed the
+# spark configuration files to the think works correctly.
+##############################################################
+
+# RUN curl https://d3kbcqa49mib13.cloudfront.net/spark-2.1.1-bin-hadoop2.6.tgz -o /tmp/spark-2.1.1-bin-hadoop2.6.tgz && \
+# tar -xf /tmp/spark-2.1.1-bin-hadoop2.6.tgz -C /opt/ && \
+# ln -s /opt/spark-2.1.1-bin-hadoop2.6 /opt/spark
+
+# Add the b2w datalake config for Spark
+# ADD spark-conf.tar $SPARK_CONF_DIR
+# RUN mkdir -p $SPARK_CONF_DIR
\ No newline at end of file
diff --git a/engine-server/build/docker-python/Dockerfile b/engine-server/build/docker-python/Dockerfile
new file mode 100644
index 0000000..bd06aef
--- /dev/null
+++ b/engine-server/build/docker-python/Dockerfile
@@ -0,0 +1,59 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+ARG BASE_TAG=latest
+FROM marvin-base:${BASE_TAG}
+
+##############################################################
+# Define all environment variables to be used
+##############################################################
+ENV WORKON_HOME=$MARVIN_HOME/.virtualenvs
+
+##############################################################
+# Install python dependencies
+##############################################################
+
+RUN apt-get update -y && \
+ apt-get install -y python && \
+ apt-get install -y python2.7-dev && \
+ apt-get install -y python-pip && \
+ apt-get install -y ipython && \
+ # ??? apt-get install -y python-tk && \ ??? #
+ pip install --upgrade pip==9.0.1 && \
+ apt install -y libzmq3-dev libcurl4-openssl-dev libssl-dev && \
+ pip install jupyter && \
+ apt-get clean
+
+##############################################################
+# Copy and Install the marvin engine inside virtualenv
+##############################################################
+
+# adds the package containing the user-generated engine
+ADD python-toolbox.tgz $MARVIN_ENGINE_HOME
+
+# adds the freshly built engine server jar
+ADD marvin-engine-server-assembly.jar $MARVIN_DATA_PATH
+
+##############################################################
+# Starts the jupyter http server
+##############################################################
+
+EXPOSE 8888
+
+USER marvin
+
+RUN /bin/bash -c "cd $MARVIN_ENGINE_HOME/python-toolbox && pip install . --user"
+
+CMD /bin/bash -c "marvin --help"
\ No newline at end of file
diff --git a/engine-server/build/docker-r/Dockerfile b/engine-server/build/docker-r/Dockerfile
new file mode 100644
index 0000000..dc48dcb
--- /dev/null
+++ b/engine-server/build/docker-r/Dockerfile
@@ -0,0 +1,61 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+ARG BASE_TAG=latest
+FROM marvin-base:${BASE_TAG}
+
+##############################################################
+# Create all folders needed
+##############################################################
+
+
+##############################################################
+# Install the system dependencies for default R installation
+##############################################################
+
+RUN apt install -y apt-transport-https &&\
+ apt update && \
+ apt install -y python2.7-dev && \
+ apt install -y python-pip && \
+ apt install -y ipython && \
+ pip install --upgrade pip==9.0.1 && \
+ apt install -y libzmq3-dev libcurl4-openssl-dev libssl-dev && \
+ pip install jupyter
+
+
+RUN apt install -y r-base && \
+ su -c "R -e \"install.packages(c('repr', 'IRdisplay', 'IRkernel'), type = 'source', repos='http://cran.rstudio.com/')\"" && \
+ su -c "R -e \"IRkernel::installspec(user = FALSE)\""
+
+
+##############################################################
+# Copy and Install the marvin engine inside virtualenv
+##############################################################
+
+# adds the package containing the user-generated engine
+#ADD generated-engine $MARVIN_ENGINE_HOME
+
+# adds the freshly built engine server jar
+#ADD marvin-engine-server-assembly.jar $MARVIN_DATA_PATH
+
+##############################################################
+# Starts the jupyter http server
+##############################################################
+
+EXPOSE 8888
+
+USER marvin
+
+CMD /bin/bash -c "jupyter notebook --ip=0.0.0.0 --notebook-dir=$MARVIN_HOME"
\ No newline at end of file
diff --git a/engine-server/build/marvin-engine-server-assembly.jar b/engine-server/build/marvin-engine-server-assembly.jar
new file mode 100644
index 0000000..ff8a8f4
Binary files /dev/null and b/engine-server/build/marvin-engine-server-assembly.jar differ
diff --git a/engine-server/build/python-toolbox.tgz b/engine-server/build/python-toolbox.tgz
new file mode 100644
index 0000000..86b60d1
Binary files /dev/null and b/engine-server/build/python-toolbox.tgz differ
diff --git a/engine-executor/project/assembly.sbt b/engine-server/project/assembly.sbt
similarity index 100%
rename from engine-executor/project/assembly.sbt
rename to engine-server/project/assembly.sbt
diff --git a/engine-executor/project/build.properties b/engine-server/project/build.properties
similarity index 100%
rename from engine-executor/project/build.properties
rename to engine-server/project/build.properties
diff --git a/engine-executor/project/plugins.sbt b/engine-server/project/plugins.sbt
similarity index 100%
rename from engine-executor/project/plugins.sbt
rename to engine-server/project/plugins.sbt
diff --git a/engine-executor/project/scalapb.sbt b/engine-server/project/scalapb.sbt
similarity index 100%
rename from engine-executor/project/scalapb.sbt
rename to engine-server/project/scalapb.sbt
diff --git a/engine-executor/sonatype.sbt b/engine-server/sonatype.sbt
similarity index 100%
rename from engine-executor/sonatype.sbt
rename to engine-server/sonatype.sbt
diff --git a/engine-executor/src/main/protobuf/actions.proto b/engine-server/src/main/protobuf/actions.proto
similarity index 100%
rename from engine-executor/src/main/protobuf/actions.proto
rename to engine-server/src/main/protobuf/actions.proto
diff --git a/engine-executor/src/test/resources/EngineActionSchema.json b/engine-server/src/main/resources/EngineActionSchema.json
similarity index 100%
rename from engine-executor/src/test/resources/EngineActionSchema.json
rename to engine-server/src/main/resources/EngineActionSchema.json
diff --git a/engine-executor/src/test/resources/EngineMetadataSchema.json b/engine-server/src/main/resources/EngineMetadataSchema.json
similarity index 100%
rename from engine-executor/src/test/resources/EngineMetadataSchema.json
rename to engine-server/src/main/resources/EngineMetadataSchema.json
diff --git a/engine-executor/src/main/resources/application.conf b/engine-server/src/main/resources/application.conf
similarity index 100%
rename from engine-executor/src/main/resources/application.conf
rename to engine-server/src/main/resources/application.conf
diff --git a/engine-executor/src/main/resources/docs/favicon-16x16.png b/engine-server/src/main/resources/docs/favicon-16x16.png
similarity index 100%
rename from engine-executor/src/main/resources/docs/favicon-16x16.png
rename to engine-server/src/main/resources/docs/favicon-16x16.png
diff --git a/engine-executor/src/main/resources/docs/favicon-32x32.png b/engine-server/src/main/resources/docs/favicon-32x32.png
similarity index 100%
rename from engine-executor/src/main/resources/docs/favicon-32x32.png
rename to engine-server/src/main/resources/docs/favicon-32x32.png
diff --git a/engine-executor/src/main/resources/docs/index.html b/engine-server/src/main/resources/docs/index.html
similarity index 100%
rename from engine-executor/src/main/resources/docs/index.html
rename to engine-server/src/main/resources/docs/index.html
diff --git a/engine-executor/src/main/resources/docs/oauth2-redirect.html b/engine-server/src/main/resources/docs/oauth2-redirect.html
similarity index 100%
rename from engine-executor/src/main/resources/docs/oauth2-redirect.html
rename to engine-server/src/main/resources/docs/oauth2-redirect.html
diff --git a/engine-executor/src/main/resources/docs/swagger-ui-bundle.js b/engine-server/src/main/resources/docs/swagger-ui-bundle.js
similarity index 100%
rename from engine-executor/src/main/resources/docs/swagger-ui-bundle.js
rename to engine-server/src/main/resources/docs/swagger-ui-bundle.js
diff --git a/engine-executor/src/main/resources/docs/swagger-ui-bundle.js.map b/engine-server/src/main/resources/docs/swagger-ui-bundle.js.map
similarity index 100%
rename from engine-executor/src/main/resources/docs/swagger-ui-bundle.js.map
rename to engine-server/src/main/resources/docs/swagger-ui-bundle.js.map
diff --git a/engine-executor/src/main/resources/docs/swagger-ui-standalone-preset.js b/engine-server/src/main/resources/docs/swagger-ui-standalone-preset.js
similarity index 100%
rename from engine-executor/src/main/resources/docs/swagger-ui-standalone-preset.js
rename to engine-server/src/main/resources/docs/swagger-ui-standalone-preset.js
diff --git a/engine-executor/src/main/resources/docs/swagger-ui-standalone-preset.js.map b/engine-server/src/main/resources/docs/swagger-ui-standalone-preset.js.map
similarity index 100%
rename from engine-executor/src/main/resources/docs/swagger-ui-standalone-preset.js.map
rename to engine-server/src/main/resources/docs/swagger-ui-standalone-preset.js.map
diff --git a/engine-executor/src/main/resources/docs/swagger-ui.css b/engine-server/src/main/resources/docs/swagger-ui.css
similarity index 100%
rename from engine-executor/src/main/resources/docs/swagger-ui.css
rename to engine-server/src/main/resources/docs/swagger-ui.css
diff --git a/engine-executor/src/main/resources/docs/swagger-ui.css.map b/engine-server/src/main/resources/docs/swagger-ui.css.map
similarity index 100%
rename from engine-executor/src/main/resources/docs/swagger-ui.css.map
rename to engine-server/src/main/resources/docs/swagger-ui.css.map
diff --git a/engine-executor/src/main/resources/docs/swagger-ui.js b/engine-server/src/main/resources/docs/swagger-ui.js
similarity index 100%
rename from engine-executor/src/main/resources/docs/swagger-ui.js
rename to engine-server/src/main/resources/docs/swagger-ui.js
diff --git a/engine-executor/src/main/resources/docs/swagger-ui.js.map b/engine-server/src/main/resources/docs/swagger-ui.js.map
similarity index 100%
rename from engine-executor/src/main/resources/docs/swagger-ui.js.map
rename to engine-server/src/main/resources/docs/swagger-ui.js.map
diff --git a/engine-executor/src/main/resources/log4j.properties b/engine-server/src/main/resources/log4j.properties
similarity index 100%
rename from engine-executor/src/main/resources/log4j.properties
rename to engine-server/src/main/resources/log4j.properties
diff --git a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactFSSaver.scala b/engine-server/src/main/scala/org/marvin/artifact/manager/ArtifactFSSaver.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactFSSaver.scala
rename to engine-server/src/main/scala/org/marvin/artifact/manager/ArtifactFSSaver.scala
diff --git a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactHdfsSaver.scala b/engine-server/src/main/scala/org/marvin/artifact/manager/ArtifactHdfsSaver.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactHdfsSaver.scala
rename to engine-server/src/main/scala/org/marvin/artifact/manager/ArtifactHdfsSaver.scala
diff --git a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactS3Saver.scala b/engine-server/src/main/scala/org/marvin/artifact/manager/ArtifactS3Saver.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactS3Saver.scala
rename to engine-server/src/main/scala/org/marvin/artifact/manager/ArtifactS3Saver.scala
diff --git a/engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactSaver.scala b/engine-server/src/main/scala/org/marvin/artifact/manager/ArtifactSaver.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/artifact/manager/ArtifactSaver.scala
rename to engine-server/src/main/scala/org/marvin/artifact/manager/ArtifactSaver.scala
diff --git a/engine-executor/src/main/scala/org/marvin/exception/MarvinEExecutorException.scala b/engine-server/src/main/scala/org/marvin/exception/MarvinEExecutorException.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/exception/MarvinEExecutorException.scala
rename to engine-server/src/main/scala/org/marvin/exception/MarvinEExecutorException.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/EngineExecutorApp.scala b/engine-server/src/main/scala/org/marvin/executor/EngineExecutorApp.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/EngineExecutorApp.scala
rename to engine-server/src/main/scala/org/marvin/executor/EngineExecutorApp.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/actions/BatchAction.scala b/engine-server/src/main/scala/org/marvin/executor/actions/BatchAction.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/actions/BatchAction.scala
rename to engine-server/src/main/scala/org/marvin/executor/actions/BatchAction.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/actions/OnlineAction.scala b/engine-server/src/main/scala/org/marvin/executor/actions/OnlineAction.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/actions/OnlineAction.scala
rename to engine-server/src/main/scala/org/marvin/executor/actions/OnlineAction.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/actions/PipelineAction.scala b/engine-server/src/main/scala/org/marvin/executor/actions/PipelineAction.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/actions/PipelineAction.scala
rename to engine-server/src/main/scala/org/marvin/executor/actions/PipelineAction.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPI.scala b/engine-server/src/main/scala/org/marvin/executor/api/GenericAPI.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/api/GenericAPI.scala
rename to engine-server/src/main/scala/org/marvin/executor/api/GenericAPI.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/api/GenericAPIHandlers.scala b/engine-server/src/main/scala/org/marvin/executor/api/GenericAPIHandlers.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/api/GenericAPIHandlers.scala
rename to engine-server/src/main/scala/org/marvin/executor/api/GenericAPIHandlers.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorClusterListener.scala b/engine-server/src/main/scala/org/marvin/executor/manager/ExecutorClusterListener.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorClusterListener.scala
rename to engine-server/src/main/scala/org/marvin/executor/manager/ExecutorClusterListener.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorManager.scala b/engine-server/src/main/scala/org/marvin/executor/manager/ExecutorManager.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/manager/ExecutorManager.scala
rename to engine-server/src/main/scala/org/marvin/executor/manager/ExecutorManager.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/proxies/BatchActionProxy.scala b/engine-server/src/main/scala/org/marvin/executor/proxies/BatchActionProxy.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/proxies/BatchActionProxy.scala
rename to engine-server/src/main/scala/org/marvin/executor/proxies/BatchActionProxy.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/proxies/EngineProxy.scala b/engine-server/src/main/scala/org/marvin/executor/proxies/EngineProxy.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/proxies/EngineProxy.scala
rename to engine-server/src/main/scala/org/marvin/executor/proxies/EngineProxy.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/proxies/OnlineActionProxy.scala b/engine-server/src/main/scala/org/marvin/executor/proxies/OnlineActionProxy.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/proxies/OnlineActionProxy.scala
rename to engine-server/src/main/scala/org/marvin/executor/proxies/OnlineActionProxy.scala
diff --git a/engine-executor/src/main/scala/org/marvin/executor/statemachine/PredictorFSM.scala b/engine-server/src/main/scala/org/marvin/executor/statemachine/PredictorFSM.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/executor/statemachine/PredictorFSM.scala
rename to engine-server/src/main/scala/org/marvin/executor/statemachine/PredictorFSM.scala
diff --git a/engine-executor/src/main/scala/org/marvin/model/BatchExecution.scala b/engine-server/src/main/scala/org/marvin/model/BatchExecution.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/model/BatchExecution.scala
rename to engine-server/src/main/scala/org/marvin/model/BatchExecution.scala
diff --git a/engine-executor/src/main/scala/org/marvin/model/Metadata.scala b/engine-server/src/main/scala/org/marvin/model/Metadata.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/model/Metadata.scala
rename to engine-server/src/main/scala/org/marvin/model/Metadata.scala
diff --git a/engine-executor/src/main/scala/org/marvin/util/ConfigurationContext.scala b/engine-server/src/main/scala/org/marvin/util/ConfigurationContext.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/util/ConfigurationContext.scala
rename to engine-server/src/main/scala/org/marvin/util/ConfigurationContext.scala
diff --git a/engine-executor/src/main/scala/org/marvin/util/JsonUtil.scala b/engine-server/src/main/scala/org/marvin/util/JsonUtil.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/util/JsonUtil.scala
rename to engine-server/src/main/scala/org/marvin/util/JsonUtil.scala
diff --git a/engine-executor/src/main/scala/org/marvin/util/LocalCache.scala b/engine-server/src/main/scala/org/marvin/util/LocalCache.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/util/LocalCache.scala
rename to engine-server/src/main/scala/org/marvin/util/LocalCache.scala
diff --git a/engine-executor/src/main/scala/org/marvin/util/ProtocolUtil.scala b/engine-server/src/main/scala/org/marvin/util/ProtocolUtil.scala
similarity index 100%
rename from engine-executor/src/main/scala/org/marvin/util/ProtocolUtil.scala
rename to engine-server/src/main/scala/org/marvin/util/ProtocolUtil.scala
diff --git a/engine-executor/src/main/resources/EngineActionSchema.json b/engine-server/src/test/resources/EngineActionSchema.json
similarity index 100%
rename from engine-executor/src/main/resources/EngineActionSchema.json
rename to engine-server/src/test/resources/EngineActionSchema.json
diff --git a/engine-executor/src/main/resources/EngineMetadataSchema.json b/engine-server/src/test/resources/EngineMetadataSchema.json
similarity index 100%
rename from engine-executor/src/main/resources/EngineMetadataSchema.json
rename to engine-server/src/test/resources/EngineMetadataSchema.json
diff --git a/engine-executor/src/test/resources/application.conf b/engine-server/src/test/resources/application.conf
similarity index 100%
rename from engine-executor/src/test/resources/application.conf
rename to engine-server/src/test/resources/application.conf
diff --git a/engine-executor/src/test/resources/engine_home/docs.yaml b/engine-server/src/test/resources/engine_home/docs.yaml
similarity index 100%
rename from engine-executor/src/test/resources/engine_home/docs.yaml
rename to engine-server/src/test/resources/engine_home/docs.yaml
diff --git a/engine-executor/src/test/resources/engine_home/engine.metadata b/engine-server/src/test/resources/engine_home/engine.metadata
similarity index 100%
rename from engine-executor/src/test/resources/engine_home/engine.metadata
rename to engine-server/src/test/resources/engine_home/engine.metadata
diff --git a/engine-executor/src/test/resources/engine_home/engine.params b/engine-server/src/test/resources/engine_home/engine.params
similarity index 100%
rename from engine-executor/src/test/resources/engine_home/engine.params
rename to engine-server/src/test/resources/engine_home/engine.params
diff --git a/engine-executor/src/test/resources/engine_home/predictor-message.schema b/engine-server/src/test/resources/engine_home/predictor-message.schema
similarity index 100%
rename from engine-executor/src/test/resources/engine_home/predictor-message.schema
rename to engine-server/src/test/resources/engine_home/predictor-message.schema
diff --git a/engine-executor/src/test/resources/metadataToValidate.json b/engine-server/src/test/resources/metadataToValidate.json
similarity index 100%
rename from engine-executor/src/test/resources/metadataToValidate.json
rename to engine-server/src/test/resources/metadataToValidate.json
diff --git a/engine-executor/src/test/resources/metadataToValidateWithError.json b/engine-server/src/test/resources/metadataToValidateWithError.json
similarity index 100%
rename from engine-executor/src/test/resources/metadataToValidateWithError.json
rename to engine-server/src/test/resources/metadataToValidateWithError.json
diff --git a/engine-executor/src/test/resources/metadataToValidateWithRefError.json b/engine-server/src/test/resources/metadataToValidateWithRefError.json
similarity index 100%
rename from engine-executor/src/test/resources/metadataToValidateWithRefError.json
rename to engine-server/src/test/resources/metadataToValidateWithRefError.json
diff --git a/engine-executor/src/test/resources/test-invalid.json b/engine-server/src/test/resources/test-invalid.json
similarity index 100%
rename from engine-executor/src/test/resources/test-invalid.json
rename to engine-server/src/test/resources/test-invalid.json
diff --git a/engine-executor/src/test/resources/test.json b/engine-server/src/test/resources/test.json
similarity index 100%
rename from engine-executor/src/test/resources/test.json
rename to engine-server/src/test/resources/test.json
diff --git a/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactS3SaverTest.scala b/engine-server/src/test/scala/org/marvin/artifact/manager/ArtifactS3SaverTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactS3SaverTest.scala
rename to engine-server/src/test/scala/org/marvin/artifact/manager/ArtifactS3SaverTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactSaverTest.scala b/engine-server/src/test/scala/org/marvin/artifact/manager/ArtifactSaverTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/artifact/manager/ArtifactSaverTest.scala
rename to engine-server/src/test/scala/org/marvin/artifact/manager/ArtifactSaverTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/executor/EngineExecutorAppTest.scala b/engine-server/src/test/scala/org/marvin/executor/EngineExecutorAppTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/executor/EngineExecutorAppTest.scala
rename to engine-server/src/test/scala/org/marvin/executor/EngineExecutorAppTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/executor/actions/BatchActionTest.scala b/engine-server/src/test/scala/org/marvin/executor/actions/BatchActionTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/executor/actions/BatchActionTest.scala
rename to engine-server/src/test/scala/org/marvin/executor/actions/BatchActionTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/executor/actions/OnlineActionTest.scala b/engine-server/src/test/scala/org/marvin/executor/actions/OnlineActionTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/executor/actions/OnlineActionTest.scala
rename to engine-server/src/test/scala/org/marvin/executor/actions/OnlineActionTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/executor/api/GenericAPITest.scala b/engine-server/src/test/scala/org/marvin/executor/api/GenericAPITest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/executor/api/GenericAPITest.scala
rename to engine-server/src/test/scala/org/marvin/executor/api/GenericAPITest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/executor/manager/ExecutorManagerTest.scala b/engine-server/src/test/scala/org/marvin/executor/manager/ExecutorManagerTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/executor/manager/ExecutorManagerTest.scala
rename to engine-server/src/test/scala/org/marvin/executor/manager/ExecutorManagerTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/executor/proxies/BatchActionProxyTest.scala b/engine-server/src/test/scala/org/marvin/executor/proxies/BatchActionProxyTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/executor/proxies/BatchActionProxyTest.scala
rename to engine-server/src/test/scala/org/marvin/executor/proxies/BatchActionProxyTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/executor/proxies/OnlineActionProxyTest.scala b/engine-server/src/test/scala/org/marvin/executor/proxies/OnlineActionProxyTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/executor/proxies/OnlineActionProxyTest.scala
rename to engine-server/src/test/scala/org/marvin/executor/proxies/OnlineActionProxyTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/executor/statemachine/PredictorFSMTest.scala b/engine-server/src/test/scala/org/marvin/executor/statemachine/PredictorFSMTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/executor/statemachine/PredictorFSMTest.scala
rename to engine-server/src/test/scala/org/marvin/executor/statemachine/PredictorFSMTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/fixtures/MetadataMock.scala b/engine-server/src/test/scala/org/marvin/fixtures/MetadataMock.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/fixtures/MetadataMock.scala
rename to engine-server/src/test/scala/org/marvin/fixtures/MetadataMock.scala
diff --git a/engine-executor/src/test/scala/org/marvin/util/JsonUtilTest.scala b/engine-server/src/test/scala/org/marvin/util/JsonUtilTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/util/JsonUtilTest.scala
rename to engine-server/src/test/scala/org/marvin/util/JsonUtilTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/util/LocalCacheTest.scala b/engine-server/src/test/scala/org/marvin/util/LocalCacheTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/util/LocalCacheTest.scala
rename to engine-server/src/test/scala/org/marvin/util/LocalCacheTest.scala
diff --git a/engine-executor/src/test/scala/org/marvin/util/ProtocolUtilTest.scala b/engine-server/src/test/scala/org/marvin/util/ProtocolUtilTest.scala
similarity index 100%
rename from engine-executor/src/test/scala/org/marvin/util/ProtocolUtilTest.scala
rename to engine-server/src/test/scala/org/marvin/util/ProtocolUtilTest.scala
diff --git a/python-toolbox/.dev b/python-toolbox/.dev
new file mode 100644
index 0000000..e69de29
diff --git a/python-toolbox/setup.py b/python-toolbox/setup.py
index 8e4526d..820953e 100644
--- a/python-toolbox/setup.py
+++ b/python-toolbox/setup.py
@@ -77,7 +77,8 @@ REQUIREMENTS_EXTERNAL = [
'joblib>=0.11',
'autopep8>=1.3.3',
'progressbar2>=3.34.3',
- 'urllib3>=1.21.1',
+ 'urllib3==1.21.1',
+ 'unidecode==1.0.23',
'idna>=2.5',
'bleach>=1.5.0',
'numpy==1.13.3'