func()

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
}