Hi Rodric, Thanks for passing the link! Very interesting.
IIUC the discussion then the consensus for that particular issue is summarised in [1], but this is not implemented, yet. Is this correct? Also, I have a question about the solution in [1] (Happy to post it into that issue, if that’s the better place to have the discussion) I wonder why the parameter *values* are show up in the sequence definition at *creation* time of the sequence in “wsk action create sequence S —action A1 P11 V11 P12 V12 —action A2 P21 V21 P22 V23" That seems to not allow for setting parameter values at invocation time - or do I misinterpret the proposal? Thanks! Michael [1] https://github.com/openwhisk/openwhisk/issues/116#issuecomment-229976950 On 17/01/17 13:55, "Rodric Rabbah" <rod...@gmail.com> wrote: >You're raising a different issue that is orthogonal to final/immutable >parameters. For sequences and parameter scoping see this discussion: >https://github.com/openwhisk/openwhisk/issues/116 > >-r > >> On Jan 17, 2017, at 7:47 AM, Michael Marth <mma...@adobe.com> wrote: >> >> Hi Rodric, all, >> >> Final parameters sound nice. I think they probably solve the challenge that >> Dragos outlined originally. >> However, I am not sure if they are the ideal solution for OW in general. >> >> Let me re-cap the issue: >> * assume OW deployments where an API gateway authenticates incoming requests >> and sets e.g. the userId as a header that gets forwarded to the action >> * the subsequently invoked action’s code wants to read that header (userId) >> * if a sequence was invoked by the request each action in the sequence must >> be able to read that header (and be sure that it has not been tampered with >> by previous actions in the sequence) >> >> IIUC final parameters solve this challenge provided that all involved >> parties (gateway deployment and all actions in the sequence) agree on the >> name and semantics of that header containing the userId. That is not a >> problem as long as these actions always get deployed into one particular OW >> deployment. However, I think it breaks compatibility of actions when moved >> between different OW deployments. >> I see the downsides of changing the method signature that you mentioned, >> Rodric. Maybe there’s another way? (like environment variables that can be >> read from the function or globally accessible objects, etc) >> Is this already solved in Bluemix? >> >> Cheers >> Michael >> >> >> >>> On 11/01/17 23:17, "Rodric Rabbah" <rod...@gmail.com> wrote: >>> >>> +1 to @sjfink: passing large objects inline should probably be adopted as >>> an anti-pattern. >>> >>>> I'm also adding an extra thought to our thread: if we want to communicate >>> a "user_id" and "app_id" to the actions, but any action can edit the >>> incoming event, how would we make sure that some important fields like >>> these ones can't be overwritten by other actions in a sequence and they can >>> be securely passed through and trusted ? >>> >>> @ddascal <ddas...@adobe.com> I just opened this PR that prototypes the idea >>> of "final" parameters that might be applicable. This came up in discussion >>> with Steve where he suggested that any defined parameter (if it has a >>> value) should be considered final. This would mean that parameters on a >>> package that have a default value cannot be overridden by a binding or an >>> action in the package. I implemented a variant of this [1] that applies to >>> certain openwhisk actions where an action may carry a "final" annotation >>> which prevents an incoming request from overriding any of its predefined >>> parameters. >>> >>> In a more general perspective, we can give up on default parameters in >>> favor of final parameters everywhere. Or a compromise where parameters may >>> have defaults and may be overriden from package to binding to action but >>> not from invoke time parameters (as in the pull request). >>> >>> -r >>> >>> [1] https://github.com/openwhisk/openwhisk/pull/1710