Skip to content

Commit e721cfe

Browse files
agilgur5Joibel
authored andcommitted
fix: consistently set executor log options (argoproj#12979)
Signed-off-by: Anton Gilgur <[email protected]> (cherry picked from commit 217b598)
1 parent 486d25c commit e721cfe

File tree

7 files changed

+34
-31
lines changed

7 files changed

+34
-31
lines changed

util/cmd/glog.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,11 @@ func SetGLogLevel(glogLevel int) {
1515
_ = flag.Set("logtostderr", "true")
1616
_ = flag.Set("v", strconv.Itoa(glogLevel))
1717
}
18+
19+
func GetGLogLevel() string {
20+
f := flag.Lookup("v")
21+
if f == nil {
22+
return ""
23+
}
24+
return f.Value.String()
25+
}

workflow/controller/agent.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,11 @@ func (woc *wfOperationCtx) createAgentPod(ctx context.Context) (*apiv1.Pod, erro
191191
// the `init` container populates the shared empty-dir volume with tokens
192192
agentInitCtr := agentCtrTemplate.DeepCopy()
193193
agentInitCtr.Name = common.InitContainerName
194-
agentInitCtr.Args = []string{"agent", "init", "--loglevel", getExecutorLogLevel()}
194+
agentInitCtr.Args = append([]string{"agent", "init"}, woc.getExecutorLogOpts()...)
195195
// the `main` container runs the actual work
196196
agentMainCtr := agentCtrTemplate.DeepCopy()
197197
agentMainCtr.Name = common.MainContainerName
198-
agentMainCtr.Args = []string{"agent", "main", "--loglevel", getExecutorLogLevel()}
198+
agentMainCtr.Args = append([]string{"agent", "main"}, woc.getExecutorLogOpts()...)
199199

200200
pod := &apiv1.Pod{
201201
ObjectMeta: metav1.ObjectMeta{

workflow/controller/artifact_gc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ func (woc *wfOperationCtx) createArtifactGCPod(ctx context.Context, strategy wfv
438438
Name: common.MainContainerName,
439439
Image: woc.controller.executorImage(),
440440
ImagePullPolicy: woc.controller.executorImagePullPolicy(),
441-
Args: []string{"artifact", "delete", "--loglevel", getExecutorLogLevel()},
441+
Args: append([]string{"artifact", "delete"}, woc.getExecutorLogOpts()...),
442442
Env: []corev1.EnvVar{
443443
{Name: common.EnvVarArtifactGCPodHash, Value: woc.artifactGCPodLabel(podName)},
444444
},

workflow/controller/operator.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3397,7 +3397,7 @@ func (woc *wfOperationCtx) executeResource(ctx context.Context, nodeName string,
33973397
}
33983398

33993399
mainCtr := woc.newExecContainer(common.MainContainerName, tmpl)
3400-
mainCtr.Command = []string{"argoexec", "resource", tmpl.Resource.Action}
3400+
mainCtr.Command = append([]string{"argoexec", "resource", tmpl.Resource.Action}, woc.getExecutorLogOpts()...)
34013401
_, err = woc.createWorkflowPod(ctx, nodeName, []apiv1.Container{*mainCtr}, tmpl, &createWorkflowPodOpts{onExitPod: opts.onExitTemplate, executionDeadline: opts.executionDeadline})
34023402
if err != nil {
34033403
return woc.requeueIfTransientErr(err, node.Name)
@@ -3420,7 +3420,7 @@ func (woc *wfOperationCtx) executeData(ctx context.Context, nodeName string, tem
34203420
}
34213421

34223422
mainCtr := woc.newExecContainer(common.MainContainerName, tmpl)
3423-
mainCtr.Command = []string{"argoexec", "data", string(dataTemplate)}
3423+
mainCtr.Command = append([]string{"argoexec", "data", string(dataTemplate)}, woc.getExecutorLogOpts()...)
34243424
_, err = woc.createWorkflowPod(ctx, nodeName, []apiv1.Container{*mainCtr}, tmpl, &createWorkflowPodOpts{onExitPod: opts.onExitTemplate, executionDeadline: opts.executionDeadline, includeScriptOutput: true})
34253425
if err != nil {
34263426
return woc.requeueIfTransientErr(err, node.Name)

workflow/controller/operator_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3432,11 +3432,9 @@ func TestResolveIOPathPlaceholders(t *testing.T) {
34323432
require.NoError(t, err)
34333433
assert.NotEmpty(t, pods.Items, "pod was not created successfully")
34343434

3435-
assert.Equal(t, []string{
3436-
"/var/run/argo/argoexec", "emissary",
3437-
"--loglevel", getExecutorLogLevel(), "--log-format", woc.controller.cliExecutorLogFormat,
3435+
assert.Equal(t, append(append([]string{"/var/run/argo/argoexec", "emissary"}, woc.getExecutorLogOpts()...),
34383436
"--", "sh", "-c", "head -n 3 <\"/inputs/text/data\" | tee \"/outputs/text/data\" | wc -l > \"/outputs/actual-lines-count/data\"",
3439-
}, pods.Items[0].Spec.Containers[1].Command)
3437+
), pods.Items[0].Spec.Containers[1].Command)
34403438
}
34413439

34423440
var outputValuePlaceholders = `

workflow/controller/workflowpod.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/argoproj/argo-workflows/v3/errors"
2121
"github.com/argoproj/argo-workflows/v3/pkg/apis/workflow"
2222
wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1"
23+
cmdutil "github.com/argoproj/argo-workflows/v3/util/cmd"
2324
"github.com/argoproj/argo-workflows/v3/util/deprecation"
2425
errorsutil "github.com/argoproj/argo-workflows/v3/util/errors"
2526
"github.com/argoproj/argo-workflows/v3/util/intstr"
@@ -396,9 +397,8 @@ func (woc *wfOperationCtx) createWorkflowPod(ctx context.Context, nodeName strin
396397
c.Args = x.Cmd
397398
}
398399
}
399-
c.Command = append([]string{common.VarRunArgoPath + "/argoexec", "emissary",
400-
"--loglevel", getExecutorLogLevel(), "--log-format", woc.controller.executorLogFormat(),
401-
"--"}, c.Command...)
400+
execCmd := append(append([]string{common.VarRunArgoPath + "/argoexec", "emissary"}, woc.getExecutorLogOpts()...), "--")
401+
c.Command = append(execCmd, c.Command...)
402402
}
403403
if c.Image == woc.controller.executorImage() {
404404
// mount tmp dir to wait container
@@ -598,18 +598,18 @@ func substitutePodParams(pod *apiv1.Pod, globalParams common.Parameters, tmpl *w
598598

599599
func (woc *wfOperationCtx) newInitContainer(tmpl *wfv1.Template) apiv1.Container {
600600
ctr := woc.newExecContainer(common.InitContainerName, tmpl)
601-
ctr.Command = []string{"argoexec", "init", "--loglevel", getExecutorLogLevel(), "--log-format", woc.controller.executorLogFormat()}
601+
ctr.Command = append([]string{"argoexec", "init"}, woc.getExecutorLogOpts()...)
602602
return *ctr
603603
}
604604

605605
func (woc *wfOperationCtx) newWaitContainer(tmpl *wfv1.Template) *apiv1.Container {
606606
ctr := woc.newExecContainer(common.WaitContainerName, tmpl)
607-
ctr.Command = []string{"argoexec", "wait", "--loglevel", getExecutorLogLevel(), "--log-format", woc.controller.executorLogFormat()}
607+
ctr.Command = append([]string{"argoexec", "wait"}, woc.getExecutorLogOpts()...)
608608
return ctr
609609
}
610610

611-
func getExecutorLogLevel() string {
612-
return log.GetLevel().String()
611+
func (woc *wfOperationCtx) getExecutorLogOpts() []string {
612+
return []string{"--loglevel", log.GetLevel().String(), "--log-format", woc.controller.executorLogFormat(), "--gloglevel", cmdutil.GetGLogLevel()}
613613
}
614614

615615
func (woc *wfOperationCtx) createEnvVars() []apiv1.EnvVar {

workflow/controller/workflowpod_test.go

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -648,6 +648,8 @@ func Test_createWorkflowPod_containerName(t *testing.T) {
648648
assert.Equal(t, common.MainContainerName, pod.Spec.Containers[1].Name)
649649
}
650650

651+
var emissaryCmd = []string{"/var/run/argo/argoexec", "emissary"}
652+
651653
func Test_createWorkflowPod_emissary(t *testing.T) {
652654
t.Run("NoCommand", func(t *testing.T) {
653655
woc := newWoc()
@@ -658,26 +660,23 @@ func Test_createWorkflowPod_emissary(t *testing.T) {
658660
woc := newWoc()
659661
pod, err := woc.createWorkflowPod(context.Background(), "", []apiv1.Container{{Command: []string{"foo"}}}, &wfv1.Template{}, &createWorkflowPodOpts{})
660662
require.NoError(t, err)
661-
assert.Equal(t, []string{"/var/run/argo/argoexec", "emissary",
662-
"--loglevel", getExecutorLogLevel(), "--log-format", woc.controller.cliExecutorLogFormat,
663-
"--", "foo"}, pod.Spec.Containers[1].Command)
663+
cmd := append(append(emissaryCmd, woc.getExecutorLogOpts()...), "--", "foo")
664+
assert.Equal(t, cmd, pod.Spec.Containers[1].Command)
664665
})
665666
t.Run("NoCommandWithImageIndex", func(t *testing.T) {
666667
woc := newWoc()
667668
pod, err := woc.createWorkflowPod(context.Background(), "", []apiv1.Container{{Image: "my-image"}}, &wfv1.Template{}, &createWorkflowPodOpts{})
668669
require.NoError(t, err)
669-
assert.Equal(t, []string{"/var/run/argo/argoexec", "emissary",
670-
"--loglevel", getExecutorLogLevel(), "--log-format", woc.controller.cliExecutorLogFormat,
671-
"--", "my-entrypoint"}, pod.Spec.Containers[1].Command)
670+
cmd := append(append(emissaryCmd, woc.getExecutorLogOpts()...), "--", "my-entrypoint")
671+
assert.Equal(t, cmd, pod.Spec.Containers[1].Command)
672672
assert.Equal(t, []string{"my-cmd"}, pod.Spec.Containers[1].Args)
673673
})
674674
t.Run("NoCommandWithArgsWithImageIndex", func(t *testing.T) {
675675
woc := newWoc()
676676
pod, err := woc.createWorkflowPod(context.Background(), "", []apiv1.Container{{Image: "my-image", Args: []string{"foo"}}}, &wfv1.Template{}, &createWorkflowPodOpts{})
677677
require.NoError(t, err)
678-
assert.Equal(t, []string{"/var/run/argo/argoexec", "emissary",
679-
"--loglevel", getExecutorLogLevel(), "--log-format", woc.controller.cliExecutorLogFormat,
680-
"--", "my-entrypoint"}, pod.Spec.Containers[1].Command)
678+
cmd := append(append(emissaryCmd, woc.getExecutorLogOpts()...), "--", "my-entrypoint")
679+
assert.Equal(t, cmd, pod.Spec.Containers[1].Command)
681680
assert.Equal(t, []string{"foo"}, pod.Spec.Containers[1].Args)
682681
})
683682
t.Run("CommandFromPodSpecPatch", func(t *testing.T) {
@@ -691,9 +690,8 @@ func Test_createWorkflowPod_emissary(t *testing.T) {
691690
require.NoError(t, err)
692691
pod, err := woc.createWorkflowPod(context.Background(), "", []apiv1.Container{{Command: []string{"foo"}}}, &wfv1.Template{PodSpecPatch: string(podSpecPatch)}, &createWorkflowPodOpts{})
693692
require.NoError(t, err)
694-
assert.Equal(t, []string{"/var/run/argo/argoexec", "emissary",
695-
"--loglevel", getExecutorLogLevel(), "--log-format", woc.controller.cliExecutorLogFormat,
696-
"--", "bar"}, pod.Spec.Containers[1].Command)
693+
cmd := append(append(emissaryCmd, woc.getExecutorLogOpts()...), "--", "bar")
694+
assert.Equal(t, cmd, pod.Spec.Containers[1].Command)
697695
})
698696
}
699697

@@ -747,9 +745,8 @@ func TestVolumeAndVolumeMounts(t *testing.T) {
747745
assert.Equal(t, "tmp-dir-argo", wait.VolumeMounts[1].Name)
748746
assert.Equal(t, "var-run-argo", wait.VolumeMounts[2].Name)
749747
main := containers[1]
750-
assert.Equal(t, []string{"/var/run/argo/argoexec", "emissary",
751-
"--loglevel", getExecutorLogLevel(), "--log-format", woc.controller.cliExecutorLogFormat,
752-
"--", "cowsay"}, main.Command)
748+
cmd := append(append(emissaryCmd, woc.getExecutorLogOpts()...), "--", "cowsay")
749+
assert.Equal(t, cmd, main.Command)
753750
require.Len(t, main.VolumeMounts, 2)
754751
assert.Equal(t, "volume-name", main.VolumeMounts[0].Name)
755752
assert.Equal(t, "var-run-argo", main.VolumeMounts[1].Name)

0 commit comments

Comments
 (0)