in deployers/deploymentreader.go [204:281]
func (reader *DeploymentReader) bindActionInputsAndAnnotations(paramsCLI interface{}) error {
// retrieve "packages" list from depl. file; either at top-level or under "Project" schema
packMap := reader.getPackageMap()
for packName, pack := range packMap {
serviceDeployPack := reader.serviceDeployer.Deployment.Packages[packName]
if serviceDeployPack == nil {
displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_PACKAGE, packName)
break
}
for actionName, action := range pack.Actions {
keyValArr := make(whisk.KeyValueArr, 0)
if len(action.Inputs) > 0 {
keyValArr = reader.getListOfParameters(action.Inputs)
if wskAction, exists := serviceDeployPack.Actions[actionName]; exists {
displayEntityFoundInDeploymentTrace(parsers.YAML_KEY_ACTION, actionName)
depParams := make(map[string]whisk.KeyValue)
for _, kv := range keyValArr {
depParams[kv.Key] = kv
}
for _, keyVal := range wskAction.Action.Parameters {
if _, exists := depParams[keyVal.Key]; !exists {
keyValArr = append(keyValArr, keyVal)
}
}
actionInputs := 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))
}
actionInputs = append(actionInputs, kv)
}
} else {
actionInputs = keyValArr
}
wskAction.Action.Parameters = actionInputs
} else {
displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_ACTION, actionName)
}
}
if len(action.Annotations) > 0 {
keyValArr = reader.getListOfAnnotations(action.Annotations)
if wskAction, exists := serviceDeployPack.Actions[actionName]; exists {
displayEntityFoundInDeploymentTrace(parsers.YAML_KEY_ACTION, actionName)
for _, keyVal := range wskAction.Action.Annotations {
if _, exists := action.Annotations[keyVal.Key]; !exists {
keyValArr = append(keyValArr, keyVal)
}
}
wskAction.Action.Annotations = keyValArr
} else {
displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_ACTION, actionName)
}
}
}
}
return nil
}