in deployers/deploymentreader.go [139:202]
func (reader *DeploymentReader) bindPackageInputsAndAnnotations(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
}
displayEntityFoundInDeploymentTrace(parsers.YAML_KEY_PACKAGE, packName)
if len(pack.Inputs) > 0 {
keyValArr := reader.getListOfParameters(pack.Inputs)
depParams := make(map[string]whisk.KeyValue)
for _, kv := range keyValArr {
depParams[kv.Key] = kv
}
for _, keyVal := range serviceDeployPack.Package.Parameters {
if _, exists := depParams[keyVal.Key]; !exists {
keyValArr = append(keyValArr, keyVal)
}
}
packageInputs := 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))
}
packageInputs = append(packageInputs, kv)
}
} else {
packageInputs = keyValArr
}
serviceDeployPack.Package.Parameters = packageInputs
}
if len(pack.Annotations) > 0 {
keyValArr := reader.getListOfAnnotations(pack.Annotations)
// iterate over each annotation from deployment file
for _, keyVal := range serviceDeployPack.Package.Annotations {
if _, exists := pack.Annotations[keyVal.Key]; !exists {
keyValArr = append(keyValArr, keyVal)
}
}
serviceDeployPack.Package.Annotations = keyValArr
}
}
return nil
}