func()

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
}