CreateExtendedVersion only executes when users indicate to create triggers with --feed-param or --trigger-param flags.
(Client *whisk.Client, args []string)
| 522 | //CreateExtendedVersion only executes when users indicate to create triggers with --feed-param |
| 523 | //or --trigger-param flags. |
| 524 | func CreateExtendedVersion(Client *whisk.Client, args []string) error { |
| 525 | triggerName, err := NewQualifiedName(args[0]) |
| 526 | if err != nil { |
| 527 | return NewQualifiedNameError(args[0], err) |
| 528 | } |
| 529 | |
| 530 | annotationArray := Flags.common.annotation |
| 531 | authToken := Client.Config.AuthToken |
| 532 | |
| 533 | // if a feed is specified, create additional parameters which must be passed to the feed |
| 534 | feedQualifiedName, additionalFeedParams := feedParameters(Flags.common.feed, FEED_CREATE, triggerName, authToken) |
| 535 | |
| 536 | // if a feed is specified, add feed annotation the annotations declared on the command line |
| 537 | // TODO: add test to ensure that generated annotation has precedence |
| 538 | if feedQualifiedName != nil { |
| 539 | annotationArray = append(annotationArray, getFormattedJSON("feed", feedQualifiedName.GetFullQualifiedName())) |
| 540 | } |
| 541 | |
| 542 | annotations := getParameters(annotationArray, true, true) |
| 543 | |
| 544 | //if trigger contains no feed but user tries to update feed parameter, then we issue error. |
| 545 | if feedQualifiedName == nil && len(Flags.trigger.feedParam) > 0 { |
| 546 | errStr := wski18n.T("Incorrect usage. Trigger without a feed cannot have feed parameters") |
| 547 | return whisk.MakeWskError(errors.New(errStr), whisk.NOT_ALLOWED, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE) |
| 548 | } |
| 549 | |
| 550 | triggerParams := getParameters(Flags.trigger.triggerParam, true, false) |
| 551 | //if a feed is specified, add feed annotation the annotations declared on the command line |
| 552 | //TODO: add test to ensure that generated annotation has precedence |
| 553 | feedParams := getParameters(append(Flags.trigger.feedParam, additionalFeedParams...), feedQualifiedName == nil, false) |
| 554 | |
| 555 | trigger := &whisk.Trigger{ |
| 556 | Name: triggerName.GetEntityName(), |
| 557 | Annotations: annotations.(whisk.KeyValueArr), |
| 558 | Parameters: triggerParams.(whisk.KeyValueArr), |
| 559 | } |
| 560 | |
| 561 | createOrUpdate(Client, triggerName, trigger, false) |
| 562 | // Invoke the specified feed action to configure the trigger feed |
| 563 | if feedQualifiedName != nil { |
| 564 | res, err := invokeAction(*feedQualifiedName, feedParams, true, false) |
| 565 | if err != nil { |
| 566 | whisk.Debug(whisk.DbgError, "Failed configuring feed '%s' failed: %s\n", feedQualifiedName.GetFullQualifiedName(), err) |
| 567 | |
| 568 | // TODO: should we do this at all? Keeping for now. |
| 569 | printFailedBlockingInvocationResponse(*feedQualifiedName, false, res, err) |
| 570 | |
| 571 | reason := wski18n.T(FEED_CONFIGURATION_FAILURE, map[string]interface{}{"feedname": feedQualifiedName.GetFullQualifiedName(), "err": err}) |
| 572 | errStr := wski18n.T("Unable to create trigger '{{.name}}': {{.err}}", |
| 573 | map[string]interface{}{"name": trigger.Name, "err": reason}) |
| 574 | werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE) |
| 575 | |
| 576 | // Delete trigger that was created for this feed |
| 577 | err = deleteTrigger(triggerName.GetEntityName()) |
| 578 | if err != nil { |
| 579 | whisk.Debug(whisk.DbgWarn, "Ignoring deleteTrigger(%s) failure: %s\n", triggerName.GetEntityName(), err) |
| 580 | } |
| 581 |
no test coverage detected