Fix API gw installation issue and use local .wskprops files (#200)
* Improvements to make quick-start.
* Use local wskproperties file instead of overwriting the users file if it exists.
diff --git a/.gitignore b/.gitignore
index 3cdf0a8..3d8fc6e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
openwhisk-src
+.wskprops
*.iml
.idea
diff --git a/docker-compose/Makefile b/docker-compose/Makefile
index 15dd0b1..7d60234 100644
--- a/docker-compose/Makefile
+++ b/docker-compose/Makefile
@@ -19,9 +19,10 @@
DOCKER_REGISTRY ?= ""
DOCKER_IMAGE_PREFIX ?= openwhisk
OPENWHISK_VERSION ?= master
-OPENWHISK_PROJECT_HOME ?= ./openwhisk-src
-OPENWHISK_CATALOG_HOME ?= ./openwhisk-catalog
+OPENWHISK_PROJECT_HOME ?= $(CURDIR)/openwhisk-src
+OPENWHISK_CATALOG_HOME ?= $(CURDIR)/openwhisk-catalog
WSK_CLI ?= $(OPENWHISK_PROJECT_HOME)/bin/wsk
+WSK_CONFIG_FILE=$(CURDIR)/.wskprops
OPEN_WHISK_DB_PREFIX ?= local_
DOCKER_KERNEL ?= $(shell docker version --format "{{.Server.KernelVersion}}")
@@ -46,10 +47,10 @@
.PHONY: download-src
download-src:
- if [ ! $(OPENWHISK_PROJECT_HOME) = "./openwhisk-src" ]; then \
+ if [ ! $(OPENWHISK_PROJECT_HOME) = "$(CURDIR)/openwhisk-src" ]; then \
echo "Skipping downloading the code as OPENWHISK_PROJECT_HOME is set to " $(OPENWHISK_PROJECT_HOME); \
else \
- rm -rf ./openwhisk-src; \
+ rm -rf $(CURDIR)/openwhisk-src; \
curl -o ./openwhisk-src.tar.gz -L https://github.com/apache/incubator-openwhisk/archive/$(OPENWHISK_VERSION).tar.gz; \
echo "Unpacking tarball."; \
mkdir -p $(OPENWHISK_PROJECT_HOME); \
@@ -59,8 +60,8 @@
.PHONY: download-catalog
download-catalog:
- if [ "$(OPENWHISK_CATALOG_HOME)" = "./openwhisk-catalog" ]; then \
- rm -rf ./openwhisk-catalog*; \
+ if [ "$(OPENWHISK_CATALOG_HOME)" = "$(CURDIR)/openwhisk-catalog" ]; then \
+ rm -rf $(CURDIR)/openwhisk-catalog*; \
curl -O ./openwhisk-catalog.tar.gz -L https://api.github.com/repos/apache/incubator-openwhisk-catalog/tarball/master > ./openwhisk-catalog.tar.gz; \
mkdir openwhisk-catalog; \
tar -xf ./openwhisk-catalog.tar.gz --strip 1 -C openwhisk-catalog; \
@@ -77,9 +78,10 @@
.PHONY: quick-start-info
quick-start-info:
- echo "$$(tput setaf 2)To invoke the function again use: $$(tput setaf 4)make hello-world$$(tput sgr0)"
- echo "$$(tput setaf 2)To stop OpenWhisk use: $$(tput setaf 4)make destroy$$(tput sgr0)"
-
+ echo "$$(tput setaf 2)To invoke the function again use: $$(tput setaf 6)make hello-world$$(tput sgr0)"
+ echo "$$(tput setaf 2)To stop OpenWhisk use: $$(tput setaf 6)make destroy$$(tput sgr0)"
+ echo "$$(tput setaf 2)To use the wsk CLI: $$(tput setaf 6)export WSK_CONFIG_FILE=$(WSK_CONFIG_FILE)$$(tput sgr0)"
+ echo " $$(tput setaf 6)or copy the file to $(HOME)/.wskprops$$(tput sgr0)"
# deprecated commands
.PHONY: docker_build
docker_build:
@@ -292,15 +294,17 @@
init-whisk-cli:
echo "waiting for the Whisk controller to come up ... "
until $$(curl --output /dev/null --silent --head --fail http://$(DOCKER_HOST_IP):8888/ping); do printf '.'; sleep 5; done
- echo "initializing CLI ... "
- $(WSK_CLI) -v property set --namespace guest --auth `cat $(OPENWHISK_PROJECT_HOME)/ansible/files/auth.guest` --apihost https://$(DOCKER_HOST_IP) -i
+ echo "initializing CLI properties into $(WSK_CONFIG_FILE)"
+ WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) property set --namespace guest --auth `cat $(OPENWHISK_PROJECT_HOME)/ansible/files/auth.guest` --apihost https://$(DOCKER_HOST_IP) -i
.PHONY: init-api-management
init-api-management:
- $(WSK_CLI) -v property set --namespace whisk.system --auth `cat $(OPENWHISK_PROJECT_HOME)/ansible/files/auth.whisk.system` --apihost $(DOCKER_HOST_IP) -i
- GW_USER="" GW_PWD="" GW_HOST_V2="http://$(DOCKER_HOST_IP):9000/v2" OPENWHISK_HOME=$(OPENWHISK_PROJECT_HOME) \
- $(OPENWHISK_PROJECT_HOME)/ansible/roles/routemgmt/files/installRouteMgmt.sh $(shell cat $(OPENWHISK_PROJECT_HOME)/ansible/files/auth.whisk.system) $(DOCKER_HOST_IP) /whisk.system $(WSK_CLI)
- $(WSK_CLI) -v property set --namespace guest --auth `cat $(OPENWHISK_PROJECT_HOME)/ansible/files/auth.guest` --apihost $(DOCKER_HOST_IP) -i
+ touch $(OPENWHISK_PROJECT_HOME)/whisk.properties
+ GW_USER="" \
+ GW_PWD="" \
+ GW_HOST_V2="http://$(DOCKER_HOST_IP):9000/v2" \
+ OPENWHISK_HOME=$(OPENWHISK_PROJECT_HOME) \
+ $(OPENWHISK_PROJECT_HOME)/ansible/roles/routemgmt/files/installRouteMgmt.sh $(shell cat $(OPENWHISK_PROJECT_HOME)/ansible/files/auth.whisk.system) $(DOCKER_HOST_IP) /whisk.system $(WSK_CLI)
.PHONY: init-catalog
init-catalog:
@@ -331,25 +335,25 @@
echo "invoking the hello-world function ... "
echo "$$(tput setaf 4)adding the function to whisk ...$$(tput sgr0)"
- $(WSK_CLI) -i action create hello hello.js
+ WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i action create hello hello.js
echo "$$(tput setaf 4)invoking the function ...$$(tput sgr0)"
- res=`$(WSK_CLI) -i action invoke hello --blocking --result` \
+ res=`WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i action invoke hello --blocking --result` \
&& echo "invocation result:" $$res \
- && (echo $$res | grep "Hello, World") || ($(WSK_CLI) -i action delete hello && tail -n 200 ~/tmp/openwhisk/invoker/logs/invoker-local_logs.log ~/tmp/openwhisk/controller/logs/controller-local_logs.log && exit 1)
+ && (echo $$res | grep "Hello, World") || (WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i action delete hello && tail -n 200 ~/tmp/openwhisk/invoker/logs/invoker-local_logs.log ~/tmp/openwhisk/controller/logs/controller-local_logs.log && exit 1)
echo "$$(tput setaf 4)creating an API from the hello function ...$$(tput sgr0)"
- $(WSK_CLI) -i action update "/guest/hello" --web true
- web_action=`$(WSK_CLI) -i api create /hello /world get hello --response-type json | tail -n 1` \
+ WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i action update "/guest/hello" --web true
+ web_action=`WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i api create /hello /world get hello --response-type json | tail -n 1` \
&& echo "invoking: " $$web_action \
&& (echo $$web_action | xargs curl -sS | grep "Hello, World") || (echo "Error invoking the web action" && tail -n 200 ~/tmp/openwhisk/invoker/logs/invoker-local_logs.log ~/tmp/openwhisk/controller/logs/controller-local_logs.log && exit 1)
- $(WSK_CLI) -i api list /hello
+ WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i api list /hello
echo "$$(tput setaf 1)deleting the API ...$$(tput sgr0)"
- $(WSK_CLI) -i api delete /hello
+ WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i api delete /hello
echo "$$(tput setaf 1)deleting the function ...$$(tput sgr0)"
- $(WSK_CLI) -i action delete hello
+ WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i action delete hello
rm hello.js
.PHONY: create-hello-world-function
@@ -360,7 +364,7 @@
# Using the hello-world function this task executes a performance test using Apache Benchmark
.PHONY: hello-world-perf-test
hello-world-perf-test: create-hello-world-function
- $(WSK_CLI) -i action create hello-perf hello.js
+ WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i action create hello-perf hello.js
docker run --rm \
--net openwhisk_default \
@@ -369,7 +373,7 @@
-H "Content-Type:application/json" \
http://controller:8888/api/v1/namespaces/guest/actions/hello-perf?blocking=true
- $(WSK_CLI) -i action delete hello-perf
+ WSK_CONFIG_FILE=$(WSK_CONFIG_FILE) $(WSK_CLI) -i action delete hello-perf
rm hello.js
.PHONY: pull