diff --git a/workflow/controller/workflowpod.go b/workflow/controller/workflowpod.go index 8cf02b6444e2..621e1509e3b0 100644 --- a/workflow/controller/workflowpod.go +++ b/workflow/controller/workflowpod.go @@ -185,11 +185,7 @@ func (woc *wfOperationCtx) createWorkflowPod(nodeName string, mainCtr apiv1.Cont // Perform one last variable substitution here. Some variables come from the from workflow // configmap (e.g. archive location) or volumes attribute, and were not substituted // in executeTemplate. - podParams := woc.globalParams - for _, inParam := range tmpl.Inputs.Parameters { - podParams["inputs.parameters."+inParam.Name] = *inParam.Value - } - pod, err = substitutePodParams(pod, podParams) + pod, err = substitutePodParams(pod, woc.globalParams, tmpl) if err != nil { return nil, err } @@ -226,13 +222,15 @@ func (woc *wfOperationCtx) createWorkflowPod(nodeName string, mainCtr apiv1.Cont } // substitutePodParams returns a pod spec with parameter references substituted as well as pod.name -func substitutePodParams(pod *apiv1.Pod, podParams map[string]string) (*apiv1.Pod, error) { - newPodParams := make(map[string]string) - for k, v := range podParams { - newPodParams[k] = v +func substitutePodParams(pod *apiv1.Pod, globalParams map[string]string, tmpl *wfv1.Template) (*apiv1.Pod, error) { + podParams := make(map[string]string) + for k, v := range globalParams { + podParams[k] = v + } + for _, inParam := range tmpl.Inputs.Parameters { + podParams["inputs.parameters."+inParam.Name] = *inParam.Value } - newPodParams[common.LocalVarPodName] = pod.Name - podParams = newPodParams + podParams[common.LocalVarPodName] = pod.Name specBytes, err := json.Marshal(pod) if err != nil { return nil, err