You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwhisk.apache.org by OpenWhisk Team Slack <ra...@apache.org> on 2019/05/11 07:51:29 UTC

[slack-digest] [2019-05-10] #composer

2019-05-10 12:23:39 UTC - Olivier Tardieu: it is not possible to have nested function calls in composer
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557491019003800
----
2019-05-10 12:24:34 UTC - Olivier Tardieu: if the nested function (in this case resolve) is defined outside of the composed function (in this case dynamicInvoke)
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557491074004900
----
2019-05-10 12:24:51 UTC - Olivier Tardieu: you could however in this example define resolve inside of dynamicInvoke
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557491091005300
----
2019-05-10 12:25:01 UTC - Olivier Tardieu: this should work
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557491101005700
----
2019-05-10 23:15:32 UTC - Alexander Klimetschek: tried to move `function resolve()` inside `dynamicInvoke` but it fails with the same `resolve is not defined` error
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557530132006700
----
2019-05-10 23:15:55 UTC - Alexander Klimetschek: can I use imports (require)?
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557530155007200
----
2019-05-10 23:16:28 UTC - Alexander Klimetschek: would be nice to have a way to reuse code inside a composition other than invoking a completely separate action, especially for smaller things were a separate action is overkill
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557530188008000
----
2019-05-10 23:25:59 UTC - Alexander Klimetschek: uff, not even the `objectPath` argument in `dynamicInvoke()` works. the value passed in is a string literal. looks like it just takes the result value AST and hooks it in, ignoring the other function semantics :confused:
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557530759009300
----
2019-05-10 23:46:14 UTC - Olivier Tardieu: yes functions cannot capture their environment
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557531974010000
----
2019-05-10 23:46:14 UTC - Olivier Tardieu: <https://github.com/apache/incubator-openwhisk-composer/blob/master/docs/COMBINATORS.md#environment-capture-in-functions>
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557531974010200
----
2019-05-10 23:46:59 UTC - Olivier Tardieu: functions are only intended to provide for simple computations, actions should be used for more complex scenarios
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557532019011200
----
2019-05-10 23:49:04 UTC - Olivier Tardieu: imports of modules of the base image are possible
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557532144012400
----
2019-05-10 23:51:08 UTC - Olivier Tardieu: now including resolve in the right place should work:
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557532268013300
----
2019-05-10 23:52:34 UTC - Olivier Tardieu: ```
function dynamicInvoke(objectPath) {
    return composer.sequence(
        args =&gt; {
          function resolve(obj, path) {
            return require('path').split('.').reduce((o, key) =&gt; o &amp;&amp; o[key], obj);
          }          
          return {
              type: "action",
              name: resolve(args, objectPath),
              params: args
          }
        },
        composer.dynamic()
    );
}```
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557532354014500
----
2019-05-10 23:54:03 UTC - Olivier Tardieu: objectPath is another problem that can be solved using composer.literal or composer.let
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557532443015400
----
2019-05-10 23:57:19 UTC - Olivier Tardieu: ```
function dynamicInvoke(objectPath) {
    return composer.let('objectPath', objectPath,
        args =&gt; {
          function resolve(obj, path) {
            return require('path').split('.').reduce((o, key) =&gt; o &amp;&amp; o[key], obj);
          }          
          return {
              type: "action",
              name: resolve(args, objectPath),
              params: args
          }
        },
        composer.dynamic()
    );
}
```
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557532639016600
----
2019-05-10 23:59:19 UTC - Olivier Tardieu: let will capture the compile time value to make it available at runtime
https://openwhisk-team.slack.com/archives/C7DJNS37W/p1557532759017500
----