You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2019/07/25 15:28:01 UTC

[sling-whiteboard] 04/04: Openwhisk action selection based on annotations

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

bdelacretaz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git

commit 538f7b3bbe82109a89840d20fc5d8e15ac33c9ec
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Thu Jul 25 17:27:46 2019 +0200

    Openwhisk action selection based on annotations
---
 serverless-microsling/lib/openwhisk-renderer.js | 41 +++++++++++++++++--------
 serverless-microsling/lib/render.js             |  2 +-
 2 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/serverless-microsling/lib/openwhisk-renderer.js b/serverless-microsling/lib/openwhisk-renderer.js
index 9097096..e5544f7 100644
--- a/serverless-microsling/lib/openwhisk-renderer.js
+++ b/serverless-microsling/lib/openwhisk-renderer.js
@@ -23,22 +23,37 @@ const getAnnotation = (act, key) => {
   return annotation ? annotation.value : undefined;
 }
 
- const renderer = {
-  contentType: 'text/html_TODO',
-  appliesTo : async (resourceType, extension) => {
-    return new Promise(resolve => {
-      openwhisk().actions.list()
-      .then(actions => {
-        const act = actions.find(act => {
-          return resourceType == getAnnotation(act, 'sling:resourceType') && extension == getAnnotation(act, 'sling:extensions')
-        })
-        resolve(act);
-      });
+const getAction = async (resourceType, extension) => {
+  return new Promise(resolve => {
+    var ow = openwhisk();
+    ow.actions.list()
+    .then(actions => {
+      const act = actions.find(act => {
+        return resourceType == getAnnotation(act, 'sling:resourceType') && extension == getAnnotation(act, 'sling:extensions')
+      })
+      resolve(act);
+    })
+    .catch(e => {
+      throw e;
     })
+  })
+};
+
+ const renderer = {
+  contentType: 'text/html',
+  appliesTo : async (resourceType, extension) => { 
+    return getAction(resourceType, extension)
   },
   render : (resource, action) => {
-    console.log(`TODO: render using ${action}`);
+    return `TODO: render using ${action ? action.name : null}`;
   },
 }
 
-module.exports.openWhiskRenderer = renderer;
\ No newline at end of file
+function main () {
+  return new Promise(resolve => {
+    resolve(getAction('microsling/somedoc', 'html'));
+  });
+}
+
+module.exports.openWhiskRenderer = renderer;
+module.exports.main = main;
\ No newline at end of file
diff --git a/serverless-microsling/lib/render.js b/serverless-microsling/lib/render.js
index 168fb2e..b78b3c5 100644
--- a/serverless-microsling/lib/render.js
+++ b/serverless-microsling/lib/render.js
@@ -63,7 +63,7 @@ const defaultHtmlRenderer = {
 }
 
 const renderers = [
-  //openWhiskRenderer,
+  openWhiskRenderer,
   defaultTextRenderer,
   defaultHtmlRenderer,
   defaultJsonRenderer