This is an automated email from the ASF dual-hosted git repository. csantanapr pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git
commit 67f4e96ae592f75a457c78ef82443a255f105526 Author: Adnan Baruni <[email protected]> AuthorDate: Fri Nov 17 20:03:31 2017 -0600 support trigger update for feed triggers --- commands/trigger.go | 72 ++++++++++++++++------ .../whisk/core/cli/test/WskBasicUsageTests.scala | 2 + 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/commands/trigger.go b/commands/trigger.go index 52191df..5194397 100644 --- a/commands/trigger.go +++ b/commands/trigger.go @@ -33,6 +33,7 @@ const FEED_TRIGGER_NAME = "triggerName" const FEED_AUTH_KEY = "authKey" const FEED_CREATE = "CREATE" const FEED_READ = "READ" +const FEED_UPDATE = "UPDATE" const FEED_DELETE = "DELETE" // triggerCmd represents the trigger command @@ -225,6 +226,7 @@ var triggerUpdateCmd = &cobra.Command{ PreRunE: SetupClientConfig, RunE: func(cmd *cobra.Command, args []string) error { var err error + var fullFeedName string var qualifiedName = new(QualifiedName) if whiskErr := CheckArgs(args, 1, 1, "Trigger update", @@ -242,46 +244,78 @@ var triggerUpdateCmd = &cobra.Command{ // The 1 or more --param arguments have all been combined into a single []string // e.g. --p arg1,arg2 --p arg3,arg4 -> [arg1, arg2, arg3, arg4] - whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param) - parameters, err := getJSONFromStrings(Flags.common.param, true) + whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", flags.common.param) + parameters, err := getJSONFromStrings(flags.common.param, true) if err != nil { - whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err) + 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}) + 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) + 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) + 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}) + 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: parameters.(whisk.KeyValueArr), - Annotations: annotations.(whisk.KeyValueArr), - } - - _, _, err = Client.Triggers.Insert(trigger, true) + retTrigger, _, err := Client.Triggers.Get(qualifiedName.GetEntityName()) 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}) + whisk.Debug(whisk.DbgError, "Client.Triggers.Get(%s) failed: %s\n", qualifiedName.GetEntityName(), err) + errStr := wski18n.T("Unable to get 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 } + // 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") + } + + if len(fullFeedName) > 0 { + fullTriggerName := fmt.Sprintf("/%s/%s", qualifiedName.GetNamespace(), qualifiedName.GetEntityName()) + flags.common.param = append(flags.common.param, getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_UPDATE)) + flags.common.param = append(flags.common.param, getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName)) + flags.common.param = append(flags.common.param, getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken)) + + // Invoke the specified feed action to configure the trigger feed + err = configureFeed(qualifiedName.GetEntityName(), fullFeedName) + 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 + } + } else { + trigger := &whisk.Trigger{ + Name: qualifiedName.GetEntityName(), + Parameters: parameters.(whisk.KeyValueArr), + Annotations: annotations.(whisk.KeyValueArr), + } + + _, _, 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 + } + } + fmt.Fprintf(color.Output, wski18n.T("{{.ok}} updated trigger {{.name}}\n", - map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(trigger.Name)})) + map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())})) return nil }, } diff --git a/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala b/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala index 8c60c90..af9f299 100644 --- a/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala +++ b/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala @@ -1136,6 +1136,8 @@ class WskBasicUsageTests extends TestHelpers with WskTestHelpers { wsk.trigger.create(triggerName, feed = Some(actionName)).stdout should include(""""lifecycleEvent": "CREATE"""") wsk.trigger.get(triggerName).stdout should include(""""lifecycleEvent": "READ"""") + + wsk.trigger.create(triggerName, update = true).stdout should include(""""lifecycleEvent": "UPDATE""") } finally { wsk.trigger.delete(triggerName).stdout should include(""""lifecycleEvent": "DELETE"""") } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
