commit | 8da7e6ddf8352dba5fb4f541f6dc288094ec263e | [log] [tgz] |
---|---|---|
author | David Liu <david.liu@cn.ibm.com> | Fri Sep 02 15:39:14 2016 +0800 |
committer | David Liu <david.liu@cn.ibm.com> | Fri Sep 02 15:58:13 2016 +0800 |
tree | 632146bebd738e1540eeda51179a2e5770fbe854 | |
parent | f97f437eddcc913f53f593bd504522ea1d04602b [diff] |
Add local couch db support. Fix issue #5.
#Openwhisk RSS Package
This package allows users to subscribe to RSS/ATOM feeds and receive events when a new feed item is available. It creates one event/activation per feed item that meets the criteria. Below is the hierarchy of the RSS Package.
openwhisk-package-rss/ ├── CONTRIBUTING.md |-- images ├── feeds │ └── feed.js ├── install.sh ├── LICENSE.txt ├── README.md ├── tests │ └── src │ └── RssTests.scala ├── tools │ └── travis │ └── build.sh ├── rssEventProvider │ └── app.js | |__ manifest.yml | |__ package.json └── uninstall.sh
##Architecture
##Package contents | Entity | Type | Parameters | Description | | --- | --- | --- | --- | | /namespace/rss
| package | - | Openwhisk Package Template | | /namespace/rss/rss_feed.js
| feed | details | Feed to provide events when a new rss item is available |
###Feeds parameters | Parameter | Type | Required | Description| Options | Default | Example | | ------------- | ---- | -------- | ------------ | ------- | ------- |------- | | url | string | yes | Url to RSS feed | - | - | “http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml” | | pollingInterval | string | yes | Interval at which polling is performed | - | - | “2h” | | filter | string | no | Comma separted list of keywords to filter on| - | - | “Washington D.C.,capital” |
Note: If the filter parameter enables logic that only searches for matches in the feed items' titles and descriptions. If 60% or more of the keywords are found in the RSS feed item, an event will be fired for the feed item. For example, given that filter “Washington D.C.,capital,politics”, an event will be fired only if 2 of the 3 keywords are present in the feed item.
##RSS Package Installation
###Bluemix Installation First you need to install wsk CLI, follow the instructions at https://new-console.ng.bluemix.net/openwhisk/cli
./install.sh openwhisk.ng.bluemix.net $AUTH_KEY wsk $PROVIDER_ENDPOINT
./uninstall.sh openwhisk.ng.bluemix.net $AUTH_KEY wsk
where:
wsk property get
to obtain it).###Local installation: Local installation requires running the OpenWhisk environment locally prior to installing the package. To run OpenWhisk locally follow the instructions at https://github.com/openwhisk/openwhisk/blob/master/tools/vagrant/README.md.
./install.sh $EDGE_HOST $AUTH_KEY $WSK_CLI $PROVIDER_ENDPOINT
./uninstall.sh $EDGE_HOST $AUTH_KEY $WSK_CLI
where :
wsk property get
to obtain it).This will create a new package called rss as well as feed action within the package.
##RSS Service(Event Provider) Deployment
In order to support the openwhisk package, there needs to be an event generating service that fires a trigger in the openwhisk environment. This service polls an RSS/ATOM source and applies logic to determine whether a feed item should be delivered to the openwhisk rss package. It internally uses Cloudant/CouchDB database to persist the triggers' information. You will need to initialized the DB prior to using this service. The event provider service keeps a registry of triggers. When a trigger is initially created, the service fires events for RSS feed items which are published within pollingInterval from now.
There are two options to deploy the service:
###Bluemix Deployment: This service can be hosted as a cf app on CloudFoundry. To deploy on IBM Bluemix:
cf push
###Local Deployment: This service can be ran as a node app on your local machine.
Install a local CouchDB, for how to install a CouchDB locally, please follow instruction at https://developer.ibm.com/open/2016/05/23/setup-openwhisk-use-local-couchdb/
Create a database with name ‘registered_triggers’ in the CouchDB.
Run the following command, node app.js CLOUDANT_USERNAME CLOUDANT_PASSWORD OPENWHISK_AUTH_KEY
Note: Local deployment of this service requires extra configuration if it's to be run with the Bluemix OpenWhisk.
##Usage of RSS package. To use this trigger feed, you need to pass the required parameters (refer to the table below)
wsk trigger create rss_trigger --feed /namespace/package/feed_name -p url 'url_to_rss' -p pollingInterval 'timePeriod'
e.g. wsk trigger create rss_trigger --feed /guest/rss/rss_feed -p url 'http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml' -p pollingInterval '2h'
Accepted polling interval formats: 2 days, 1d, 10h, 2.5hrs, 2h, 1m, 5s
##How to do tests The integration test could only be performed with a local openwhisk deployment:
openwhisk/tests/src/packages
vagrant ssh
to your local vagrant environmentgradle :tests:test --tests "packages.CLASS_NAME
To execute all tests, run gradle :tests:test
Please refer to CONTRIBUTING.md
Copyright 2015-2016 IBM Corporation
Licensed under the Apache License, Version 2.0 (the “License”).
Unless required by applicable law or agreed to in writing, software distributed under the license is distributed on an “as is” basis, without warranties or conditions of any kind, either express or implied. See the license for the specific language governing permissions and limitations under the license.