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
}