func()

in deployers/deploymentreader.go [283:361]


func (reader *DeploymentReader) bindTriggerInputsAndAnnotations(paramsCLI interface{}) error {

	// retrieve "packages" list from depl. file; either at top-level or under "Project" schema
	packMap := reader.getPackageMap()

	// go through all packages in our local package map
	for _, pack := range packMap {
		serviceDeployment := reader.serviceDeployer.Deployment

		// for each Deployment file Trigger found in the current package
		for triggerName, trigger := range pack.Triggers {

			// If the Deployment file trigger has Input values we will attempt to bind them
			if len(trigger.Inputs) > 0 {
				keyValArr := reader.getListOfParameters(trigger.Inputs)

				// See if a matching Trigger (name) exists in manifest
				if wskTrigger, exists := serviceDeployment.Triggers[triggerName]; exists {

					displayEntityFoundInDeploymentTrace(parsers.YAML_KEY_TRIGGER, triggerName)

					depParams := make(map[string]whisk.KeyValue)
					for _, kv := range keyValArr {
						depParams[kv.Key] = kv
					}

					for _, keyVal := range wskTrigger.Parameters {
						// TODO() verify logic and add Verbose/trace say "found" or "not found"
						if _, exists := depParams[keyVal.Key]; !exists {
							displayEntityFoundInDeploymentTrace(
								parsers.YAML_KEY_ANNOTATION, keyVal.Key)
							keyValArr = append(keyValArr, keyVal)
						}
					}

					triggerInputs := make(whisk.KeyValueArr, 0)

					if paramsCLI != nil {
						for _, kv := range keyValArr {
							// check if this particular input is specified on CLI
							if v, ok := paramsCLI.(map[string]interface{})[kv.Key]; ok {
								kv.Value = wskenv.ConvertSingleName(v.(string))
							}
							triggerInputs = append(triggerInputs, kv)
						}
					} else {
						triggerInputs = keyValArr
					}

					wskTrigger.Parameters = triggerInputs
				} else {
					displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_TRIGGER, triggerName)
				}
			}

			if len(trigger.Annotations) > 0 {

				keyValArr := reader.getListOfAnnotations(trigger.Annotations)

				if wskTrigger, exists := serviceDeployment.Triggers[triggerName]; exists {

					displayEntityFoundInDeploymentTrace(parsers.YAML_KEY_TRIGGER, triggerName)

					for _, keyVal := range wskTrigger.Annotations {
						if _, exists := trigger.Annotations[keyVal.Key]; !exists {
							keyValArr = append(keyValArr, keyVal)
						}
					}
					wskTrigger.Annotations = keyValArr
				} else {
					displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_TRIGGER, triggerName)
				}
			}

		}

	}
	return nil
}