@@ -20,6 +20,7 @@ package commands
20
20
import (
21
21
"errors"
22
22
"fmt"
23
+ "strings"
23
24
24
25
"github.com/apache/openwhisk-cli/wski18n"
25
26
"github.com/apache/openwhisk-client-go/whisk"
@@ -286,6 +287,30 @@ var triggerDeleteCmd = &cobra.Command{
286
287
err = configureFeed (qualifiedName .GetEntityName (), fullFeedName , getParameters (Flags .common .param , false , false ))
287
288
if err != nil {
288
289
whisk .Debug (whisk .DbgError , "configureFeed(%s, %s) failed: %s\n " , qualifiedName .GetEntityName (), fullFeedName , err )
290
+
291
+ // If the trigger feed does not exist, it's deleted! This error message will look like
292
+ // "could not find trigger /NAMESPACE_ID/TRIGGER_NAME in the database"
293
+ // OR if the feed action is not present, there's no way to clean up the feed
294
+ // "The requested resource does not exist"
295
+ // likewise, if the feed action has no code, there's no way to clean up the feed
296
+ // "Missing main/no code to execute"
297
+ if strings .Contains (err .Error (), "could not find trigger" ) {
298
+ whisk .Debug (whisk .DbgWarn , "trigger feed is already deleted for trigger %s\n " , qualifiedName .GetEntityName ())
299
+ } else if strings .Contains (err .Error (), "The requested resource does not exist" ) {
300
+ whisk .Debug (whisk .DbgWarn , "trigger feed action '%s' does not exist\n " , fullFeedName )
301
+ } else if strings .Contains (err .Error (), "no code to execute" ) {
302
+ whisk .Debug (whisk .DbgWarn , "trigger feed action '%s' does not contain valid code\n " , fullFeedName )
303
+ } else {
304
+ errStr := wski18n .T ("Unable to delete trigger '{{.name}}': {{.err}}" ,
305
+ map [string ]interface {}{"name" : qualifiedName .GetEntityName (), "err" : err })
306
+
307
+ if ! Flags .common .force {
308
+ werr := whisk .MakeWskErrorFromWskError (errors .New (errStr ), err , whisk .EXIT_CODE_ERR_GENERAL , whisk .DISPLAY_MSG , whisk .NO_DISPLAY_USAGE )
309
+ return werr
310
+ } else {
311
+ whisk .Debug (whisk .DbgInfo , "trigger delete is forced despite feed deletion failure\n " )
312
+ }
313
+ }
289
314
}
290
315
291
316
Flags .common .param = origParams
@@ -370,7 +395,7 @@ func configureFeed(triggerName string, feedName string, parameters interface{})
370
395
if err != nil {
371
396
whisk .Debug (whisk .DbgError , "Invoke of action '%s' failed: %s\n " , feedName , err )
372
397
errStr := wski18n .T (FEED_CONFIGURATION_FAILURE , map [string ]interface {}{"feedname" : feedName , "trigname" : triggerName , "err" : err })
373
- err = whisk .MakeWskErrorFromWskError (errors .New (errStr ), err , whisk .EXIT_CODE_ERR_GENERAL , whisk .DISPLAY_MSG , whisk .DISPLAY_USAGE )
398
+ err = whisk .MakeWskError (errors .New (errStr ), whisk .EXIT_CODE_ERR_GENERAL , whisk .DISPLAY_MSG , whisk .NO_DISPLAY_USAGE )
374
399
} else {
375
400
whisk .Debug (whisk .DbgInfo , "Successfully configured trigger feed via feed action '%s'\n " , feedName )
376
401
}
@@ -405,6 +430,8 @@ func init() {
405
430
406
431
triggerGetCmd .Flags ().BoolVarP (& Flags .trigger .summary , "summary" , "s" , false , wski18n .T ("summarize trigger details; parameters with prefix \" *\" are bound" ))
407
432
433
+ triggerDeleteCmd .Flags ().BoolVarP (& Flags .common .force , "force" , "f" , false , wski18n .T ("force trigger deletion even when feed deletion fails" ))
434
+
408
435
triggerFireCmd .Flags ().StringSliceVarP (& Flags .common .param , "param" , "p" , []string {}, wski18n .T ("parameter values in `KEY VALUE` format" ))
409
436
triggerFireCmd .Flags ().StringVarP (& Flags .common .paramFile , "param-file" , "P" , "" , wski18n .T ("`FILE` containing parameter values in JSON format" ))
410
437
@@ -477,6 +504,7 @@ func (t *Trigger) Create(Client *whisk.Client, args []string) error {
477
504
printFailedBlockingInvocationResponse (* feedName , false , res , err )
478
505
479
506
reason := wski18n .T (FEED_CONFIGURATION_FAILURE , map [string ]interface {}{"feedname" : feedName .GetFullQualifiedName (), "err" : err })
507
+
480
508
errStr := wski18n .T ("Unable to create trigger '{{.name}}': {{.err}}" ,
481
509
map [string ]interface {}{"name" : trigger .Name , "err" : reason })
482
510
werr := whisk .MakeWskErrorFromWskError (errors .New (errStr ), err , whisk .EXIT_CODE_ERR_GENERAL , whisk .DISPLAY_MSG , whisk .NO_DISPLAY_USAGE )
0 commit comments