reuse Ansible playbooks to initialize the database (#10)

* reuse Ansible playbooks to initialize the database
diff --git a/docker-compose/Makefile b/docker-compose/Makefile
index 47ae230..e7c04f0 100644
--- a/docker-compose/Makefile
+++ b/docker-compose/Makefile
@@ -1,18 +1,10 @@
 DOCKER_HOST_IP ?= $(shell echo ${DOCKER_HOST} | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" || echo localhost)
 DOCKER_REGISTRY ?= ""
 DOCKER_IMAGE_PREFIX ?= whisk
-PROJECT_HOME ?= openwhisk-master
+PROJECT_HOME ?= ./openwhisk-master
 WSK_CLI ?= $(PROJECT_HOME)/bin/wsk
 
-OPEN_WHISK_DB_PROTOCOL ?= http
-OPEN_WHISK_DB_HOST ?= $(DOCKER_HOST_IP)
-OPEN_WHISK_DB_PORT ?= 5984
-OPEN_WHISK_DB_PROVIDER ?= CouchDB
-OPEN_WHISK_DB_USERNAME ?= whisk_admin
-OPEN_WHISK_DB_PASSWORD ?= some_passw0rd
-DB_SUBJECTS_DBS ?= subjects
-OPEN_WHISK_DB_ACTIONS ?= whisk_actions
-OPEN_WHISK_DB_GW ?= whisk_gateway
+OPEN_WHISK_DB_PREFIX ?= local_
 
 ifndef VERBOSE
 .SILENT:
@@ -28,7 +20,7 @@
 .PHONY: download
 download:
 	rm -rf ./openwhisk-master*
-	if [ "$(PROJECT_HOME)" = "openwhisk-master" ]; then \
+	if [ "$(PROJECT_HOME)" = "./openwhisk-master" ]; then \
 	    curl -O ./openwhisk-master.tar.gz -L https://api.github.com/repos/openwhisk/openwhisk/tarball/master > ./openwhisk-master.tar.gz; \
 	    mkdir openwhisk-master; \
 	    tar -xvf ./openwhisk-master.tar.gz --strip 1 -C openwhisk-master; \
@@ -53,7 +45,7 @@
 	    ./gradlew distdocker -x :core:swift3Action:distDocker -x :core:swiftAction:distDocker
 
 .PHONY: run
-run: check-required-ports setup start-docker-compose init-couchdb init-couchdb-actions init-whisk-cli
+run: check-required-ports setup start-docker-compose init-couchdb init-whisk-cli
 
 .PHONY: check-required-ports
 check-required-ports:
@@ -92,35 +84,15 @@
 	until $$(curl --output /dev/null --silent --head --fail http://$(DOCKER_HOST_IP):5984/_all_dbs); do printf '.'; sleep 5; done
 
 	echo "initializing the database ... "
-	# the folder config/keys is referenced from createSubjects.sh
-	mkdir -p db/config/keys
-	cp $(PROJECT_HOME)/ansible/files/auth.* db/config/keys
-
-	OPEN_WHISK_DB_PROVIDER=$(OPEN_WHISK_DB_PROVIDER) \
-	    OPEN_WHISK_DB_PROTOCOL=$(OPEN_WHISK_DB_PROTOCOL) \
-	    OPEN_WHISK_DB_HOST=$(OPEN_WHISK_DB_HOST) OPEN_WHISK_DB_PORT=$(OPEN_WHISK_DB_PORT) \
-	    OPEN_WHISK_DB_USERNAME=$(OPEN_WHISK_DB_USERNAME) OPEN_WHISK_DB_PASSWORD=$(OPEN_WHISK_DB_PASSWORD) \
-	    DB_SUBJECTS_DBS=$(DB_SUBJECTS_DBS) DB_WHISK_AUTHS=$(DB_SUBJECTS_DBS) \
-	    PROJECT_HOME=$(PROJECT_HOME) \
-	    db/createSubjects.sh
-
-	# cleanup the files referenced by createSubjects.sh
-	rm -rf db/config/keys
-
-.PHONY: init-couchdb-actions
-init-couchdb-actions:
-	echo "initializing CouchDB Views ... "
-	echo "" > $(PROJECT_HOME)/whisk.properties
-	echo db.provider=$(OPEN_WHISK_DB_PROVIDER) >> $(PROJECT_HOME)/whisk.properties
-	echo db.protocol=$(OPEN_WHISK_DB_PROTOCOL) >> $(PROJECT_HOME)/whisk.properties
-	echo db.host=$(OPEN_WHISK_DB_HOST) >> $(PROJECT_HOME)/whisk.properties
-	echo db.port=$(OPEN_WHISK_DB_PORT) >> $(PROJECT_HOME)/whisk.properties
-	echo db.username=$(OPEN_WHISK_DB_USERNAME) >> $(PROJECT_HOME)/whisk.properties
-	echo db.password=$(OPEN_WHISK_DB_PASSWORD) >> $(PROJECT_HOME)/whisk.properties
-	echo db.whisk.actions=$(OPEN_WHISK_DB_ACTIONS) >> $(PROJECT_HOME)/whisk.properties
-	echo db.whisk.apigw=$(OPEN_WHISK_DB_GW) >> $(PROJECT_HOME)/whisk.properties
-	cd $(PROJECT_HOME)/ && tools/db/wipeTransientDBs.sh
-	rm $(PROJECT_HOME)/whisk.properties
+	# make sure the src files are in a shared folder for docker
+	mkdir -p ~/tmp/openwhisk
+	rm -rf ~/tmp/openwhisk/src
+	rsync -av $(PROJECT_HOME)/* ~/tmp/openwhisk/src --exclude .git --exclude build --exclude tests
+	docker run --rm -v ~/tmp/openwhisk/src:/openwhisk -w /openwhisk/ansible \
+	    --network="host" -t \
+	    williamyeh/ansible:debian8  \
+	        ansible-playbook setup.yml initdb.yml wipe.yml \
+	            -e db_host=$(DOCKER_HOST_IP) -e openwhisk_home=/openwhisk -e db_prefix=$(OPEN_WHISK_DB_PREFIX)
 
 .PHONY: init-whisk-cli
 init-whisk-cli:
diff --git a/docker-compose/db/createSubjects.sh b/docker-compose/db/createSubjects.sh
deleted file mode 100755
index 1c07473..0000000
--- a/docker-compose/db/createSubjects.sh
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-
-#
-# create the subjects databases (in Cloudant or CouchDB)
-#
-# Usage: createSubjects.sh
-
-SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-
-URL_BASE="$OPEN_WHISK_DB_PROTOCOL://$OPEN_WHISK_DB_HOST:$OPEN_WHISK_DB_PORT"
-
-if [ "$OPEN_WHISK_DB_PROVIDER" == "CouchDB" ]; then
-    CURL_ADMIN="curl -s -k --user $OPEN_WHISK_DB_USERNAME:$OPEN_WHISK_DB_PASSWORD"
-
-    # First part of confirmation prompt.
-    echo "About to drop and recreate database '$DB_SUBJECTS_DBS' on:"
-    echo "  $URL_BASE"
-
-else
-    echo "Unrecognized OPEN_WHISK_DB_PROVIDER: '$OPEN_WHISK_DB_PROVIDER'"
-    exit 1
-fi
-
-GUEST_KEY=`cat "$SCRIPTDIR/config/keys/auth.guest"`
-WHISK_SYSTEM_KEY=`cat "$SCRIPTDIR/config/keys/auth.whisk.system"`
-
-# array of keys that need to be recreated in the auth table if it is ever dropped or in case of a fresh deployment
-SUBJECTS_KEYS=("guest:$GUEST_KEY" "whisk.system:$WHISK_SYSTEM_KEY")
-
-for db in $DB_SUBJECTS_DBS
-do
-    echo $db
-
-    # drop the database
-    CMD="$CURL_ADMIN -X DELETE $URL_BASE/$db"
-    echo $CMD
-    $CMD
-
-    # create the database
-    CMD="$CURL_ADMIN -X PUT $URL_BASE/$db"
-    echo $CMD
-    $CMD
-done
-
-# recreate the "full" index on the "auth" database
-$CURL_ADMIN -X POST -H 'Content-Type: application/json' \
-        -d @$PROJECT_HOME/ansible/files/auth_index.json \
-    $URL_BASE/$DB_WHISK_AUTHS;
-
-# recreate necessary "auth" keys
-for key in "${SUBJECTS_KEYS[@]}" ; do
-    SUBJECT="${key%%:*}"
-    UUID="${key%:*}"
-    UUID="${UUID##*:}"
-    KEY="${key##*:}"
-    echo Create key for $SUBJECT
-    $CURL_ADMIN -X POST -H 'Content-Type: application/json' \
-        -d "{
-            \"_id\": \"$SUBJECT\",
-            \"subject\": \"$SUBJECT\",
-            \"uuid\": \"$UUID\",
-            \"key\": \"$KEY\"
-         }" \
-    $URL_BASE/$DB_WHISK_AUTHS;
-done
diff --git a/docker-compose/docker-whisk-controller.env b/docker-compose/docker-whisk-controller.env
index edf6df1..b690b28 100644
--- a/docker-compose/docker-whisk-controller.env
+++ b/docker-compose/docker-whisk-controller.env
@@ -9,8 +9,8 @@
 SERVICE_CHECK_TIMEOUT=2s
 SERVICE_CHECK_INTERVAL=15s
 
-DB_PREFIX=local
-DB_WHISK_ACTIONS=whisk_actions
+DB_PREFIX=local_
+DB_WHISK_ACTIONS=local_whisks
 DB_WHISK_AUTHS=subjects
 
 KAFKA_NUMPARTITIONS=1