dubee commented on a change in pull request #479: Trigger parameter issue
URL: https://github.com/apache/openwhisk-cli/pull/479#discussion_r383479086
##########
File path: commands/trigger.go
##########
@@ -601,3 +703,110 @@ func (t *Trigger) Update(Client *whisk.Client, args
[]string) error {
return nil
}
+
+//UpdateExtendedVersion only executes when users indicate to update triggers
with --feed-param
+//or --trigger-param flags.
+func UpdateExtendedVersion(Client *whisk.Client, args []string, retTrigger
*whisk.Trigger) error {
+ var fullFeedName string
+ var qualifiedName = new(QualifiedName)
+ var err error
+
+ if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+ return NewQualifiedNameError(args[0], err)
+ }
+
+ whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n",
Flags.trigger.triggerParam)
+ triggerParameters, err :=
getJSONFromStrings(Flags.trigger.triggerParam, true)
+ if err != nil {
+ whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true)
failed: %s\n", Flags.common.param, err)
+ errStr := wski18n.T("Invalid parameter argument '{{.param}}':
{{.err}}",
+ map[string]interface{}{"param": fmt.Sprintf("%#v",
Flags.common.param), "err": err})
+ werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err,
whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+ return werr
+ }
+
+ whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n",
Flags.common.annotation)
+ annotations, err := getJSONFromStrings(Flags.common.annotation, true)
+ if err != nil {
+ whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true)
failed: %s\n", Flags.common.annotation, err)
+ errStr := wski18n.T("Invalid annotation argument
'{{.annotation}}': {{.err}}",
+ map[string]interface{}{"annotation": fmt.Sprintf("%#v",
Flags.common.annotation), "err": err})
+ werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err,
whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+ return werr
+ }
+
+ trigger := &whisk.Trigger{
+ Name: qualifiedName.GetEntityName(),
+ Parameters: triggerParameters.(whisk.KeyValueArr),
+ Annotations: annotations.(whisk.KeyValueArr),
+ }
+
+ // Get full feed name from trigger get request as it is needed to get
the feed
+ if retTrigger != nil && retTrigger.Annotations != nil {
+ fullFeedName = getValueString(retTrigger.Annotations, "feed")
+ }
+
+ _, _, err = Client.Triggers.Insert(trigger, true)
+ if err != nil {
+ whisk.Debug(whisk.DbgError, "Client.Triggers.Insert(%+v,true)
failed: %s\n", trigger, err)
+ errStr := wski18n.T("Unable to update trigger '{{.name}}':
{{.err}}",
+ map[string]interface{}{"name": trigger.Name, "err":
err})
+ werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err,
whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+ return werr
+ }
+ //if there is no feed attached to this trigger
+ if len(fullFeedName) < 1 {
+ //but user indicate feed parameter change, we issue error
message.
+ if len(Flags.trigger.feedParam) > 0 {
+ whisk.Debug(whisk.DbgError, "trigger %+v is found but
it does not contain a feed. \n", trigger)
+ err := errors.New("this trigger does not contain a
feed")
+ errStr := wski18n.T(FEED_CONFIGURATION_FAILURE,
map[string]interface{}{"feedname": qualifiedName.GetEntityName(), "err": err})
+ werr :=
whisk.MakeWskErrorFromWskError(errors.New(errStr), err,
whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+ return werr
+ }
+ }
+
+ if len(fullFeedName) > 0 &&
feedParameterChanged(Flags.trigger.feedParam) {
+ //if there is feed, we invoke the action to configure the feed
regardless any changes on feed parameters
+ fullTriggerName := fmt.Sprintf("/%s/%s",
qualifiedName.GetNamespace(), qualifiedName.GetEntityName())
+ Flags.trigger.feedParam = append(Flags.trigger.feedParam,
getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_UPDATE))
+ Flags.trigger.feedParam = append(Flags.trigger.feedParam,
getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName))
+ Flags.trigger.feedParam = append(Flags.trigger.feedParam,
getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken))
+
+ // Invoke the specified feed action to configure the trigger
feed
+ err = configureFeed(qualifiedName.GetEntityName(),
fullFeedName, getParameters(Flags.trigger.feedParam, false, false))
+ if err != nil {
+ whisk.Debug(whisk.DbgError, "configureFeed(%s, %s)
failed: %s\n", qualifiedName.GetEntityName(), Flags.common.feed, err)
+ errStr := wski18n.T("Unable to create trigger
'{{.name}}': {{.err}}",
+ map[string]interface{}{"name":
qualifiedName.GetEntityName(), "err": err})
+ werr :=
whisk.MakeWskErrorFromWskError(errors.New(errStr), err,
whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+ return werr
+ }
+ }
+
+ fmt.Fprintf(color.Output,
+ wski18n.T("{{.ok}} updated trigger {{.name}}\n",
+ map[string]interface{}{"ok": color.GreenString("ok:"),
"name": boldString(qualifiedName.GetEntityName())}))
+
+ return nil
+}
+
+func feedParameterChanged(triggerParam []string) bool {
+ return len(triggerParam) > 0
+}
+
+//if users are 1. creating a trigger without any feed or parameters
+// 2. creating a trigger using --param flag
+//then we use the old way to create the trigger.
+func userIndicatesToUseOldTriggerCommand() bool {
+ return len(Flags.common.param) > 0 || (len(Flags.trigger.feedParam) ==
0 && len(Flags.common.param) == 0 && len(Flags.trigger.triggerParam) == 0)
+}
+
+func userIssuedNewTriggerCmd() error {
+ if len(Flags.trigger.feedParam) > 0 || len(Flags.trigger.triggerParam)
> 0 {
+ whisk.Debug(whisk.DbgError, "User tries to mix use of --param
with --feed-param and --trigger-param")
+ errStr := wski18n.T("Incorrect usage. Cannot combine
--feed-param or --trigger-param flag with --param flag")
Review comment:
Need to say `--param-file` to this list. Is this error message exported to
wski18n?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services