You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by dr...@apache.org on 2018/02/02 08:01:31 UTC

[incubator-openwhisk-devtools] branch master updated: Add support for installing optional packages. (#83)

This is an automated email from the ASF dual-hosted git repository.

dragos pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-devtools.git


The following commit(s) were added to refs/heads/master by this push:
     new ce69d1d  Add support for installing optional packages. (#83)
ce69d1d is described below

commit ce69d1d748cf7f6f4660cc46f4c33844c834bb91
Author: James Thomas <jt...@gmail.com>
AuthorDate: Fri Feb 2 08:01:29 2018 +0000

    Add support for installing optional packages. (#83)
    
    * Add support for installing optional packages.
    
    Downloads, installs package actions and start provider containers for
    Alarms, Kafka and Cloudant packages.
    
    * Added docs to README for catalog and feed provider steps.
    
    * Check for open ports before installing providers
---
 docker-compose/Makefile                    | 84 +++++++++++++++++++++++++++++-
 docker-compose/README.md                   | 42 ++++++++++++++-
 docker-compose/docker-compose.packages.yml | 63 ++++++++++++++++++++++
 3 files changed, 186 insertions(+), 3 deletions(-)

diff --git a/docker-compose/Makefile b/docker-compose/Makefile
index a1fd22c..21e9a32 100644
--- a/docker-compose/Makefile
+++ b/docker-compose/Makefile
@@ -17,7 +17,6 @@ DOCKER_IMAGE_PREFIX ?= openwhisk
 PROJECT_HOME ?= ./openwhisk-master
 CATALOG_HOME ?= ./openwhisk-catalog
 WSK_CLI ?= $(PROJECT_HOME)/bin/wsk
-
 OPEN_WHISK_DB_PREFIX ?= local_
 
 DOCKER_KERNEL ?= $(shell docker version --format "{{.Server.KernelVersion}}")
@@ -97,7 +96,6 @@ download-cli:
          echo "Skipping downloading the cli from git as PROJECT_HOME is not default:" $(PROJECT_HOME); \
 	fi
 
-
 .PHONY: run
 run: print-host check-required-ports setup start-docker-compose init-couchdb init-whisk-cli
 
@@ -113,6 +111,36 @@ check-required-ports:
 	done
 	echo " ... OK"
 
+.PHONY: check-alarm-ports
+check-alarm-ports:
+	echo "checking required ports ... "
+	for port in 8081; do \
+		pid=`lsof -Pi :$$port -sTCP:LISTEN -t` ; \
+		if [ ! -z "$$pid" ];  then echo "$$(tput setaf 1)Port $$port is taken by PID:$$pid.$$(tput sgr0)"; exit 1; fi; \
+	done
+	echo " ... OK"
+
+.PHONY: check-cloudant-ports
+check-cloudant-ports:
+	echo "checking required ports ... "
+	for port in 8082; do \
+		pid=`lsof -Pi :$$port -sTCP:LISTEN -t` ; \
+		if [ ! -z "$$pid" ];  then echo "$$(tput setaf 1)Port $$port is taken by PID:$$pid.$$(tput sgr0)"; exit 1; fi; \
+	done
+	echo " ... OK"
+
+.PHONY: check-kafka-ports
+check-kafka-ports:
+	echo "checking required ports ... "
+	for port in 5000; do \
+		pid=`lsof -Pi :$$port -sTCP:LISTEN -t` ; \
+		if [ ! -z "$$pid" ];  then echo "$$(tput setaf 1)Port $$port is taken by PID:$$pid.$$(tput sgr0)"; exit 1; fi; \
+	done
+	echo " ... OK"
+
+
+
+
 .PHONY: setup
 setup:
 	mkdir -p ~/tmp/openwhisk/apigateway/ssl
@@ -244,3 +272,55 @@ hello-world-perf-test: create-hello-world-function
 
 	$(WSK_CLI) -i action delete hello-perf
 	rm hello.js
+
+# Optional package configuration stages. These commands will install and set up
+# the alarms, cloudant and kakfa packages.
+PACKAGES = alarms cloudant kafka
+PACKAGE_ALARMS_HOME ?= ./openwhisk-package-alarms
+PACKAGE_CLOUDANT_HOME ?= ./openwhisk-package-cloudant
+PACKAGE_KAFKA_HOME ?= ./openwhisk-package-kafka
+CREATE_PACKAGE_STEPS = download-package- install-package- start-provider-
+
+create-provider-alarms: check-alarm-ports setup-providers $(addsuffix alarms,$(CREATE_PACKAGE_STEPS))
+
+create-provider-cloudant: check-cloudant-ports setup-providers $(addsuffix cloudant,$(CREATE_PACKAGE_STEPS))
+
+create-provider-kafka: check-kafka-ports setup-providers $(addsuffix kafka,$(CREATE_PACKAGE_STEPS))
+
+.PHONY: setup-providers
+setup-providers:
+	printf "OPENWHISK_HOME=$(realpath $(PROJECT_HOME))\n" > ~/tmp/openwhisk/providers.env
+	printf "ENDPOINT_AUTH=`cat $(realpath $(PROJECT_HOME))/ansible/files/auth.whisk.system`\n" >> ~/tmp/openwhisk/providers.env
+	printf "HOST_MACHINE=$(DOCKER_HOST_IP)\n" >> ~/tmp/openwhisk/providers.env
+	printf "DOCKER_COMPOSE_HOST=$(DOCKER_HOST_IP)\n" >> ~/tmp/openwhisk/providers.env
+
+.PHONY: $(addprefix download-package-,$(PACKAGES))
+$(addprefix download-package-,$(PACKAGES)):
+	$(eval PACKAGE_NAME:= $(shell echo $(@) | cut -b 18-))
+	$(eval PACKAGE_HOME := $(PACKAGE_$(shell echo $(PACKAGE_NAME) |  tr 'a-z' 'A-Z')_HOME))
+	echo "Downloading package" $(PACKAGE_NAME) "into" $(PACKAGE_HOME)
+	rm -rf ./openwhisk-package-$(PACKAGE_NAME)*
+	if [ "$(PACKAGE_HOME)" = "./openwhisk-package-$(PACKAGE_NAME)" ]; then \
+	    curl -O ./openwhisk-package-$(PACKAGE_NAME).tar.gz -L https://api.github.com/repos/apache/incubator-openwhisk-package-$(PACKAGE_NAME)/tarball/master > ./openwhisk-package-$(PACKAGE_NAME).tar.gz; \
+	    mkdir openwhisk-package-$(PACKAGE_NAME); \
+	    tar -xf ./openwhisk-package-$(PACKAGE_NAME).tar.gz --strip 1 -C openwhisk-package-$(PACKAGE_NAME); \
+	else \
+	     echo "Skipping downloading the code from git as PACKAGE_HOME is not default:" $(PACKAGE_HOME); \
+	fi
+
+.PHONY: $(addprefix install-package-,$(PACKAGES))
+$(addprefix install-package-,$(PACKAGES)):
+	$(eval PACKAGE_NAME:= $(shell echo $(@) | cut -b 17-))
+	$(eval PACKAGE_HOME := $(PACKAGE_$(shell echo $(PACKAGE_NAME) |  tr 'a-z' 'A-Z')_HOME))
+	cd $(PACKAGE_HOME) && \
+	$(shell cat ~/tmp/openwhisk/providers.env) ./installCatalog.sh $(realpath $(PROJECT_HOME))/ansible/files/auth.whisk.system $(DOCKER_HOST_IP) "http://$(DOCKER_HOST_IP):5984" $(OPEN_WHISK_DB_PREFIX) $(DOCKER_HOST_IP)
+
+.PHONY: $(addprefix start-provider-,$(PACKAGES))
+$(addprefix start-provider-,$(PACKAGES)):
+	$(eval PACKAGE_NAME:= $(shell echo $(@) | cut -b 16-))
+	$(shell cat ~/tmp/openwhisk/providers.env) docker-compose -f docker-compose.yml -f docker-compose.packages.yml --project-name openwhisk up --no-recreate $(PACKAGE_NAME)provider 2>&1 > ~/tmp/openwhisk/docker-provider-compose.log &
+
+.PHONY: $(addprefix stop-provider-,$(PACKAGES))
+$(addprefix stop-provider-,$(PACKAGES)): setup-providers
+	$(eval PACKAGE_NAME:= $(shell echo $(@) | cut -b 15-))
+	$(shell cat ~/tmp/openwhisk/providers.env) docker-compose -f docker-compose.yml -f docker-compose.packages.yml --project-name openwhisk stop $(PACKAGE_NAME)provider
diff --git a/docker-compose/README.md b/docker-compose/README.md
index 02e24f9..99f7362 100644
--- a/docker-compose/README.md
+++ b/docker-compose/README.md
@@ -129,11 +129,51 @@ The result of the invokation should be printed on the terminal:
 
 Here is a [tutorial on getting started with actions](https://github.com/IBM-Bluemix/openwhisk-workshops/tree/master/bootcamp#start-your-engines).
 
+## Install Catalog Packages
+
+OpenWhisk has [numerous extra packages](https://github.com/apache/incubator-openwhisk-catalog) that are often installed into the `/whisk.system` namespace.
+
+***These are not included by default with the devtools  `make quick-start` command.***
+
+If you want to install these packages, run the following make command.
+
+```bash
+make add-catalog
+```
+
+Once the installation process has completed, you can check the `whisk.system` namespace to verify it those packages are now available.
+
+```
+wsk package list /whisk.system
+```
+
+## Install Feed Providers
+
+OpenWhisk supports [feed providers](https://github.com/apache/incubator-openwhisk/blob/master/docs/feeds.md) for invoking triggers from external event sources.
+
+***Feed provider packages are not included by default with the devtools  `make quick-start` command.***
+
+Providers for the [`alarms`](https://github.com/apache/incubator-openwhisk-package-alarms), [`kafka`](https://github.com/apache/incubator-openwhisk-package-kafka) and [`cloudant`](https://github.com/apache/incubator-openwhisk-package-cloudant) feeds can be installed individually using the `make` command.
+
+```bash
+make create-provider-alarms
+make create-provider-kafka
+make create-provider-cloudant
+```
+
+Once the installation process has completed, you can check the `whisk.system` namespace to verify it the feed packages are now available.
+
+```
+wsk package list /whisk.system
+```
+
 ## Logs
 
 - OpenWhisk Controller - `~/tmp/openwhisk/controller/logs/`
 - OpenWhisk Invoker - `~/tmp/openwhisk/invoker/logs/`
 - `docker-compose` logs - `~/tmp/openwhisk/docker-compose.log`
+- `docker-compose` feed provider logs - `~/tmp/openwhisk/docker-provider-compose.log`
+- Feed provider instance logs - `~/tmp/openwhisk/<feed_name>provider`
 - Action output such as stdout or console.log(): `wsk -i activation logs <activationId>`
 
 
@@ -150,4 +190,4 @@ These 2 variable allow you to execute a JS action using the container `registry.
 
 By default this setup uses published images for controller and invokers from `openwhisk` namespace i.e. 
 `openwhisk/controller` and `openwhisk/invoker`. To make use of locally build images you can use `DOCKER_OW_IMAGE_PREFIX`
-variable i.e. `DOCKER_OW_IMAGE_PREFIX=whisk make quick-start`
\ No newline at end of file
+variable i.e. `DOCKER_OW_IMAGE_PREFIX=whisk make quick-start`
diff --git a/docker-compose/docker-compose.packages.yml b/docker-compose/docker-compose.packages.yml
new file mode 100644
index 0000000..0e4a62b
--- /dev/null
+++ b/docker-compose/docker-compose.packages.yml
@@ -0,0 +1,63 @@
+version: '3'
+services:
+  alarmsprovider:
+    image: ${DOCKER_OW_IMAGE_PREFIX:-openwhisk}/alarmprovider
+    ports:
+      - "8081:8080"
+    links:
+      - db:db.docker
+      - apigateway:apigateway.docker
+      - redis:redis.docker
+    environment:
+      DB_PROTOCOL: http
+      DB_HOST: db.docker:5984
+      DB_USERNAME: whisk_admin
+      DB_PASSWORD: some_passw0rd
+      DB_PREFIX: ${OPEN_WHISK_DB_PREFIX:-local_}
+      HOST_MACHINE: ${HOST_MACHINE}
+      ROUTER_HOST: apigateway.docker
+      ENDPOINT_AUTH: ${ENDPOINT_AUTH}
+      REDIS_URL: redis://redis.docker:6379
+    volumes:
+      - ~/tmp/openwhisk/alarmsprovider:/logs
+  cloudantprovider:
+    image: ${DOCKER_OW_IMAGE_PREFIX:-openwhisk}/cloudantprovider
+    ports:
+      - "8082:8080"
+    links:
+      - db:db.docker
+      - apigateway:apigateway.docker
+      - redis:redis.docker
+    environment:
+      DB_PROTOCOL: http
+      DB_HOST: db.docker:5984
+      DB_USERNAME: whisk_admin
+      DB_PASSWORD: some_passw0rd
+      DB_PREFIX: ${OPEN_WHISK_DB_PREFIX:-local_}
+      HOST_MACHINE: ${HOST_MACHINE}
+      ROUTER_HOST: apigateway.docker
+      ENDPOINT_AUTH: ${ENDPOINT_AUTH}
+      REDIS_URL: redis://redis.docker:6379
+    volumes:
+      - ~/tmp/openwhisk/cloudantprovider:/logs
+  kafkaprovider:
+    image: ${DOCKER_OW_IMAGE_PREFIX:-openwhisk}/kafkaprovider
+    command: /bin/bash -c "cd KafkaFeedProvider && python -u app.py >> /logs/kafkaTrigger_logs.log 2>&1"
+    ports:
+      - "5000:5000"
+    links:
+      - db:db.docker
+      - apigateway:apigateway.docker
+      - redis:redis.docker
+    environment:
+      DB_URL: http://db.docker:5984
+      DB_USER: whisk_admin
+      DB_PASS: some_passw0rd
+      DB_PREFIX: ${OPEN_WHISK_DB_PREFIX:-local_}
+      LOCAL_DEV: "True" 
+      HOST_MACHINE: ${HOST_MACHINE}
+      ROUTER_HOST: apigateway.docker
+      ENDPOINT_AUTH: ${ENDPOINT_AUTH}
+      REDIS_URL: redis://redis.docker:6379
+    volumes:
+      - ~/tmp/openwhisk/kafkaprovider:/logs

-- 
To stop receiving notification emails like this one, please contact
dragos@apache.org.