You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ja...@apache.org on 2019/07/16 14:13:18 UTC
[incubator-openwhisk-client-js] branch master updated: Add
annotation support for rules, triggers and packages. (#186)
This is an automated email from the ASF dual-hosted git repository.
jamesthomas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-client-js.git
The following commit(s) were added to refs/heads/master by this push:
new 3cd0257 Add annotation support for rules, triggers and packages. (#186)
3cd0257 is described below
commit 3cd025738f740080fc3d7b971f500a977914c568
Author: James Thomas <ja...@jamesthom.as>
AuthorDate: Tue Jul 16 15:13:13 2019 +0100
Add annotation support for rules, triggers and packages. (#186)
This was missing but looking at the API and CLI should
can be used with the following resources.
Fixes #165
---
README.md | 3 +++
lib/actions.js | 4 ----
lib/resources.js | 9 +++++++++
test/unit/packages.test.js | 21 +++++++++++++++++++++
test/unit/rules.test.js | 28 ++++++++++++++++++++++++++++
test/unit/triggers.test.js | 21 +++++++++++++++++++++
6 files changed, 82 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 010e509..4c61d03 100644
--- a/README.md
+++ b/README.md
@@ -516,6 +516,7 @@ ow.triggers.update({name: '...'})
The following optional parameters are supported:
- `trigger` - JSON object containing parameters for the trigger body (default: `{}`)
- `namespace` - set custom namespace for endpoint
+- `annotations` - object containing annotations for the trigger (default: `{}`)
### create & update packages
@@ -527,6 +528,7 @@ ow.packages.update({name: '...'})
The following optional parameters are supported:
- `package` - JSON object containing parameters for the package body (default: `{}`)
- `namespace` - set custom namespace for endpoint
+- `annotations` - object containing annotations for the package (default: `{}`)
### create & update rule
@@ -541,6 +543,7 @@ appended in the request, unless a fully qualified name is passed in
The following optional parameters are supported:
- `namespace` - set namespace for rule
+- `annotations` - object containing annotations for the rule (default: `{}`)
### enable & disable rule
diff --git a/lib/actions.js b/lib/actions.js
index 276c0fa..059e112 100644
--- a/lib/actions.js
+++ b/lib/actions.js
@@ -119,10 +119,6 @@ class Actions extends Resources {
body.limits = options.limits
}
- if (typeof options.annotations === 'object') {
- body.annotations = Object.keys(options.annotations).map(key => ({ key, value: options.annotations[key] }))
- }
-
return body
}
}
diff --git a/lib/resources.js b/lib/resources.js
index 627eed8..2246ef7 100644
--- a/lib/resources.js
+++ b/lib/resources.js
@@ -45,6 +45,11 @@ class Resources extends BaseOperation {
}
create (options) {
+ if (options && typeof options.annotations === 'object') {
+ const annotations = this.parseAnnotations(options.annotations)
+ options.body = Object.assign({ annotations }, options.body)
+ }
+
return this.operationWithId('PUT', options)
}
@@ -98,6 +103,10 @@ class Resources extends BaseOperation {
return options.namespace
}
+ parseAnnotations (annotations) {
+ return Object.keys(annotations).map(key => ({ key, value: annotations[key] }))
+ }
+
retrieveId (options) {
options = options || {}
const id = this.identifiers.find(name => options.hasOwnProperty(name))
diff --git a/test/unit/packages.test.js b/test/unit/packages.test.js
index c4a52c9..2f7fd6a 100644
--- a/test/unit/packages.test.js
+++ b/test/unit/packages.test.js
@@ -190,6 +190,27 @@ test('should create a new package with parameters', t => {
return packages.create({ name: id, 'package': pkg })
})
+test('create a new package with annotations', t => {
+ t.plan(3)
+ const ns = '_'
+ const client = {}
+ const id = '12345'
+ const annotations = {
+ foo: 'bar'
+ }
+ const packages = new Packages(client)
+
+ client.request = (method, path, options) => {
+ t.is(method, 'PUT')
+ t.is(path, `namespaces/${ns}/packages/${id}`)
+ t.deepEqual(options.body, { annotations: [
+ { key: 'foo', value: 'bar' }
+ ] })
+ }
+
+ return packages.create({ name: id, annotations })
+})
+
test('should update an existing package', t => {
t.plan(4)
const ns = '_'
diff --git a/test/unit/rules.test.js b/test/unit/rules.test.js
index 7a73a71..125b29d 100644
--- a/test/unit/rules.test.js
+++ b/test/unit/rules.test.js
@@ -178,6 +178,34 @@ test('create a new rule using fully qualified names', t => {
return rules.create({ name, action, trigger })
})
+test('create a new rule with annotations', t => {
+ t.plan(4)
+ const ns = '_'
+ const client = {}
+ const annotations = {
+ foo: 'bar'
+ }
+ const rules = new Rules(client)
+
+ const name = '12345'
+ const action = '/hello/some_action'
+ const trigger = '/hello/some_trigger'
+
+ client.request = (method, path, options) => {
+ t.is(method, 'PUT')
+ t.is(path, `namespaces/${ns}/rules/${name}`)
+ t.deepEqual(options.qs, {})
+ t.deepEqual(options.body, {
+ action,
+ trigger,
+ annotations: [
+ { key: 'foo', value: 'bar' }
+ ] })
+ }
+
+ return rules.create({ name, action, trigger, annotations })
+})
+
test('create a rule without providing a rule name', t => {
const client = { options: {} }
const rules = new Rules(client)
diff --git a/test/unit/triggers.test.js b/test/unit/triggers.test.js
index 792050a..3b99277 100644
--- a/test/unit/triggers.test.js
+++ b/test/unit/triggers.test.js
@@ -252,3 +252,24 @@ test('create a new trigger with custom body', t => {
return triggers.create({ name: '12345', trigger })
})
+
+test('create a new trigger with annotations', t => {
+ t.plan(4)
+ const ns = '_'
+ const client = {}
+ const annotations = {
+ foo: 'bar'
+ }
+ const triggers = new Triggers(client)
+
+ client.request = (method, path, options) => {
+ t.is(method, 'PUT')
+ t.is(path, `namespaces/${ns}/triggers/12345`)
+ t.deepEqual(options.qs, {})
+ t.deepEqual(options.body, { annotations: [
+ { key: 'foo', value: 'bar' }
+ ] })
+ }
+
+ return triggers.create({ name: '12345', annotations })
+})