Skip to content

Commit 3c7b884

Browse files
committed
fix: improve cni error formatting
Signed-off-by: immanuwell <pchpr.00@list.ru>
1 parent 1162ffa commit 3c7b884

5 files changed

Lines changed: 55 additions & 8 deletions

File tree

cni-plugin/integration/tests/cilium/cilium_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ func TestMain(m *testing.M) {
2121

2222
func TestLinkerdIsLastCNIPlugin(t *testing.T) {
2323
if err := runner.CheckCNIPluginIsLast(); err != nil {
24-
t.Fatalf("Unexpected error: %e", err)
24+
t.Fatalf("Unexpected error: %s", err)
2525
}
2626
}

cni-plugin/integration/tests/flannel/flannel_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ func TestMain(m *testing.M) {
2121

2222
func TestLinkerdIsLastCNIPlugin(t *testing.T) {
2323
if err := runner.CheckCNIPluginIsLast(); err != nil {
24-
t.Fatalf("Unexpected error: %e", err)
24+
t.Fatalf("Unexpected error: %s", err)
2525
}
2626
}

cni-plugin/integration/testutil/test_util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func checkLinkerdCniConf(plugin map[string]any) error {
117117

118118
proxyGID := proxyInit.ProxyGID
119119
if proxyGID != 2102 {
120-
return fmt.Errorf("proxy-gid has wrong value, expected: %v, found: %v", 2102, proxyUID)
120+
return fmt.Errorf("proxy-gid has wrong value, expected: %v, found: %v", 2102, proxyGID)
121121
}
122122

123123
simulate := proxyInit.Simulate

cni-plugin/main.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ func parseConfig(stdin []byte) (*PluginConf, error) {
144144
func cmdAdd(args *skel.CmdArgs) error {
145145
conf, err := parseConfig(args.StdinData)
146146
if err != nil {
147-
logrus.Errorf("error parsing config: %e", err)
147+
logrus.WithError(err).Error("error parsing config")
148148
return err
149149
}
150150
configureLoggingLevel(conf.LogLevel)
@@ -165,7 +165,7 @@ func cmdAdd(args *skel.CmdArgs) error {
165165
args.Args = strings.Replace(args.Args, "K8S_POD_NAMESPACE", "K8sPodNamespace", 1)
166166
args.Args = strings.Replace(args.Args, "K8S_POD_NAME", "K8sPodName", 1)
167167
if err := types.LoadArgs(args.Args, &k8sArgs); err != nil {
168-
logrus.Errorf("error loading args %e", err)
168+
logrus.WithError(err).Error("error loading args")
169169
return err
170170
}
171171

@@ -185,19 +185,19 @@ func cmdAdd(args *skel.CmdArgs) error {
185185

186186
config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(configLoadingRules, configOverrides).ClientConfig()
187187
if err != nil {
188-
logrus.Errorf("linkerd-cni client err with NewNonInteractiveDeferredLoadingClientConfig: %e", err)
188+
logrus.WithError(err).Error("linkerd-cni client err with NewNonInteractiveDeferredLoadingClientConfig")
189189
return err
190190
}
191191

192192
client, err := kubernetes.NewForConfig(config)
193193
if err != nil {
194-
logrus.Errorf("linkerd-cni client err with NewForConfig: %e", err)
194+
logrus.WithError(err).Error("linkerd-cni client err with NewForConfig")
195195
return err
196196
}
197197

198198
pod, err := client.CoreV1().Pods(namespace).Get(ctx, podName, metav1.GetOptions{})
199199
if err != nil {
200-
logrus.Errorf("linkerd-cni client err in client.Pods().Get(): %e", err)
200+
logrus.WithError(err).Error("linkerd-cni client err in client.Pods().Get()")
201201
return err
202202
}
203203

cni-plugin/main_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package main
2+
3+
import (
4+
"bytes"
5+
"strings"
6+
"testing"
7+
8+
"github.com/containernetworking/cni/pkg/skel"
9+
"github.com/sirupsen/logrus"
10+
)
11+
12+
func TestCmdAddLogsParseConfigErrorsClearly(t *testing.T) {
13+
logger := logrus.StandardLogger()
14+
originalOut := logger.Out
15+
originalFormatter := logger.Formatter
16+
originalLevel := logger.Level
17+
18+
var logs bytes.Buffer
19+
logger.SetOutput(&logs)
20+
logger.SetFormatter(&logrus.TextFormatter{
21+
DisableTimestamp: true,
22+
DisableQuote: true,
23+
})
24+
logger.SetLevel(logrus.DebugLevel)
25+
26+
defer func() {
27+
logger.SetOutput(originalOut)
28+
logger.SetFormatter(originalFormatter)
29+
logger.SetLevel(originalLevel)
30+
}()
31+
32+
err := cmdAdd(&skel.CmdArgs{StdinData: []byte("{")})
33+
if err == nil {
34+
t.Fatal("expected cmdAdd to fail for invalid JSON")
35+
}
36+
37+
output := logs.String()
38+
if !strings.Contains(output, "msg=error parsing config") {
39+
t.Fatalf("expected parse error log, got %q", output)
40+
}
41+
if !strings.Contains(output, "error=linkerd-cni: failed to parse network configuration: unexpected end of JSON input") {
42+
t.Fatalf("expected structured parse error field in log, got %q", output)
43+
}
44+
if strings.Contains(output, "%!e(") {
45+
t.Fatalf("expected formatted error message, got %q", output)
46+
}
47+
}

0 commit comments

Comments
 (0)