MCPcopy Create free account
hub / github.com/apache/openwhisk-cli / CreateExtendedVersion

Function CreateExtendedVersion

commands/trigger.go:524–595  ·  view source on GitHub ↗

CreateExtendedVersion only executes when users indicate to create triggers with --feed-param or --trigger-param flags.

(Client *whisk.Client, args []string)

Source from the content-addressed store, hash-verified

522//CreateExtendedVersion only executes when users indicate to create triggers with --feed-param
523//or --trigger-param flags.
524func 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

Callers 1

CreateMethod · 0.85

Calls 12

GetEntityNameMethod · 0.95
NewQualifiedNameFunction · 0.85
NewQualifiedNameErrorFunction · 0.85
feedParametersFunction · 0.85
getFormattedJSONFunction · 0.85
getParametersFunction · 0.85
createOrUpdateFunction · 0.85
invokeActionFunction · 0.85
deleteTriggerFunction · 0.85
printInvocationMsgFunction · 0.85
GetFullQualifiedNameMethod · 0.80

Tested by

no test coverage detected