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]>.

Reply via email to