diff options
Diffstat (limited to 'workflow-designer-init/src')
-rw-r--r-- | workflow-designer-init/src/main/docker/Dockerfile | 10 | ||||
-rw-r--r-- | workflow-designer-init/src/main/docker/create_workflow_db.cql | 125 | ||||
-rw-r--r-- | workflow-designer-init/src/main/docker/start.sh | 33 |
3 files changed, 168 insertions, 0 deletions
diff --git a/workflow-designer-init/src/main/docker/Dockerfile b/workflow-designer-init/src/main/docker/Dockerfile new file mode 100644 index 00000000..75e7efdc --- /dev/null +++ b/workflow-designer-init/src/main/docker/Dockerfile @@ -0,0 +1,10 @@ +FROM alpine:3.7 + +RUN apk add --no-cache 'python<3' py-pip && pip install cqlsh==4.0.1 + +COPY create_workflow_db.cql . +COPY start.sh . + +RUN chmod 744 start.sh + +ENTRYPOINT ["./start.sh"]
\ No newline at end of file diff --git a/workflow-designer-init/src/main/docker/create_workflow_db.cql b/workflow-designer-init/src/main/docker/create_workflow_db.cql new file mode 100644 index 00000000..c6c1f15e --- /dev/null +++ b/workflow-designer-init/src/main/docker/create_workflow_db.cql @@ -0,0 +1,125 @@ +CREATE KEYSPACE IF NOT EXISTS WORKFLOW +WITH DURABLE_WRITES = TRUE +AND REPLICATION = { + 'class' : 'SimpleStrategy', + 'replication_factor' : 1 +}; + +USE WORKFLOW; + +CREATE TABLE IF NOT EXISTS UNIQUE_VALUE ( + TYPE TEXT, + VALUE TEXT, + PRIMARY KEY (( TYPE, VALUE )) +); + +CREATE KEYSPACE IF NOT EXISTS ZUSAMMEN_WORKFLOW +WITH REPLICATION = { + 'class' : 'SimpleStrategy', + 'replication_factor' : 1 +}; + +USE ZUSAMMEN_WORKFLOW; + +CREATE TABLE IF NOT EXISTS ITEM ( + ITEM_ID TEXT PRIMARY KEY, + ITEM_INFO TEXT, + CREATION_TIME TIMESTAMP, + MODIFICATION_TIME TIMESTAMP +); + +CREATE TABLE IF NOT EXISTS VERSION ( + SPACE TEXT, + ITEM_ID TEXT, + VERSION_ID TEXT, + BASE_VERSION_ID TEXT, + INFO TEXT, + RELATIONS TEXT, + CREATION_TIME TIMESTAMP, + MODIFICATION_TIME TIMESTAMP, + PRIMARY KEY (( SPACE, ITEM_ID ), VERSION_ID) +); + +CREATE TABLE IF NOT EXISTS VERSION_ELEMENTS ( + SPACE TEXT, + ITEM_ID TEXT, + VERSION_ID TEXT, + REVISION_ID TEXT, + ELEMENT_IDS MAP<TEXT, TEXT>, + DIRTY_ELEMENT_IDS SET<TEXT>, + STAGE_ELEMENT_IDS SET<TEXT>, + CONFLICT_ELEMENT_IDS SET<TEXT>, + PUBLISH_TIME TIMESTAMP, + USER TEXT, + MESSAGE TEXT, + PRIMARY KEY (( SPACE, ITEM_ID, VERSION_ID ), REVISION_ID) +); + +CREATE TABLE IF NOT EXISTS ELEMENT_NAMESPACE ( + ITEM_ID TEXT, + ELEMENT_ID TEXT, + NAMESPACE TEXT, + PRIMARY KEY (( ITEM_ID, ELEMENT_ID )) +); + +CREATE TABLE IF NOT EXISTS ELEMENT ( + SPACE TEXT, + ITEM_ID TEXT, + VERSION_ID TEXT, + ELEMENT_ID TEXT, + REVISION_ID TEXT, + PARENT_ID TEXT, + NAMESPACE TEXT, + INFO TEXT, + RELATIONS TEXT, + DATA BLOB, + SEARCHABLE_DATA BLOB, + VISUALIZATION BLOB, + SUB_ELEMENT_IDS SET<TEXT>, + ELEMENT_HASH TEXT, + PRIMARY KEY (( SPACE, ITEM_ID, VERSION_ID, ELEMENT_ID ), REVISION_ID) +); + +CREATE TABLE IF NOT EXISTS ELEMENT_SYNCHRONIZATION_STATE ( + SPACE TEXT, + ITEM_ID TEXT, + VERSION_ID TEXT, + ELEMENT_ID TEXT, + REVISION_ID TEXT, + PUBLISH_TIME TIMESTAMP, + DIRTY BOOLEAN, + PRIMARY KEY (( SPACE, ITEM_ID, VERSION_ID ), ELEMENT_ID, REVISION_ID) +); + +CREATE TABLE IF NOT EXISTS ELEMENT_STAGE ( + SPACE TEXT, + ITEM_ID TEXT, + VERSION_ID TEXT, + ELEMENT_ID TEXT, + PARENT_ID TEXT, + NAMESPACE TEXT, + INFO TEXT, + RELATIONS TEXT, + DATA BLOB, + SEARCHABLE_DATA BLOB, + VISUALIZATION BLOB, + SUB_ELEMENT_IDS SET<TEXT>, + ELEMENT_HASH TEXT, + PUBLISH_TIME TIMESTAMP, + ACTION TEXT, + CONFLICTED BOOLEAN, + CONFLICT_DEPENDENT_IDS SET<TEXT>, + PRIMARY KEY (( SPACE, ITEM_ID, VERSION_ID, ELEMENT_ID )) +); + +CREATE TABLE IF NOT EXISTS VERSION_STAGE ( + SPACE TEXT, + ITEM_ID TEXT, + VERSION_ID TEXT, + BASE_VERSION_ID TEXT, + CREATION_TIME TIMESTAMP, + MODIFICATION_TIME TIMESTAMP, + PUBLISH_TIME TIMESTAMP, + ACTION TEXT, + PRIMARY KEY (( SPACE, ITEM_ID ), VERSION_ID) +);
\ No newline at end of file diff --git a/workflow-designer-init/src/main/docker/start.sh b/workflow-designer-init/src/main/docker/start.sh new file mode 100644 index 00000000..919277fd --- /dev/null +++ b/workflow-designer-init/src/main/docker/start.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +is_cs_unauthenticated=1 +FALSE=0 +if [[ -z "${CS_AUTHENTICATE}" || "${CS_AUTHENTICATE}" == "false" ]]; then + is_cs_unauthenticated=$FALSE +fi + +if [ $is_cs_unauthenticated -eq $FALSE ]; then + echo "Establishing unsecured connection to Cassandra" +fi + +if [[ $is_cs_unauthenticated -eq 1 && -z "${CS_USER}" ]]; then + echo "CS_USER environment variable must be set" + exit 1 +fi + +if [[ $is_cs_unauthenticated -eq 1 && -z "${CS_PASSWORD}" ]]; then + echo "CS_PASSWORD environment variable must be set" + exit 1 +fi + +if [[ -z "${CS_HOST}" ]]; then + echo "CS_HOST environment variable must be set" + exit 1 +fi + +if [ $is_cs_unauthenticated -eq 1 ]; then + cqlsh -u ${CS_USER} -p ${CS_PASSWORD} -f /create_workflow_db.cql ${CS_HOST} ${CS_PORT} +else + cqlsh -f /create_workflow_db.cql ${CS_HOST} ${CS_PORT} +fi + |