From d71fe3447fff150e7341456b3c38b5fb5eec7d3c Mon Sep 17 00:00:00 2001 From: rkamudhan Date: Wed, 1 Aug 2018 14:54:10 +0100 Subject: [PATCH] fixing multus runtime error for network status without pod network annotation --- k8sclient/k8sclient.go | 3 ++- multus/multus.go | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/k8sclient/k8sclient.go b/k8sclient/k8sclient.go index 15424848d..5e32c6690 100644 --- a/k8sclient/k8sclient.go +++ b/k8sclient/k8sclient.go @@ -380,7 +380,8 @@ func TryLoadK8sDelegates(k8sArgs *types.K8sArgs, conf *types.NetConf, kubeClient delegates, err := GetK8sNetwork(kubeClient, k8sArgs, conf.ConfDir) if err != nil { if _, ok := err.(*NoK8sNetworkError); ok { - return 0, nil, nil + return 0, clientInfo, nil + //return 0, nil, nil } return 0, nil, fmt.Errorf("Multus: Err in getting k8s network from pod: %v", err) } diff --git a/multus/multus.go b/multus/multus.go index 0406da475..f73cde77e 100644 --- a/multus/multus.go +++ b/multus/multus.go @@ -263,10 +263,12 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) (cn } //set the network status annotation in apiserver, only in case Multus as kubeconfig - if n.Kubeconfig != "" && kc.Podnamespace != "kube-system" { - err = k8s.SetNetworkStatus(kc, netStatus) - if err != nil { - return nil, fmt.Errorf("Multus: Err set the networks status: %v", err) + if n.Kubeconfig != "" && kc != nil { + if kc.Podnamespace != "kube-system" { + err = k8s.SetNetworkStatus(kc, netStatus) + if err != nil { + return nil, fmt.Errorf("Multus: Err set the networks status: %v", err) + } } } @@ -317,10 +319,12 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err } //unset the network status annotation in apiserver, only in case Multus as kubeconfig - if in.Kubeconfig != "" && kc.Podnamespace != "kube-system" { - err := k8s.SetNetworkStatus(kc, nil) - if err != nil { - return fmt.Errorf("Multus: Err unset the networks status: %v", err) + if in.Kubeconfig != "" && kc != nil { + if kc.Podnamespace != "kube-system" { + err := k8s.SetNetworkStatus(kc, nil) + if err != nil { + return fmt.Errorf("Multus: Err unset the networks status: %v", err) + } } }