From 82514605bada5b6ac7b50bcc29b8868cbdf7da72 Mon Sep 17 00:00:00 2001 From: Nikhil Simha Date: Tue, 9 Jun 2020 15:58:55 -0400 Subject: [PATCH 1/3] Added test for error-on-fail fix :) --- k8sclient/k8sclient.go | 93 +++++++++++---- k8sclient/k8sclient_test.go | 194 +++++++++++++++---------------- multus/multus.go | 11 +- multus/multus_test.go | 220 ++++++++++++++++++++++++++++-------- 4 files changed, 349 insertions(+), 169 deletions(-) diff --git a/k8sclient/k8sclient.go b/k8sclient/k8sclient.go index 586bfe031..f3e5634e7 100644 --- a/k8sclient/k8sclient.go +++ b/k8sclient/k8sclient.go @@ -33,7 +33,6 @@ import ( "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/record" "k8s.io/klog" - "github.com/containernetworking/cni/libcni" "github.com/containernetworking/cni/pkg/skel" cnitypes "github.com/containernetworking/cni/pkg/types" @@ -56,41 +55,71 @@ type NoK8sNetworkError struct { message string } -// ClientInfo contains information given from k8s client -type ClientInfo struct { +type ClientInfo interface { + AddPod(pod *v1.Pod) (*v1.Pod, error) + GetPod(namespace, name string) (*v1.Pod, error) + DeletePod(namespace, name string) error + Eventf(object runtime.Object, eventtype, reason, messageFmt string, args ...interface{}) + GetKubeClient() kubernetes.Interface + GetNetClient() netclient.K8sCniCncfIoV1Interface + GetEventBroadCaster() record.EventBroadcaster + GetEventRecorder() record.EventRecorder +} + +// KubeClient contains information given from k8s client +type KubeClient struct { Client kubernetes.Interface NetClient netclient.K8sCniCncfIoV1Interface EventBroadcaster record.EventBroadcaster EventRecorder record.EventRecorder } +// KubeClient implements ClientInfo +var _ ClientInfo = &KubeClient{} + // AddPod adds pod into kubernetes -func (c *ClientInfo) AddPod(pod *v1.Pod) (*v1.Pod, error) { +func (c *KubeClient) AddPod(pod *v1.Pod) (*v1.Pod, error) { return c.Client.Core().Pods(pod.ObjectMeta.Namespace).Create(pod) } // GetPod gets pod from kubernetes -func (c *ClientInfo) GetPod(namespace, name string) (*v1.Pod, error) { +func (c *KubeClient) GetPod(namespace, name string) (*v1.Pod, error) { return c.Client.Core().Pods(namespace).Get(name, metav1.GetOptions{}) } // DeletePod deletes a pod from kubernetes -func (c *ClientInfo) DeletePod(namespace, name string) error { +func (c *KubeClient) DeletePod(namespace, name string) error { return c.Client.Core().Pods(namespace).Delete(name, &metav1.DeleteOptions{}) } -// AddNetAttachDef adds net-attach-def into kubernetes -func (c *ClientInfo) AddNetAttachDef(netattach *nettypes.NetworkAttachmentDefinition) (*nettypes.NetworkAttachmentDefinition, error) { - return c.NetClient.NetworkAttachmentDefinitions(netattach.ObjectMeta.Namespace).Create(netattach) -} - // Eventf puts event into kubernetes events -func (c *ClientInfo) Eventf(object runtime.Object, eventtype, reason, messageFmt string, args ...interface{}) { +func (c *KubeClient) Eventf(object runtime.Object, eventtype, reason, messageFmt string, args ...interface{}) { if c != nil && c.EventRecorder != nil { c.EventRecorder.Eventf(object, eventtype, reason, messageFmt, args...) } } +func (c *KubeClient) GetKubeClient() kubernetes.Interface { + return c.Client +} + +func (c *KubeClient) GetNetClient() netclient.K8sCniCncfIoV1Interface { + return c.NetClient +} + +func (c *KubeClient) GetEventBroadCaster() record.EventBroadcaster { + return c.EventBroadcaster +} + +func (c *KubeClient) GetEventRecorder() record.EventRecorder { + return c.EventRecorder +} + +// AddNetAttachDef adds net-attach-def into kubernetes +func AddNetAttachDef(c *ClientInfo, netattach *nettypes.NetworkAttachmentDefinition) (*nettypes.NetworkAttachmentDefinition, error) { + return (*c).GetNetClient().NetworkAttachmentDefinitions(netattach.ObjectMeta.Namespace).Create(netattach) +} + func (e *NoK8sNetworkError) Error() string { return string(e.message) } // SetNetworkStatus sets network status into Pod annotation @@ -102,7 +131,7 @@ func SetNetworkStatus(client *ClientInfo, k8sArgs *types.K8sArgs, netStatus []ne if err != nil { return logging.Errorf("SetNetworkStatus: %v", err) } - if client == nil || client.Client == nil { + if client == nil || (*client).GetKubeClient() == nil { if len(conf.Delegates) == 0 { // No available kube client and no delegates, we can't do anything return logging.Errorf("SetNetworkStatus: must have either Kubernetes config or delegates") @@ -113,13 +142,13 @@ func SetNetworkStatus(client *ClientInfo, k8sArgs *types.K8sArgs, netStatus []ne podName := string(k8sArgs.K8S_POD_NAME) podNamespace := string(k8sArgs.K8S_POD_NAMESPACE) - pod, err := client.GetPod(podNamespace, podName) + pod, err := (*client).GetPod(podNamespace, podName) if err != nil { return logging.Errorf("SetNetworkStatus: failed to query the pod %v in out of cluster comm: %v", podName, err) } if netStatus != nil { - err = netutils.SetNetworkStatus(client.Client, pod, netStatus) + err = netutils.SetNetworkStatus((*client).GetKubeClient(), pod, netStatus) if err != nil { return logging.Errorf("SetNetworkStatus: failed to update the pod %v in out of cluster comm: %v", podName, err) } @@ -235,11 +264,11 @@ func parsePodNetworkAnnotation(podNetworks, defaultNamespace string) ([]*types.N func getKubernetesDelegate(client *ClientInfo, net *types.NetworkSelectionElement, confdir string, pod *v1.Pod, resourceMap map[string]*types.ResourceInfo) (*types.DelegateNetConf, map[string]*types.ResourceInfo, error) { logging.Debugf("getKubernetesDelegate: %v, %v, %s, %v, %v", client, net, confdir, pod, resourceMap) - customResource, err := client.NetClient.NetworkAttachmentDefinitions(net.Namespace).Get(net.Name, metav1.GetOptions{}) + customResource, err := (*client).GetNetClient().NetworkAttachmentDefinitions(net.Namespace).Get(net.Name, metav1.GetOptions{}) if err != nil { errMsg := fmt.Sprintf("cannot find a network-attachment-definition (%s) in namespace (%s): %v", net.Name, net.Namespace, err) if client != nil { - client.Eventf(pod, v1.EventTypeWarning, "NoNetworkFound", errMsg) + (*client).Eventf(pod, v1.EventTypeWarning, "NoNetworkFound", errMsg) } return nil, resourceMap, logging.Errorf("getKubernetesDelegate: " + errMsg) } @@ -374,7 +403,6 @@ func GetK8sClient(kubeconfig string, kubeClient *ClientInfo) (*ClientInfo, error var err error var config *rest.Config - // Otherwise try to create a kubeClient from a given kubeConfig if kubeconfig != "" { // uses the current context in kubeconfig @@ -414,13 +442,36 @@ func GetK8sClient(kubeconfig string, kubeClient *ClientInfo) (*ClientInfo, error broadcaster.StartLogging(klog.Infof) broadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: client.CoreV1().Events("")}) recorder := broadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "multus"}) - - return &ClientInfo{ + + // return &ClientInfo(&KubeClient{ + // Client: client, + // NetClient: netclient, + // EventBroadcaster: broadcaster, + // EventRecorder: recorder, + // }), nil + + var result ClientInfo = ClientInfo(&KubeClient{ Client: client, NetClient: netclient, EventBroadcaster: broadcaster, EventRecorder: recorder, - }, nil + }) + return &result, nil + + // var resultKubeClient = KubeClient{ + // Client: client, + // NetClient: netclient, + // EventBroadcaster: broadcaster, + // EventRecorder: recorder, + // } + // var result ClientInfo = &resultKubeClient + /*return KubeClient{ + defined + definedd + definedd + + }, nil*/ + // return &result, nil } // GetPodNetwork gets net-attach-def annotation from pod diff --git a/k8sclient/k8sclient_test.go b/k8sclient/k8sclient_test.go index 005598015..68cc322e2 100644 --- a/k8sclient/k8sclient_test.go +++ b/k8sclient/k8sclient_test.go @@ -45,10 +45,12 @@ func TestK8sClient(t *testing.T) { // NewFakeClientInfo returns fake client (just for testing) func NewFakeClientInfo() *ClientInfo { - return &ClientInfo{ - Client: fake.NewSimpleClientset(), - NetClient: netfake.NewSimpleClientset().K8sCniCncfIoV1(), + var resultKubeClient = KubeClient{ + Client: fake.NewSimpleClientset(), + NetClient: netfake.NewSimpleClientset().K8sCniCncfIoV1(), } + var result ClientInfo = &resultKubeClient + return &result } var _ = Describe("k8sclient operations", func() { @@ -88,19 +90,19 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net2", net2)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net2", net2)) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net3", net3)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net3", net3)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) Expect(err).NotTo(HaveOccurred()) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) @@ -128,14 +130,14 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net3", net3)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net3", net3)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) Expect(err).NotTo(HaveOccurred()) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) @@ -162,21 +164,21 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", `{ + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", `{ "name": "net1", "type": "mynet", "cniVersion": "0.2.0" }`)) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net2", `{ + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net2", `{ "name": "net2", "type": "mynet2", "cniVersion": "0.2.0" }`)) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("other-ns", "net3", `{ + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("other-ns", "net3", `{ "name": "net3", "type": "mynet3", "cniVersion": "0.2.0" @@ -185,7 +187,7 @@ var _ = Describe("k8sclient operations", func() { k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) @@ -207,12 +209,12 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(len(networks)).To(Equal(0)) Expect(err).To(MatchError("parsePodNetworkAnnotation: failed to parse pod Network Attachment Selection Annotation JSON format: invalid character 'a' looking for beginning of value")) @@ -235,22 +237,22 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", `{ + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", `{ "name": "net1", "type": "mynet", "cniVersion": "0.2.0" }`)) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net2", `{ + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net2", `{ "name": "net2", "type": "mynet2", "cniVersion": "0.2.0" }`)) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("other-ns", "net3", `{ + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("other-ns", "net3", `{ "name": "net3", "type": "mynet3", "cniVersion": "0.2.0" @@ -259,7 +261,7 @@ var _ = Describe("k8sclient operations", func() { k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) @@ -281,10 +283,10 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) net1Name := filepath.Join(tmpDir, "10-net1.conf") - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefFile(fakePod.ObjectMeta.Namespace, "net1", net1Name, `{ "name": "net1", "type": "mynet", @@ -293,7 +295,7 @@ var _ = Describe("k8sclient operations", func() { Expect(err).NotTo(HaveOccurred()) net2Name := filepath.Join(tmpDir, "20-net2.conf") - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefFile(fakePod.ObjectMeta.Namespace, "net2", net2Name, `{ "name": "net2", "type": "mynet2", @@ -303,7 +305,7 @@ var _ = Describe("k8sclient operations", func() { k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) @@ -323,14 +325,14 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", "{\"type\": \"mynet\"}")) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", "{\"type\": \"mynet\"}")) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) @@ -348,10 +350,10 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) net1Name := filepath.Join(tmpDir, "10-net1.conf") - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefFile(fakePod.ObjectMeta.Namespace, "net1", net1Name, `{ "name": "net1", "type": "mynet", @@ -359,13 +361,13 @@ var _ = Describe("k8sclient operations", func() { }`)) Expect(err).NotTo(HaveOccurred()) net2Name := filepath.Join(tmpDir, "20-net2.conf") - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefFile(fakePod.ObjectMeta.Namespace, "net2", net2Name, "asdfasdfasfdasfd")) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) @@ -389,9 +391,9 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "myCRD1", "{\"type\": \"mynet\"}")) Expect(err).NotTo(HaveOccurred()) @@ -422,12 +424,12 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "myCRD1", "{\"type\": \"mynet\"}")) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "myCRD2", "{\"type\": \"mynet2\"}")) Expect(err).NotTo(HaveOccurred()) @@ -462,12 +464,12 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "myCRD1", "{\"type\": \"mynet\"}")) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "myCRD2", "{\"type\": \"mynet2\"}")) Expect(err).NotTo(HaveOccurred()) @@ -498,11 +500,11 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) net1Name := filepath.Join(tmpDir, "10-net1.conf") - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefFile(fakePod.ObjectMeta.Namespace, "net1", net1Name, `{ "name": "myFile1", "type": "mynet", @@ -536,10 +538,10 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) net1Name := filepath.Join(tmpDir, "10-net1.conf") - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefFile(fakePod.ObjectMeta.Namespace, "10-net1", net1Name, `{ "name": "net1", "type": "mynet", @@ -572,7 +574,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = GetK8sArgs(args) @@ -599,12 +601,12 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net2", "{\"type\": \"mynet2\"}")) Expect(err).NotTo(HaveOccurred()) @@ -641,11 +643,11 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", "")) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "")) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net2", "")) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net2", "")) Expect(err).NotTo(HaveOccurred()) _, err = GetK8sArgs(args) @@ -681,9 +683,9 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) Expect(err).NotTo(HaveOccurred()) @@ -718,9 +720,9 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) Expect(err).NotTo(HaveOccurred()) @@ -752,9 +754,9 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) Expect(err).NotTo(HaveOccurred()) _, err = GetK8sArgs(args) @@ -816,9 +818,9 @@ users: } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) Expect(err).NotTo(HaveOccurred()) _, err = GetK8sArgs(args) @@ -856,15 +858,15 @@ users: } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) _, err = GetNetworkDelegates(clientInfo, pod, networks, tmpDir, netConf.NamespaceIsolation, nil) @@ -898,11 +900,11 @@ users: } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", "")) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "")) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net2", "")) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net2", "")) Expect(err).NotTo(HaveOccurred()) _, err = GetK8sArgs(args) @@ -950,16 +952,16 @@ users: // } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefAnnotation(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefAnnotation(fakePod.ObjectMeta.Namespace, "net2", net2)) Expect(err).NotTo(HaveOccurred()) // net3 is not used; make sure it's not accessed - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefAnnotation(fakePod.ObjectMeta.Namespace, "net3", net3)) Expect(err).NotTo(HaveOccurred()) @@ -979,16 +981,16 @@ users: } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", "{\"type\": \"mynet\"}")) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) // invalid case 1 - can't have more than 2 items separated by "/" pod.Annotations[networkAttachmentAnnot] = "root@someIP/root@someOtherIP/root@thirdIP" @@ -1022,16 +1024,16 @@ users: } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) Expect(err).NotTo(HaveOccurred()) fakeStatus := []nettypes.NetworkStatus{ @@ -1048,7 +1050,7 @@ users: Mac: "ea:0e:fa:63:95:f9", }, } - err = netutils.SetNetworkStatus(clientInfo.Client, pod, fakeStatus) + err = netutils.SetNetworkStatus((*clientInfo).GetKubeClient(), pod, fakeStatus) Expect(err).NotTo(HaveOccurred()) }) @@ -1067,15 +1069,15 @@ users: // } // clientInfo := NewFakeClientInfo() - // _, err := clientInfo.AddPod(fakePod) + // _, err := (*clientInfo).AddPod(fakePod) // Expect(err).NotTo(HaveOccurred()) - // _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) + // _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) // Expect(err).NotTo(HaveOccurred()) // k8sArgs, err := GetK8sArgs(args) // Expect(err).NotTo(HaveOccurred()) - // pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + // pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) // Expect(err).NotTo(HaveOccurred()) // networkstatus := "test status" @@ -1099,16 +1101,16 @@ users: } clientInfo := NewFakeClientInfo() - _, err := clientInfo.AddPod(fakePod) + _, err := (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) Expect(err).NotTo(HaveOccurred()) fakeStatus := []nettypes.NetworkStatus{ @@ -1125,7 +1127,7 @@ users: Mac: "ea:0e:fa:63:95:f9", }, } - err = netutils.SetNetworkStatus(clientInfo.Client, pod, fakeStatus) + err = netutils.SetNetworkStatus((*clientInfo).GetKubeClient(), pod, fakeStatus) Expect(err).NotTo(HaveOccurred()) }) @@ -1144,15 +1146,15 @@ users: // } // clientInfo := NewFakeClientInfo() - // _, err := clientInfo.AddPod(fakePod) + // _, err := (*clientInfo).AddPod(fakePod) // Expect(err).NotTo(HaveOccurred()) - // _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) + // _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) // Expect(err).NotTo(HaveOccurred()) // k8sArgs, err := GetK8sArgs(args) // Expect(err).NotTo(HaveOccurred()) - // pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + // pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) // Expect(err).NotTo(HaveOccurred()) // networkstatus := "test status" @@ -1209,9 +1211,9 @@ users: } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) @@ -1291,9 +1293,9 @@ users: } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) @@ -1351,9 +1353,9 @@ users: } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) @@ -1410,9 +1412,9 @@ users: } clientInfo := NewFakeClientInfo() - _, err = clientInfo.AddPod(fakePod) + _, err = (*clientInfo).AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef(testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) + _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) diff --git a/multus/multus.go b/multus/multus.go index e67004ce8..59942afe6 100644 --- a/multus/multus.go +++ b/multus/multus.go @@ -359,9 +359,9 @@ func delegateAdd(exec invoke.Exec, kubeClient *k8s.ClientInfo, pod *v1.Pod, ifNa if pod != nil { // send kubernetes events if delegate.Name != "" { - kubeClient.Eventf(pod, v1.EventTypeNormal, "AddedInterface", "Add %s %v from %s", rt.IfName, ips, delegate.Name) + (*kubeClient).Eventf(pod, v1.EventTypeNormal, "AddedInterface", "Add %s %v from %s", rt.IfName, ips, delegate.Name) } else { - kubeClient.Eventf(pod, v1.EventTypeNormal, "AddedInterface", "Add %s %v", rt.IfName, ips) + (*kubeClient).Eventf(pod, v1.EventTypeNormal, "AddedInterface", "Add %s %v", rt.IfName, ips) } } else { // for further debug https://github.com/intel/multus-cni/issues/481 @@ -485,7 +485,6 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) (c if err != nil { return nil, cmdErr(nil, "error loading netconf: %v", err) } - kubeClient, err = k8s.GetK8sClient(n.Kubeconfig, kubeClient) if err != nil { return nil, cmdErr(nil, "error getting k8s client: %v", err) @@ -508,7 +507,7 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) (c pod := (*v1.Pod)(nil) if kubeClient != nil { - pod, err = kubeClient.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err = (*kubeClient).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) if err != nil { var waitErr error // in case of ServiceUnavailable, retry 10 times with 0.5 sec interval @@ -516,7 +515,7 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) (c pollDuration := 500 * time.Millisecond pollTimeout := 5 * time.Second waitErr = wait.PollImmediate(pollDuration, pollTimeout, func() (bool, error) { - pod, err = kubeClient.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err = (*kubeClient).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) return pod != nil, err }) // retry failed, then return error with retry out @@ -703,7 +702,7 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) er pod := (*v1.Pod)(nil) if kubeClient != nil { - pod, err = kubeClient.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err = (*kubeClient).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) if err != nil { if !errors.IsNotFound(err) { return cmdErr(k8sArgs, "error getting pod: %v", err) diff --git a/multus/multus_test.go b/multus/multus_test.go index 2413b7f77..9457a9acb 100644 --- a/multus/multus_test.go +++ b/multus/multus_test.go @@ -28,19 +28,25 @@ import ( "testing" "github.com/containernetworking/cni/pkg/skel" + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/api/errors" cnitypes "github.com/containernetworking/cni/pkg/types" types020 "github.com/containernetworking/cni/pkg/types/020" current "github.com/containernetworking/cni/pkg/types/current" cniversion "github.com/containernetworking/cni/pkg/version" "github.com/containernetworking/plugins/pkg/ns" "github.com/containernetworking/plugins/pkg/testutils" - netfake "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/client/clientset/versioned/fake" + netclient "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/client/clientset/versioned/typed/k8s.cni.cncf.io/v1" "gopkg.in/intel/multus-cni.v3/k8sclient" "gopkg.in/intel/multus-cni.v3/logging" testhelpers "gopkg.in/intel/multus-cni.v3/testing" "gopkg.in/intel/multus-cni.v3/types" + netfake "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/client/clientset/versioned/fake" "k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/tools/record" + "k8s.io/client-go/kubernetes" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -68,6 +74,56 @@ type fakeExec struct { plugins []*fakePlugin } +type FakeKubeClient struct { + Client kubernetes.Interface + NetClient netclient.K8sCniCncfIoV1Interface + EventBroadcaster record.EventBroadcaster + EventRecorder record.EventRecorder + ErrorCode error // may need to be looked at... +} + +// FakeKubeClient implements ClientInfo +// var _ ClientInfo = &FakeKubeClient{} + +// AddPod adds pod into kubernetes +func (c *FakeKubeClient) AddPod(pod *v1.Pod) (*v1.Pod, error) { + return c.Client.Core().Pods(pod.ObjectMeta.Namespace).Create(pod) +} + +// GetPod gets pod from kubernetes +func (c *FakeKubeClient) GetPod(namespace, name string) (*v1.Pod, error) { + pod, _ := c.Client.Core().Pods(namespace).Get(name, metav1.GetOptions{}) + return pod, errors.NewServiceUnavailable("Testing purposes") +} + +// DeletePod deletes a pod from kubernetes +func (c *FakeKubeClient) DeletePod(namespace, name string) error { + return c.Client.Core().Pods(namespace).Delete(name, &metav1.DeleteOptions{}) +} + +// Eventf puts event into kubernetes events +func (c *FakeKubeClient) Eventf(object runtime.Object, eventtype, reason, messageFmt string, args ...interface{}) { + if c != nil && c.EventRecorder != nil { + c.EventRecorder.Eventf(object, eventtype, reason, messageFmt, args...) + } +} + +func (c *FakeKubeClient) GetKubeClient() kubernetes.Interface { + return c.Client +} + +func (c *FakeKubeClient) GetNetClient() netclient.K8sCniCncfIoV1Interface { + return c.NetClient +} + +func (c *FakeKubeClient) GetEventBroadCaster() record.EventBroadcaster { + return c.EventBroadcaster +} + +func (c *FakeKubeClient) GetEventRecorder() record.EventRecorder { + return c.EventRecorder +} + func (f *fakeExec) addPlugin(expectedEnv []string, expectedIfname, expectedConf string, result *current.Result, err error) { f.plugins = append(f.plugins, &fakePlugin{ expectedEnv: expectedEnv, @@ -190,11 +246,13 @@ func (f *fakeExec) FindInPath(plugin string, paths []string) (string, error) { // NewFakeClientInfo returns fake client (just for testing) func NewFakeClientInfo() *k8sclient.ClientInfo { - return &k8sclient.ClientInfo{ + var resultKubeClient = &k8sclient.KubeClient{ Client: fake.NewSimpleClientset(), NetClient: netfake.NewSimpleClientset().K8sCniCncfIoV1(), EventRecorder: record.NewFakeRecorder(10), } + var result k8sclient.ClientInfo = resultKubeClient + return &result } func collectEvents(source <-chan string) []string { @@ -1392,10 +1450,10 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := clientInfo.Client.Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -1470,17 +1528,17 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := clientInfo.Client.Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net2", net2)) Expect(err).NotTo(HaveOccurred()) // net3 is not used; make sure it's not accessed - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net3", net3)) Expect(err).NotTo(HaveOccurred()) @@ -1493,7 +1551,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { // plugin 1 is the masterplugin Expect(reflect.DeepEqual(r, expectedResult1)).To(BeTrue()) - recorder := clientInfo.EventRecorder.(*record.FakeRecorder) + recorder := (*clientInfo).GetEventRecorder().(*record.FakeRecorder) events := collectEvents(recorder.Events) Expect(len(events)).To(Equal(3)) Expect(events[0]).To(Equal("Normal AddedInterface Add eth0 [1.1.1.2/24]")) @@ -1546,10 +1604,10 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := clientInfo.Client.Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -1565,7 +1623,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - clientInfo.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + (*clientInfo).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) err = cmdDel(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) @@ -1616,8 +1674,8 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err := fKubeClient.AddNetAttachDef( + (*fKubeClient).AddPod(fakePod) + _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -1633,7 +1691,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - fKubeClient.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) @@ -1684,8 +1742,8 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err := fKubeClient.AddNetAttachDef( + (*fKubeClient).AddPod(fakePod) + _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -1701,7 +1759,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - fKubeClient.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) @@ -1784,8 +1842,8 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { fExec.addPlugin020(nil, "eth0", net1, expectedResult1, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err := fKubeClient.AddNetAttachDef(testhelpers.NewFakeNetAttachDef("kube-system", "net1", net1)) + (*fKubeClient).AddPod(fakePod) + _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") @@ -1853,8 +1911,8 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err = fKubeClient.AddNetAttachDef( + (*fKubeClient).AddPod(fakePod) + _, err = k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") @@ -1929,8 +1987,8 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err = fKubeClient.AddNetAttachDef( + (*fKubeClient).AddPod(fakePod) + _, err = k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") @@ -2631,10 +2689,10 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := clientInfo.Client.Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -2713,17 +2771,17 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := clientInfo.Client.Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net2", net2)) Expect(err).NotTo(HaveOccurred()) // net3 is not used; make sure it's not accessed - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net3", net3)) Expect(err).NotTo(HaveOccurred()) @@ -2783,10 +2841,10 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := clientInfo.Client.Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = clientInfo.AddNetAttachDef( + _, err = k8sclient.AddNetAttachDef(clientInfo, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -2801,7 +2859,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - clientInfo.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + (*clientInfo).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) err = cmdDel(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) @@ -2854,8 +2912,8 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err := fKubeClient.AddNetAttachDef( + (*fKubeClient).AddPod(fakePod) + _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -2870,7 +2928,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - fKubeClient.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) @@ -2923,8 +2981,8 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err := fKubeClient.AddNetAttachDef( + (*fKubeClient).AddPod(fakePod) + _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -2939,7 +2997,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - fKubeClient.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) @@ -3023,8 +3081,8 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { fExec.addPlugin(nil, "eth0", net1, expectedResult1, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err := fKubeClient.AddNetAttachDef(testhelpers.NewFakeNetAttachDef("kube-system", "net1", net1)) + (*fKubeClient).AddPod(fakePod) + _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") @@ -3093,8 +3151,8 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err = fKubeClient.AddNetAttachDef( + (*fKubeClient).AddPod(fakePod) + _, err = k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") @@ -3170,8 +3228,8 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - fKubeClient.AddPod(fakePod) - _, err = fKubeClient.AddNetAttachDef( + (*fKubeClient).AddPod(fakePod) + _, err = k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") @@ -3266,4 +3324,74 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { err = conflistDel(rt, rawnetconflist, binDir, fExec) Expect(err).To(HaveOccurred()) }) -}) + + It("retries after a service unavailable error", func() { + args := &skel.CmdArgs{ + ContainerID: "123456789", + Netns: testNS.Path(), + IfName: "eth0", + StdinData: []byte(`{ + "name": "node-cni-network", + "type": "multus", + "defaultnetworkfile": "/tmp/foo.multus.conf", + "defaultnetworkwaitseconds": 3, + "delegates": [{ + "name": "weave1", + "cniVersion": "0.2.0", + "type": "weave-net" + },{ + "name": "other1", + "cniVersion": "0.2.0", + "type": "other-plugin" + }] + }`), + } + + logging.SetLogLevel("verbose") + + // Touch the default network file. + configPath := "/tmp/foo.multus.conf" + os.OpenFile(configPath, os.O_RDONLY|os.O_CREATE, 0755) + + fExec := &fakeExec{} + expectedResult1 := &types020.Result{ + CNIVersion: "0.2.0", + IP4: &types020.IPConfig{ + IP: *testhelpers.EnsureCIDR("1.1.1.2/24"), + }, + } + expectedConf1 := `{ + "name": "weave1", + "cniVersion": "0.2.0", + "type": "weave-net" + }` + fExec.addPlugin020(nil, "eth0", expectedConf1, expectedResult1, nil) + + expectedResult2 := &types020.Result{ + CNIVersion: "0.2.0", + IP4: &types020.IPConfig{ + IP: *testhelpers.EnsureCIDR("1.1.1.5/24"), + }, + } + expectedConf2 := `{ + "name": "other1", + "cniVersion": "0.2.0", + "type": "other-plugin" + }` + fExec.addPlugin020(nil, "net1", expectedConf2, expectedResult2, nil) + + os.Setenv("CNI_COMMAND", "ADD") + os.Setenv("CNI_IFNAME", "eth0") + + var fakeKubeClient = &FakeKubeClient{ + Client: fake.NewSimpleClientset(), + NetClient: netfake.NewSimpleClientset().K8sCniCncfIoV1(), + EventRecorder: record.NewFakeRecorder(10), + ErrorCode: errors.NewServiceUnavailable("Testing purposes"), + } + var fakeClientInfo k8sclient.ClientInfo = fakeKubeClient + + _, err := cmdAdd(args, fExec, &fakeClientInfo) + Expect(err).To(HaveOccurred()) + }) +}) \ No newline at end of file From 7312006898016580dfd883293e26216dde7e9a79 Mon Sep 17 00:00:00 2001 From: Nikhil Simha Date: Thu, 11 Jun 2020 17:00:26 -0400 Subject: [PATCH 2/3] simplified interface/structure handling --- k8sclient/k8sclient.go | 53 ++++++++++----------------------- k8sclient/k8sclient_test.go | 46 ++++++++++++++--------------- multus/multus.go | 16 +++++----- multus/multus_test.go | 58 ++++++++++++++++++------------------- 4 files changed, 75 insertions(+), 98 deletions(-) diff --git a/k8sclient/k8sclient.go b/k8sclient/k8sclient.go index f3e5634e7..eba0b8390 100644 --- a/k8sclient/k8sclient.go +++ b/k8sclient/k8sclient.go @@ -123,7 +123,7 @@ func AddNetAttachDef(c *ClientInfo, netattach *nettypes.NetworkAttachmentDefinit func (e *NoK8sNetworkError) Error() string { return string(e.message) } // SetNetworkStatus sets network status into Pod annotation -func SetNetworkStatus(client *ClientInfo, k8sArgs *types.K8sArgs, netStatus []nettypes.NetworkStatus, conf *types.NetConf) error { +func SetNetworkStatus(client ClientInfo, k8sArgs *types.K8sArgs, netStatus []nettypes.NetworkStatus, conf *types.NetConf) error { var err error logging.Debugf("SetNetworkStatus: %v, %v, %v, %v", client, k8sArgs, netStatus, conf) @@ -131,7 +131,7 @@ func SetNetworkStatus(client *ClientInfo, k8sArgs *types.K8sArgs, netStatus []ne if err != nil { return logging.Errorf("SetNetworkStatus: %v", err) } - if client == nil || (*client).GetKubeClient() == nil { + if client == nil || client.GetKubeClient() == nil { if len(conf.Delegates) == 0 { // No available kube client and no delegates, we can't do anything return logging.Errorf("SetNetworkStatus: must have either Kubernetes config or delegates") @@ -142,13 +142,13 @@ func SetNetworkStatus(client *ClientInfo, k8sArgs *types.K8sArgs, netStatus []ne podName := string(k8sArgs.K8S_POD_NAME) podNamespace := string(k8sArgs.K8S_POD_NAMESPACE) - pod, err := (*client).GetPod(podNamespace, podName) + pod, err := client.GetPod(podNamespace, podName) if err != nil { return logging.Errorf("SetNetworkStatus: failed to query the pod %v in out of cluster comm: %v", podName, err) } if netStatus != nil { - err = netutils.SetNetworkStatus((*client).GetKubeClient(), pod, netStatus) + err = netutils.SetNetworkStatus(client.GetKubeClient(), pod, netStatus) if err != nil { return logging.Errorf("SetNetworkStatus: failed to update the pod %v in out of cluster comm: %v", podName, err) } @@ -261,14 +261,14 @@ func parsePodNetworkAnnotation(podNetworks, defaultNamespace string) ([]*types.N return networks, nil } -func getKubernetesDelegate(client *ClientInfo, net *types.NetworkSelectionElement, confdir string, pod *v1.Pod, resourceMap map[string]*types.ResourceInfo) (*types.DelegateNetConf, map[string]*types.ResourceInfo, error) { +func getKubernetesDelegate(client ClientInfo, net *types.NetworkSelectionElement, confdir string, pod *v1.Pod, resourceMap map[string]*types.ResourceInfo) (*types.DelegateNetConf, map[string]*types.ResourceInfo, error) { logging.Debugf("getKubernetesDelegate: %v, %v, %s, %v, %v", client, net, confdir, pod, resourceMap) - customResource, err := (*client).GetNetClient().NetworkAttachmentDefinitions(net.Namespace).Get(net.Name, metav1.GetOptions{}) + customResource, err := client.GetNetClient().NetworkAttachmentDefinitions(net.Namespace).Get(net.Name, metav1.GetOptions{}) if err != nil { errMsg := fmt.Sprintf("cannot find a network-attachment-definition (%s) in namespace (%s): %v", net.Name, net.Namespace, err) if client != nil { - (*client).Eventf(pod, v1.EventTypeWarning, "NoNetworkFound", errMsg) + client.Eventf(pod, v1.EventTypeWarning, "NoNetworkFound", errMsg) } return nil, resourceMap, logging.Errorf("getKubernetesDelegate: " + errMsg) } @@ -330,7 +330,7 @@ func GetK8sArgs(args *skel.CmdArgs) (*types.K8sArgs, error) { // TryLoadPodDelegates attempts to load Kubernetes-defined delegates and add them to the Multus config. // Returns the number of Kubernetes-defined delegates added or an error. -func TryLoadPodDelegates(pod *v1.Pod, conf *types.NetConf, clientInfo *ClientInfo, resourceMap map[string]*types.ResourceInfo) (int, *ClientInfo, error) { +func TryLoadPodDelegates(pod *v1.Pod, conf *types.NetConf, clientInfo ClientInfo, resourceMap map[string]*types.ResourceInfo) (int, ClientInfo, error) { var err error logging.Debugf("TryLoadPodDelegates: %v, %v, %v", pod, conf, clientInfo) @@ -393,7 +393,7 @@ func TryLoadPodDelegates(pod *v1.Pod, conf *types.NetConf, clientInfo *ClientInf } // GetK8sClient gets client info from kubeconfig -func GetK8sClient(kubeconfig string, kubeClient *ClientInfo) (*ClientInfo, error) { +func GetK8sClient(kubeconfig string, kubeClient ClientInfo) (ClientInfo, error) { logging.Debugf("GetK8sClient: %s, %v", kubeconfig, kubeClient) // If we get a valid kubeClient (eg from testcases) just return that // one. @@ -443,35 +443,12 @@ func GetK8sClient(kubeconfig string, kubeClient *ClientInfo) (*ClientInfo, error broadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: client.CoreV1().Events("")}) recorder := broadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "multus"}) - // return &ClientInfo(&KubeClient{ - // Client: client, - // NetClient: netclient, - // EventBroadcaster: broadcaster, - // EventRecorder: recorder, - // }), nil - - var result ClientInfo = ClientInfo(&KubeClient{ + return &KubeClient{ Client: client, NetClient: netclient, EventBroadcaster: broadcaster, EventRecorder: recorder, - }) - return &result, nil - - // var resultKubeClient = KubeClient{ - // Client: client, - // NetClient: netclient, - // EventBroadcaster: broadcaster, - // EventRecorder: recorder, - // } - // var result ClientInfo = &resultKubeClient - /*return KubeClient{ - defined - definedd - definedd - - }, nil*/ - // return &result, nil + }, nil } // GetPodNetwork gets net-attach-def annotation from pod @@ -493,7 +470,7 @@ func GetPodNetwork(pod *v1.Pod) ([]*types.NetworkSelectionElement, error) { } // GetNetworkDelegates returns delegatenetconf from net-attach-def annotation in pod -func GetNetworkDelegates(k8sclient *ClientInfo, pod *v1.Pod, networks []*types.NetworkSelectionElement, confdir string, confnamespaceIsolation bool, resourceMap map[string]*types.ResourceInfo) ([]*types.DelegateNetConf, error) { +func GetNetworkDelegates(k8sclient ClientInfo, pod *v1.Pod, networks []*types.NetworkSelectionElement, confdir string, confnamespaceIsolation bool, resourceMap map[string]*types.ResourceInfo) ([]*types.DelegateNetConf, error) { logging.Debugf("GetNetworkDelegates: %v, %v, %v, %v, %v, %v", k8sclient, pod, networks, confdir, confnamespaceIsolation, resourceMap) // Read all network objects referenced by 'networks' var delegates []*types.DelegateNetConf @@ -523,7 +500,7 @@ func GetNetworkDelegates(k8sclient *ClientInfo, pod *v1.Pod, networks []*types.N return delegates, nil } -func getNetDelegate(client *ClientInfo, pod *v1.Pod, netname, confdir, namespace string, resourceMap map[string]*types.ResourceInfo) (*types.DelegateNetConf, map[string]*types.ResourceInfo, error) { +func getNetDelegate(client ClientInfo, pod *v1.Pod, netname, confdir, namespace string, resourceMap map[string]*types.ResourceInfo) (*types.DelegateNetConf, map[string]*types.ResourceInfo, error) { logging.Debugf("getNetDelegate: %v, %v, %v, %s", client, netname, confdir, namespace) // option1) search CRD object for the network net := &types.NetworkSelectionElement{ @@ -572,7 +549,7 @@ func getNetDelegate(client *ClientInfo, pod *v1.Pod, netname, confdir, namespace } // GetDefaultNetworks parses 'defaultNetwork' config, gets network json and put it into netconf.Delegates. -func GetDefaultNetworks(pod *v1.Pod, conf *types.NetConf, kubeClient *ClientInfo, resourceMap map[string]*types.ResourceInfo) (map[string]*types.ResourceInfo, error) { +func GetDefaultNetworks(pod *v1.Pod, conf *types.NetConf, kubeClient ClientInfo, resourceMap map[string]*types.ResourceInfo) (map[string]*types.ResourceInfo, error) { logging.Debugf("GetDefaultNetworks: %v, %v, %v, %v", pod, conf, kubeClient, resourceMap) var delegates []*types.DelegateNetConf @@ -615,7 +592,7 @@ func GetDefaultNetworks(pod *v1.Pod, conf *types.NetConf, kubeClient *ClientInfo } // tryLoadK8sPodDefaultNetwork get pod default network from annotations -func tryLoadK8sPodDefaultNetwork(kubeClient *ClientInfo, pod *v1.Pod, conf *types.NetConf) (*types.DelegateNetConf, error) { +func tryLoadK8sPodDefaultNetwork(kubeClient ClientInfo, pod *v1.Pod, conf *types.NetConf) (*types.DelegateNetConf, error) { var netAnnot string logging.Debugf("tryLoadK8sPodDefaultNetwork: %v, %v, %v", kubeClient, pod, conf) diff --git a/k8sclient/k8sclient_test.go b/k8sclient/k8sclient_test.go index 68cc322e2..b59f3fd14 100644 --- a/k8sclient/k8sclient_test.go +++ b/k8sclient/k8sclient_test.go @@ -106,7 +106,7 @@ var _ = Describe("k8sclient operations", func() { Expect(err).NotTo(HaveOccurred()) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(2)) @@ -141,7 +141,7 @@ var _ = Describe("k8sclient operations", func() { Expect(err).NotTo(HaveOccurred()) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) Expect(len(delegates)).To(Equal(0)) Expect(err).To(MatchError("GetNetworkDelegates: failed getting the delegate: getKubernetesDelegate: cannot find a network-attachment-definition (net1) in namespace (test): network-attachment-definitions.k8s.cni.cncf.io \"net1\" not found")) }) @@ -190,7 +190,7 @@ var _ = Describe("k8sclient operations", func() { pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(3)) @@ -264,7 +264,7 @@ var _ = Describe("k8sclient operations", func() { pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(3)) @@ -308,7 +308,7 @@ var _ = Describe("k8sclient operations", func() { pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(2)) @@ -335,7 +335,7 @@ var _ = Describe("k8sclient operations", func() { pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(1)) @@ -370,7 +370,7 @@ var _ = Describe("k8sclient operations", func() { pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) Expect(len(delegates)).To(Equal(0)) Expect(err).To(MatchError(fmt.Sprintf("GetNetworkDelegates: failed getting the delegate: GetCNIConfig: err in GetCNIConfigFromFile: Error loading CNI config file %s: error parsing configuration: invalid character 'a' looking for beginning of value", net2Name))) }) @@ -400,7 +400,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("myCRD1")) @@ -436,7 +436,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(2)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("myCRD1")) @@ -476,7 +476,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("myCRD1")) @@ -515,7 +515,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("myFile1")) @@ -551,7 +551,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("net1")) @@ -580,7 +580,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) Expect(err).To(HaveOccurred()) }) @@ -613,13 +613,13 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("net2")) Expect(netConf.Delegates[0].Conf.Type).To(Equal("mynet2")) - numK8sDelegates, _, err := TryLoadPodDelegates(fakePod, netConf, clientInfo, nil) + numK8sDelegates, _, err := TryLoadPodDelegates(fakePod, netConf, *clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(numK8sDelegates).To(Equal(0)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("net1")) @@ -653,11 +653,11 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) Expect(err).To(HaveOccurred()) netConf.ConfDir = "badfilepath" - _, _, err = TryLoadPodDelegates(fakePod, netConf, clientInfo, nil) + _, _, err = TryLoadPodDelegates(fakePod, netConf, *clientInfo, nil) Expect(err).To(HaveOccurred()) }) @@ -692,7 +692,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - numK8sDelegates, _, err := TryLoadPodDelegates(fakePod, netConf, clientInfo, nil) + numK8sDelegates, _, err := TryLoadPodDelegates(fakePod, netConf, *clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(numK8sDelegates).To(Equal(0)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("net1")) @@ -826,7 +826,7 @@ users: _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, _, err = TryLoadPodDelegates(fakePod, netConf, clientInfo, nil) + _, _, err = TryLoadPodDelegates(fakePod, netConf, *clientInfo, nil) Expect(err).NotTo(HaveOccurred()) }) @@ -869,7 +869,7 @@ users: pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - _, err = GetNetworkDelegates(clientInfo, pod, networks, tmpDir, netConf.NamespaceIsolation, nil) + _, err = GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, netConf.NamespaceIsolation, nil) Expect(err).To(HaveOccurred()) Expect(err).To(MatchError("GetNetworkDelegates: namespace isolation enabled, annotation violates permission, pod is in namespace test but refers to target namespace kube-system")) @@ -911,7 +911,7 @@ users: Expect(err).NotTo(HaveOccurred()) netConf.ConfDir = "garbage value" - _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) Expect(err).To(HaveOccurred()) }) }) @@ -968,7 +968,7 @@ users: networks, err := GetPodNetwork(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = GetNetworkDelegates(clientInfo, fakePod, networks, tmpDir, false, nil) + _, err = GetNetworkDelegates(*clientInfo, fakePod, networks, tmpDir, false, nil) Expect(err).To(HaveOccurred()) }) }) @@ -1219,7 +1219,7 @@ users: k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - err = SetNetworkStatus(clientInfo, k8sArgs, netstatus, netConf) + err = SetNetworkStatus(*clientInfo, k8sArgs, netstatus, netConf) Expect(err).NotTo(HaveOccurred()) }) diff --git a/multus/multus.go b/multus/multus.go index 59942afe6..4ce60964f 100644 --- a/multus/multus.go +++ b/multus/multus.go @@ -266,7 +266,7 @@ func conflistDel(rt *libcni.RuntimeConf, rawnetconflist []byte, binDir string, e return err } -func delegateAdd(exec invoke.Exec, kubeClient *k8s.ClientInfo, pod *v1.Pod, ifName string, delegate *types.DelegateNetConf, rt *libcni.RuntimeConf, binDir string, cniArgs string) (cnitypes.Result, error) { +func delegateAdd(exec invoke.Exec, kubeClient k8s.ClientInfo, pod *v1.Pod, ifName string, delegate *types.DelegateNetConf, rt *libcni.RuntimeConf, binDir string, cniArgs string) (cnitypes.Result, error) { logging.Debugf("delegateAdd: %v, %s, %v, %v, %s", exec, ifName, delegate, rt, binDir) if os.Setenv("CNI_IFNAME", ifName) != nil { return nil, logging.Errorf("delegateAdd: error setting envionment variable CNI_IFNAME") @@ -359,9 +359,9 @@ func delegateAdd(exec invoke.Exec, kubeClient *k8s.ClientInfo, pod *v1.Pod, ifNa if pod != nil { // send kubernetes events if delegate.Name != "" { - (*kubeClient).Eventf(pod, v1.EventTypeNormal, "AddedInterface", "Add %s %v from %s", rt.IfName, ips, delegate.Name) + kubeClient.Eventf(pod, v1.EventTypeNormal, "AddedInterface", "Add %s %v from %s", rt.IfName, ips, delegate.Name) } else { - (*kubeClient).Eventf(pod, v1.EventTypeNormal, "AddedInterface", "Add %s %v", rt.IfName, ips) + kubeClient.Eventf(pod, v1.EventTypeNormal, "AddedInterface", "Add %s %v", rt.IfName, ips) } } else { // for further debug https://github.com/intel/multus-cni/issues/481 @@ -479,7 +479,7 @@ func cmdPluginErr(k8sArgs *types.K8sArgs, confName string, format string, args . return logging.Errorf(msg+format, args...) } -func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) (cnitypes.Result, error) { +func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.ClientInfo) (cnitypes.Result, error) { n, err := types.LoadNetConf(args.StdinData) logging.Debugf("cmdAdd: %v, %v, %v", args, exec, kubeClient) if err != nil { @@ -507,7 +507,7 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) (c pod := (*v1.Pod)(nil) if kubeClient != nil { - pod, err = (*kubeClient).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err = kubeClient.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) if err != nil { var waitErr error // in case of ServiceUnavailable, retry 10 times with 0.5 sec interval @@ -515,7 +515,7 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) (c pollDuration := 500 * time.Millisecond pollTimeout := 5 * time.Second waitErr = wait.PollImmediate(pollDuration, pollTimeout, func() (bool, error) { - pod, err = (*kubeClient).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err = kubeClient.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) return pod != nil, err }) // retry failed, then return error with retry out @@ -659,7 +659,7 @@ func cmdCheck(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) return nil } -func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) error { +func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.ClientInfo) error { in, err := types.LoadNetConf(args.StdinData) logging.Debugf("cmdDel: %v, %v, %v", args, exec, kubeClient) if err != nil { @@ -702,7 +702,7 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient *k8s.ClientInfo) er pod := (*v1.Pod)(nil) if kubeClient != nil { - pod, err = (*kubeClient).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err = kubeClient.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) if err != nil { if !errors.IsNotFound(err) { return cmdErr(k8sArgs, "error getting pod: %v", err) diff --git a/multus/multus_test.go b/multus/multus_test.go index 9457a9acb..b0602867f 100644 --- a/multus/multus_test.go +++ b/multus/multus_test.go @@ -1459,7 +1459,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, clientInfo) + result, err := cmdAdd(args, fExec, *clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*current.Result) @@ -1544,7 +1544,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, clientInfo) + result, err := cmdAdd(args, fExec, *clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1613,7 +1613,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, clientInfo) + result, err := cmdAdd(args, fExec, *clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1624,7 +1624,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info (*clientInfo).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, clientInfo) + err = cmdDel(args, fExec, *clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1681,7 +1681,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1692,7 +1692,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1749,7 +1749,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1760,7 +1760,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1848,7 +1848,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1856,7 +1856,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1917,7 +1917,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1932,7 +1932,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { By("Delete and check net count is not incremented") os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1993,7 +1993,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -2011,7 +2011,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { By("Delete and check pod/net count is incremented") os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -2698,7 +2698,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, clientInfo) + result, err := cmdAdd(args, fExec, *clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*current.Result) @@ -2787,7 +2787,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, clientInfo) + result, err := cmdAdd(args, fExec, *clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -2850,7 +2850,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, clientInfo) + result, err := cmdAdd(args, fExec, *clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -2860,7 +2860,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info (*clientInfo).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, clientInfo) + err = cmdDel(args, fExec, *clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -2919,7 +2919,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -2929,7 +2929,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -2988,7 +2988,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -2998,7 +2998,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -3087,14 +3087,14 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) Expect(reflect.DeepEqual(result, expectedResult1)).To(BeTrue()) os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -3157,7 +3157,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -3171,7 +3171,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { By("Delete and check net count is not incremented") os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -3234,7 +3234,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, fKubeClient) + result, err := cmdAdd(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -3251,7 +3251,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { By("Delete and check pod/net count is incremented") os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, fKubeClient) + err = cmdDel(args, fExec, *fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -3391,7 +3391,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { } var fakeClientInfo k8sclient.ClientInfo = fakeKubeClient - _, err := cmdAdd(args, fExec, &fakeClientInfo) + _, err := cmdAdd(args, fExec, fakeClientInfo) Expect(err).To(HaveOccurred()) }) }) \ No newline at end of file From 47ad0313378dc87551f7cd93fe704f4f7a56889a Mon Sep 17 00:00:00 2001 From: root Date: Wed, 17 Jun 2020 10:30:29 -0400 Subject: [PATCH 3/3] Added requested format changes --- go.sum | 2 + k8sclient/k8sclient.go | 4 +- k8sclient/k8sclient_test.go | 148 ++++++++++++++++++------------------ multus/multus_test.go | 110 +++++++++++++-------------- 4 files changed, 131 insertions(+), 133 deletions(-) diff --git a/go.sum b/go.sum index 0878e6534..7ff12d5bc 100644 --- a/go.sum +++ b/go.sum @@ -244,6 +244,8 @@ gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKW gopkg.in/inf.v0 v0.9.0 h1:3zYtXIO92bvsdS3ggAdA8Gb4Azj0YU+TVY1uGYNFA8o= gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/k8sclient/k8sclient.go b/k8sclient/k8sclient.go index eba0b8390..8373eedac 100644 --- a/k8sclient/k8sclient.go +++ b/k8sclient/k8sclient.go @@ -116,8 +116,8 @@ func (c *KubeClient) GetEventRecorder() record.EventRecorder { } // AddNetAttachDef adds net-attach-def into kubernetes -func AddNetAttachDef(c *ClientInfo, netattach *nettypes.NetworkAttachmentDefinition) (*nettypes.NetworkAttachmentDefinition, error) { - return (*c).GetNetClient().NetworkAttachmentDefinitions(netattach.ObjectMeta.Namespace).Create(netattach) +func AddNetAttachDef(c ClientInfo, netattach *nettypes.NetworkAttachmentDefinition) (*nettypes.NetworkAttachmentDefinition, error) { + return c.GetNetClient().NetworkAttachmentDefinitions(netattach.ObjectMeta.Namespace).Create(netattach) } func (e *NoK8sNetworkError) Error() string { return string(e.message) } diff --git a/k8sclient/k8sclient_test.go b/k8sclient/k8sclient_test.go index b59f3fd14..348f509ea 100644 --- a/k8sclient/k8sclient_test.go +++ b/k8sclient/k8sclient_test.go @@ -44,13 +44,11 @@ func TestK8sClient(t *testing.T) { } // NewFakeClientInfo returns fake client (just for testing) -func NewFakeClientInfo() *ClientInfo { - var resultKubeClient = KubeClient{ +func NewFakeClientInfo() ClientInfo { + return &KubeClient{ Client: fake.NewSimpleClientset(), NetClient: netfake.NewSimpleClientset().K8sCniCncfIoV1(), } - var result ClientInfo = &resultKubeClient - return &result } var _ = Describe("k8sclient operations", func() { @@ -90,7 +88,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) @@ -102,11 +100,11 @@ var _ = Describe("k8sclient operations", func() { k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) Expect(err).NotTo(HaveOccurred()) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(2)) @@ -130,18 +128,18 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net3", net3)) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) Expect(err).NotTo(HaveOccurred()) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) Expect(len(delegates)).To(Equal(0)) Expect(err).To(MatchError("GetNetworkDelegates: failed getting the delegate: getKubernetesDelegate: cannot find a network-attachment-definition (net1) in namespace (test): network-attachment-definitions.k8s.cni.cncf.io \"net1\" not found")) }) @@ -164,7 +162,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", `{ "name": "net1", @@ -187,10 +185,10 @@ var _ = Describe("k8sclient operations", func() { k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(3)) @@ -209,12 +207,12 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(len(networks)).To(Equal(0)) Expect(err).To(MatchError("parsePodNetworkAnnotation: failed to parse pod Network Attachment Selection Annotation JSON format: invalid character 'a' looking for beginning of value")) @@ -237,7 +235,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", `{ @@ -261,10 +259,10 @@ var _ = Describe("k8sclient operations", func() { k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(3)) @@ -283,7 +281,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) net1Name := filepath.Join(tmpDir, "10-net1.conf") _, err = AddNetAttachDef(clientInfo, @@ -305,10 +303,10 @@ var _ = Describe("k8sclient operations", func() { k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(2)) @@ -325,17 +323,17 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", "{\"type\": \"mynet\"}")) Expect(err).NotTo(HaveOccurred()) k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(delegates)).To(Equal(1)) @@ -350,7 +348,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) net1Name := filepath.Join(tmpDir, "10-net1.conf") _, err = AddNetAttachDef(clientInfo, @@ -367,10 +365,10 @@ var _ = Describe("k8sclient operations", func() { k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - delegates, err := GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, false, nil) + delegates, err := GetNetworkDelegates(clientInfo, pod, networks, tmpDir, false, nil) Expect(len(delegates)).To(Equal(0)) Expect(err).To(MatchError(fmt.Sprintf("GetNetworkDelegates: failed getting the delegate: GetCNIConfig: err in GetCNIConfigFromFile: Error loading CNI config file %s: error parsing configuration: invalid character 'a' looking for beginning of value", net2Name))) }) @@ -391,7 +389,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "myCRD1", "{\"type\": \"mynet\"}")) @@ -400,7 +398,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("myCRD1")) @@ -424,7 +422,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "myCRD1", "{\"type\": \"mynet\"}")) @@ -436,7 +434,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(2)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("myCRD1")) @@ -464,7 +462,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "myCRD1", "{\"type\": \"mynet\"}")) @@ -476,7 +474,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("myCRD1")) @@ -500,7 +498,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) net1Name := filepath.Join(tmpDir, "10-net1.conf") @@ -515,7 +513,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("myFile1")) @@ -538,7 +536,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) net1Name := filepath.Join(tmpDir, "10-net1.conf") _, err = AddNetAttachDef(clientInfo, @@ -551,7 +549,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("net1")) @@ -574,13 +572,13 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) Expect(err).To(HaveOccurred()) }) @@ -601,7 +599,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) @@ -613,13 +611,13 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(len(netConf.Delegates)).To(Equal(1)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("net2")) Expect(netConf.Delegates[0].Conf.Type).To(Equal("mynet2")) - numK8sDelegates, _, err := TryLoadPodDelegates(fakePod, netConf, *clientInfo, nil) + numK8sDelegates, _, err := TryLoadPodDelegates(fakePod, netConf, clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(numK8sDelegates).To(Equal(0)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("net1")) @@ -643,7 +641,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "")) Expect(err).NotTo(HaveOccurred()) @@ -653,11 +651,11 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) Expect(err).To(HaveOccurred()) netConf.ConfDir = "badfilepath" - _, _, err = TryLoadPodDelegates(fakePod, netConf, *clientInfo, nil) + _, _, err = TryLoadPodDelegates(fakePod, netConf, clientInfo, nil) Expect(err).To(HaveOccurred()) }) @@ -683,7 +681,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) @@ -692,7 +690,7 @@ var _ = Describe("k8sclient operations", func() { _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - numK8sDelegates, _, err := TryLoadPodDelegates(fakePod, netConf, *clientInfo, nil) + numK8sDelegates, _, err := TryLoadPodDelegates(fakePod, netConf, clientInfo, nil) Expect(err).NotTo(HaveOccurred()) Expect(numK8sDelegates).To(Equal(0)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("net1")) @@ -720,7 +718,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) @@ -754,7 +752,7 @@ var _ = Describe("k8sclient operations", func() { } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) @@ -818,7 +816,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "{\"type\": \"mynet1\"}")) @@ -826,7 +824,7 @@ users: _, err = GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - _, _, err = TryLoadPodDelegates(fakePod, netConf, *clientInfo, nil) + _, _, err = TryLoadPodDelegates(fakePod, netConf, clientInfo, nil) Expect(err).NotTo(HaveOccurred()) }) @@ -858,7 +856,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -866,10 +864,10 @@ users: k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) networks, err := GetPodNetwork(pod) Expect(err).NotTo(HaveOccurred()) - _, err = GetNetworkDelegates(*clientInfo, pod, networks, tmpDir, netConf.NamespaceIsolation, nil) + _, err = GetNetworkDelegates(clientInfo, pod, networks, tmpDir, netConf.NamespaceIsolation, nil) Expect(err).To(HaveOccurred()) Expect(err).To(MatchError("GetNetworkDelegates: namespace isolation enabled, annotation violates permission, pod is in namespace test but refers to target namespace kube-system")) @@ -900,7 +898,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", "")) Expect(err).NotTo(HaveOccurred()) @@ -911,7 +909,7 @@ users: Expect(err).NotTo(HaveOccurred()) netConf.ConfDir = "garbage value" - _, err = GetDefaultNetworks(fakePod, netConf, *clientInfo, nil) + _, err = GetDefaultNetworks(fakePod, netConf, clientInfo, nil) Expect(err).To(HaveOccurred()) }) }) @@ -952,7 +950,7 @@ users: // } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDefAnnotation(fakePod.ObjectMeta.Namespace, "net1", net1)) @@ -968,7 +966,7 @@ users: networks, err := GetPodNetwork(fakePod) Expect(err).NotTo(HaveOccurred()) - _, err = GetNetworkDelegates(*clientInfo, fakePod, networks, tmpDir, false, nil) + _, err = GetNetworkDelegates(clientInfo, fakePod, networks, tmpDir, false, nil) Expect(err).To(HaveOccurred()) }) }) @@ -981,7 +979,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, @@ -990,7 +988,7 @@ users: k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) // invalid case 1 - can't have more than 2 items separated by "/" pod.Annotations[networkAttachmentAnnot] = "root@someIP/root@someOtherIP/root@thirdIP" @@ -1024,7 +1022,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) @@ -1033,7 +1031,7 @@ users: k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) Expect(err).NotTo(HaveOccurred()) fakeStatus := []nettypes.NetworkStatus{ @@ -1050,7 +1048,7 @@ users: Mac: "ea:0e:fa:63:95:f9", }, } - err = netutils.SetNetworkStatus((*clientInfo).GetKubeClient(), pod, fakeStatus) + err = netutils.SetNetworkStatus(clientInfo.GetKubeClient(), pod, fakeStatus) Expect(err).NotTo(HaveOccurred()) }) @@ -1069,7 +1067,7 @@ users: // } // clientInfo := NewFakeClientInfo() - // _, err := (*clientInfo).AddPod(fakePod) + // _, err := clientInfo.AddPod(fakePod) // Expect(err).NotTo(HaveOccurred()) // _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) // Expect(err).NotTo(HaveOccurred()) @@ -1077,7 +1075,7 @@ users: // k8sArgs, err := GetK8sArgs(args) // Expect(err).NotTo(HaveOccurred()) - // pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + // pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) // Expect(err).NotTo(HaveOccurred()) // networkstatus := "test status" @@ -1101,7 +1099,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).AddPod(fakePod) + _, err := clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) @@ -1110,7 +1108,7 @@ users: k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) Expect(err).NotTo(HaveOccurred()) fakeStatus := []nettypes.NetworkStatus{ @@ -1127,7 +1125,7 @@ users: Mac: "ea:0e:fa:63:95:f9", }, } - err = netutils.SetNetworkStatus((*clientInfo).GetKubeClient(), pod, fakeStatus) + err = netutils.SetNetworkStatus(clientInfo.GetKubeClient(), pod, fakeStatus) Expect(err).NotTo(HaveOccurred()) }) @@ -1146,7 +1144,7 @@ users: // } // clientInfo := NewFakeClientInfo() - // _, err := (*clientInfo).AddPod(fakePod) + // _, err := clientInfo.AddPod(fakePod) // Expect(err).NotTo(HaveOccurred()) // _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) // Expect(err).NotTo(HaveOccurred()) @@ -1154,7 +1152,7 @@ users: // k8sArgs, err := GetK8sArgs(args) // Expect(err).NotTo(HaveOccurred()) - // pod, err := (*clientInfo).GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) + // pod, err := clientInfo.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) // Expect(err).NotTo(HaveOccurred()) // networkstatus := "test status" @@ -1211,7 +1209,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -1219,7 +1217,7 @@ users: k8sArgs, err := GetK8sArgs(args) Expect(err).NotTo(HaveOccurred()) - err = SetNetworkStatus(*clientInfo, k8sArgs, netstatus, netConf) + err = SetNetworkStatus(clientInfo, k8sArgs, netstatus, netConf) Expect(err).NotTo(HaveOccurred()) }) @@ -1293,7 +1291,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -1353,7 +1351,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) @@ -1412,7 +1410,7 @@ users: } clientInfo := NewFakeClientInfo() - _, err = (*clientInfo).AddPod(fakePod) + _, err = clientInfo.AddPod(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = AddNetAttachDef(clientInfo, testutils.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) diff --git a/multus/multus_test.go b/multus/multus_test.go index b0602867f..3fe8301ce 100644 --- a/multus/multus_test.go +++ b/multus/multus_test.go @@ -93,7 +93,7 @@ func (c *FakeKubeClient) AddPod(pod *v1.Pod) (*v1.Pod, error) { // GetPod gets pod from kubernetes func (c *FakeKubeClient) GetPod(namespace, name string) (*v1.Pod, error) { pod, _ := c.Client.Core().Pods(namespace).Get(name, metav1.GetOptions{}) - return pod, errors.NewServiceUnavailable("Testing purposes") + return pod, c.ErrorCode } // DeletePod deletes a pod from kubernetes @@ -245,14 +245,12 @@ func (f *fakeExec) FindInPath(plugin string, paths []string) (string, error) { } // NewFakeClientInfo returns fake client (just for testing) -func NewFakeClientInfo() *k8sclient.ClientInfo { - var resultKubeClient = &k8sclient.KubeClient{ +func NewFakeClientInfo() k8sclient.ClientInfo { + return &k8sclient.KubeClient{ Client: fake.NewSimpleClientset(), NetClient: netfake.NewSimpleClientset().K8sCniCncfIoV1(), EventRecorder: record.NewFakeRecorder(10), } - var result k8sclient.ClientInfo = resultKubeClient - return &result } func collectEvents(source <-chan string) []string { @@ -1450,7 +1448,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := clientInfo.GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = k8sclient.AddNetAttachDef(clientInfo, @@ -1459,7 +1457,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *clientInfo) + result, err := cmdAdd(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*current.Result) @@ -1528,7 +1526,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := clientInfo.GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = k8sclient.AddNetAttachDef(clientInfo, @@ -1544,14 +1542,14 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *clientInfo) + result, err := cmdAdd(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) // plugin 1 is the masterplugin Expect(reflect.DeepEqual(r, expectedResult1)).To(BeTrue()) - recorder := (*clientInfo).GetEventRecorder().(*record.FakeRecorder) + recorder := clientInfo.GetEventRecorder().(*record.FakeRecorder) events := collectEvents(recorder.Events) Expect(len(events)).To(Equal(3)) Expect(events[0]).To(Equal("Normal AddedInterface Add eth0 [1.1.1.2/24]")) @@ -1604,7 +1602,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := clientInfo.GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = k8sclient.AddNetAttachDef(clientInfo, @@ -1613,7 +1611,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *clientInfo) + result, err := cmdAdd(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1623,8 +1621,8 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - (*clientInfo).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, *clientInfo) + clientInfo.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + err = cmdDel(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1674,14 +1672,14 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1691,8 +1689,8 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, *fKubeClient) + fKubeClient.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1742,14 +1740,14 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1759,8 +1757,8 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, *fKubeClient) + fKubeClient.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1842,13 +1840,13 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { fExec.addPlugin020(nil, "eth0", net1, expectedResult1, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1856,7 +1854,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, *fKubeClient) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1911,13 +1909,13 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err = k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -1932,7 +1930,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { By("Delete and check net count is not incremented") os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, *fKubeClient) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -1987,13 +1985,13 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err = k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*types020.Result) @@ -2011,7 +2009,7 @@ var _ = Describe("multus operations cniVersion 0.2.0 config", func() { By("Delete and check pod/net count is incremented") os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, *fKubeClient) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -2689,7 +2687,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := clientInfo.GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = k8sclient.AddNetAttachDef(clientInfo, @@ -2698,7 +2696,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *clientInfo) + result, err := cmdAdd(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) r := result.(*current.Result) @@ -2771,7 +2769,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := clientInfo.GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = k8sclient.AddNetAttachDef(clientInfo, @@ -2787,7 +2785,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *clientInfo) + result, err := cmdAdd(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -2841,7 +2839,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) clientInfo := NewFakeClientInfo() - _, err := (*clientInfo).GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) + _, err := clientInfo.GetKubeClient().Core().Pods(fakePod.ObjectMeta.Namespace).Create(fakePod) Expect(err).NotTo(HaveOccurred()) _, err = k8sclient.AddNetAttachDef(clientInfo, @@ -2850,7 +2848,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *clientInfo) + result, err := cmdAdd(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -2859,8 +2857,8 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - (*clientInfo).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, *clientInfo) + clientInfo.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + err = cmdDel(args, fExec, clientInfo) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -2912,14 +2910,14 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -2928,8 +2926,8 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, *fKubeClient) + fKubeClient.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -2981,14 +2979,14 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -2997,8 +2995,8 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") // set fKubeClient to nil to emulate no pod info - (*fKubeClient).DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) - err = cmdDel(args, fExec, *fKubeClient) + fKubeClient.DeletePod(fakePod.ObjectMeta.Namespace, fakePod.ObjectMeta.Name) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -3081,20 +3079,20 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { fExec.addPlugin(nil, "eth0", net1, expectedResult1, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err := k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef("kube-system", "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) Expect(reflect.DeepEqual(result, expectedResult1)).To(BeTrue()) os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, *fKubeClient) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -3151,13 +3149,13 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err = k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -3171,7 +3169,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { By("Delete and check net count is not incremented") os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, *fKubeClient) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) }) @@ -3228,13 +3226,13 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { }, nil) fKubeClient := NewFakeClientInfo() - (*fKubeClient).AddPod(fakePod) + fKubeClient.AddPod(fakePod) _, err = k8sclient.AddNetAttachDef(fKubeClient, testhelpers.NewFakeNetAttachDef(fakePod.ObjectMeta.Namespace, "net1", net1)) Expect(err).NotTo(HaveOccurred()) os.Setenv("CNI_COMMAND", "ADD") os.Setenv("CNI_IFNAME", "eth0") - result, err := cmdAdd(args, fExec, *fKubeClient) + result, err := cmdAdd(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.addIndex).To(Equal(len(fExec.plugins))) // plugin 1 is the masterplugin @@ -3251,7 +3249,7 @@ var _ = Describe("multus operations cniVersion 0.4.0 config", func() { By("Delete and check pod/net count is incremented") os.Setenv("CNI_COMMAND", "DEL") os.Setenv("CNI_IFNAME", "eth0") - err = cmdDel(args, fExec, *fKubeClient) + err = cmdDel(args, fExec, fKubeClient) Expect(err).NotTo(HaveOccurred()) Expect(fExec.delIndex).To(Equal(len(fExec.plugins))) })