This module is a collection of few utility scripts for OpenWhisk development. The scripts can be invoked as gradle tasks. Depending on your current directory the gradle command would change
With current directory set to OpenWhisk home
./gradlew :tools:dev:<taskName>
With this module being base directory
../../gradlew <taskName>
Extracts and dump the design docs js in readable format. It reads all the design docs from <OPENWHISH_HOME>/ansibles/files and dumps them in build/views directory
Sample output
$./gradlew :tools:dev:couchdbViews Processing whisks_design_document_for_entities_db_v2.1.0.json - whisks.v2.1.0-rules.js - whisks.v2.1.0-packages-public.js - whisks.v2.1.0-packages.js - whisks.v2.1.0-actions.js - whisks.v2.1.0-triggers.js Processing activations_design_document_for_activations_db.json - activations-byDate.js Processing auth_index.json - subjects-identities.js Processing filter_design_document.json Processing whisks_design_document_for_activations_db_v2.1.0.json - whisks.v2.1.0-activations.js Skipping runtimes.json Processing logCleanup_design_document_for_activations_db.json - logCleanup-byDateWithLogs.js Processing whisks_design_document_for_all_entities_db_v2.1.0.json - all-whisks.v2.1.0-all.js Processing whisks_design_document_for_activations_db_filters_v2.1.0.json - whisks-filters.v2.1.0-activations.js Generated view json files in /path/too/tools/build/views
This script enables creation of Intellij Launch Configuration in /.idea/runConfigurations with name controller0 and invoker0. For this to work your Intellij project should be directory based. If your project is file based (uses ipr files) then you can convert it to directory based via File -> Save as Directory-Based Format. These run configurations can then be invoked from Run -> Edit Configurations -> Application
First setup OpenWhisk so that Controller and Invoker containers are up and running. Then run the script:
./gradlew :tools:dev:intellij
It would inspect the running docker containers and then generate the launch configs with name ‘controller0’ and ‘invoker0’.
Now the docker container(s) (controller and/or invoker) can be stopped and they can be launched instead from within the IDE.
Key points to note:
10001
and Invoker uses port 12001
.sudo ifconfig lo0 alias 172.17.0.1/24
~/.wskprops
must be updated with APIHOST=http://localhost:10001
so that the wsk
CLI communicates directly with the controller.With Docker For Mac the invoker is configured to use a Container Factory that exposes ports for actions on the host, as otherwise the invoker can't make HTTP requests to the actions. You can read more at docker/for-mac#171.
When using docker-compose locally you have to update /etc/hosts
with the line bellow:
127.0.0.1 kafka zookeeper kafka.docker zookeeper.docker db.docker controller whisk.controller
The script allows some local customization of the launch configuration. This can be done by creating a config file intellij-run-config.groovy
in project root directory. Below is an example of /intellij-run-config.groovy file to customize the logging and db port used for CouchDB.
//Configures the settings for controller application controller { //Base directory used for controller process workingDir = "/path/to/controller" //System properties to be set props = [ 'logback.configurationFile':'/path/to/custom/logback.xml' ] //Environment variables to be set env = [ 'DB_PORT' : '5989', 'CONFIG_whisk_controller_protocol' : 'http' ] } invoker { workingDir = "/path/to/invoker" props = [ 'logback.configurationFile':'/path/to/custom/logback.xml' ] env = [ 'DB_PORT' : '5989' ] }
The config allows following properties:
workingDir
- Base directory used for controller or invoker process.props
- Map of system properties which should be passed to the application.env
- Map of environment variables which should be set for application process.Lists all Apache OpenWhisk related repositories by using Github Search API with pagination. Its preferable that prior to using this you specify a Github Access Token as otherwise requests will quickly become rate limited. The token can be specified by setting environment variable GITHUB_ACCESS_TOKEN
$ ./gradlew :tools:dev:listRepos Found 44 repositories openwhisk openwhisk-GitHubSlackBot openwhisk-apigateway openwhisk-catalog ... Stored the list in /openwhisk_home/build/repos/repos.txt Stored the JSON details in /openwhisk_home/build/repos/repos.json
It generates 2 files
repos.txt
- List repository names one per line.repos.json
- Stores an array of repository details JSON containing various repository related details.It renders a markdown file which lists the status of various OpenWhisk modules by using the output generated by listRepos
task. The rendered markdown file is stored in docs/dev/modules.md
. This rendered file should be later checked in.
$ ./gradlew :tools:dev:renderModuleDetails > Task :tools:dev:renderModuleDetails Generated modules details at /openwhisk_home/docs/dev/modules.md