diff --git a/checkpoint/checkpoint.go b/checkpoint/checkpoint.go index 5fbdea5d4..c9dce0fbf 100644 --- a/checkpoint/checkpoint.go +++ b/checkpoint/checkpoint.go @@ -64,7 +64,7 @@ func getCheckpoint(filePath string) (types.ResourceClient, error) { if err != nil { return nil, err } - logging.Debugf("getCheckpoint(): created checkpoint instance with file: %s", filePath) + logging.Debugf("getCheckpoint: created checkpoint instance with file: %s", filePath) return cp, nil } @@ -74,15 +74,15 @@ func (cp *checkpoint) getPodEntries() error { cpd := &checkpointFileData{} rawBytes, err := ioutil.ReadFile(cp.fileName) if err != nil { - return logging.Errorf("getPodEntries(): error reading file %s\n%v\n", checkPointfile, err) + return logging.Errorf("getPodEntries: error reading file %s\n%v\n", checkPointfile, err) } if err = json.Unmarshal(rawBytes, cpd); err != nil { - return logging.Errorf("getPodEntries(): error unmarshalling raw bytes %v", err) + return logging.Errorf("getPodEntries: error unmarshalling raw bytes %v", err) } cp.podEntires = cpd.Data.PodDeviceEntries - logging.Debugf("getPodEntries(): podEntires %+v", cp.podEntires) + logging.Debugf("getPodEntries: podEntires %+v", cp.podEntires) return nil } @@ -92,7 +92,7 @@ func (cp *checkpoint) GetPodResourceMap(pod *v1.Pod) (map[string]*types.Resource resourceMap := make(map[string]*types.ResourceInfo) if podID == "" { - return nil, logging.Errorf("GetPodResourceMap(): invalid Pod cannot be empty") + return nil, logging.Errorf("GetPodResourceMap: invalid Pod cannot be empty") } for _, pod := range cp.podEntires { if pod.PodUID == podID { diff --git a/k8sclient/k8sclient.go b/k8sclient/k8sclient.go index 4d219498d..4f48e4415 100644 --- a/k8sclient/k8sclient.go +++ b/k8sclient/k8sclient.go @@ -93,7 +93,7 @@ func SetNetworkStatus(client KubeClient, k8sArgs *types.K8sArgs, netStatus []*ty if client == nil { if len(conf.Delegates) == 0 { // No available kube client and no delegates, we can't do anything - return logging.Errorf("must have either Kubernetes config or delegates, refer to Multus documentation for usage instructions") + return logging.Errorf("SetNetworkStatus: must have either Kubernetes config or delegates") } logging.Debugf("SetNetworkStatus: kube client info is not defined, skip network status setup") return nil @@ -150,7 +150,7 @@ func setPodNetworkAnnotation(client KubeClient, namespace string, pod *v1.Pod, n pod, err = client.UpdatePodStatus(pod) return err }); resultErr != nil { - return nil, logging.Errorf("status update failed for pod %s/%s: %v", pod.Namespace, pod.Name, resultErr) + return nil, logging.Errorf("setPodNetworkAnnotation: status update failed for pod %s/%s: %v", pod.Namespace, pod.Name, resultErr) } return pod, nil } @@ -168,7 +168,7 @@ func parsePodNetworkObjectName(podnetwork string) (string, string, string, error } else if len(slashItems) == 1 { networkName = slashItems[0] } else { - return "", "", "", logging.Errorf("Invalid network object (failed at '/')") + return "", "", "", logging.Errorf("parsePodNetworkObjectName: Invalid network object (failed at '/')") } atItems := strings.Split(networkName, "@") @@ -176,7 +176,7 @@ func parsePodNetworkObjectName(podnetwork string) (string, string, string, error if len(atItems) == 2 { netIfName = strings.TrimSpace(atItems[1]) } else if len(atItems) != 1 { - return "", "", "", logging.Errorf("Invalid network object (failed at '@')") + return "", "", "", logging.Errorf("parsePodNetworkObjectName: Invalid network object (failed at '@')") } // Check and see if each item matches the specification for valid attachment name. @@ -188,7 +188,7 @@ func parsePodNetworkObjectName(podnetwork string) (string, string, string, error for i := range allItems { matched, _ := regexp.MatchString("^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", allItems[i]) if !matched && len([]rune(allItems[i])) > 0 { - return "", "", "", logging.Errorf(fmt.Sprintf("Failed to parse: one or more items did not match comma-delimited format (must consist of lower case alphanumeric characters). Must start and end with an alphanumeric character), mismatch @ '%v'", allItems[i])) + return "", "", "", logging.Errorf(fmt.Sprintf("parsePodNetworkObjectName: Failed to parse: one or more items did not match comma-delimited format (must consist of lower case alphanumeric characters). Must start and end with an alphanumeric character), mismatch @ '%v'", allItems[i])) } } @@ -201,7 +201,7 @@ func parsePodNetworkAnnotation(podNetworks, defaultNamespace string) ([]*types.N logging.Debugf("parsePodNetworkAnnotation: %s, %s", podNetworks, defaultNamespace) if podNetworks == "" { - return nil, logging.Errorf("parsePodNetworkAnnotation: pod annotation not having \"network\" as key, refer Multus README.md for the usage guide") + return nil, logging.Errorf("parsePodNetworkAnnotation: pod annotation does not have \"network\" as key") } if strings.IndexAny(podNetworks, "[{\"") >= 0 { @@ -253,9 +253,9 @@ func getCNIConfigFromFile(name string, confdir string) ([]byte, error) { files, err := libcni.ConfFiles(confdir, []string{".conf", ".json", ".conflist"}) switch { case err != nil: - return nil, logging.Errorf("No networks found in %s", confdir) + return nil, logging.Errorf("getCNIConfigFromFile: no networks found in %s", confdir) case len(files) == 0: - return nil, logging.Errorf("No networks found in %s", confdir) + return nil, logging.Errorf("getCNIConfigFromFile: no networks found in %s", confdir) } for _, confFile := range files { @@ -263,7 +263,7 @@ func getCNIConfigFromFile(name string, confdir string) ([]byte, error) { if strings.HasSuffix(confFile, ".conflist") { confList, err = libcni.ConfListFromFile(confFile) if err != nil { - return nil, logging.Errorf("Error loading CNI conflist file %s: %v", confFile, err) + return nil, logging.Errorf("getCNIConfigFromFile: error loading CNI conflist file %s: %v", confFile, err) } if confList.Name == name || name == "" { @@ -273,21 +273,21 @@ func getCNIConfigFromFile(name string, confdir string) ([]byte, error) { } else { conf, err := libcni.ConfFromFile(confFile) if err != nil { - return nil, logging.Errorf("Error loading CNI config file %s: %v", confFile, err) + return nil, logging.Errorf("getCNIConfigFromFile: error loading CNI config file %s: %v", confFile, err) } if conf.Network.Name == name || name == "" { // Ensure the config has a "type" so we know what plugin to run. // Also catches the case where somebody put a conflist into a conf file. if conf.Network.Type == "" { - return nil, logging.Errorf("Error loading CNI config file %s: no 'type'; perhaps this is a .conflist?", confFile) + return nil, logging.Errorf("getCNIConfigFromFile: error loading CNI config file %s: does not have a 'type' key; perhaps this is a .conflist?", confFile) } return conf.Bytes, nil } } } - return nil, logging.Errorf("no network available in the name %s in cni dir %s", name, confdir) + return nil, logging.Errorf("getCNIConfigFromFile: no network available with the name %s in cni dir %s", name, confdir) } // getCNIConfigFromSpec reads a CNI JSON configuration from the NetworkAttachmentDefinition @@ -327,7 +327,7 @@ func cniConfigFromNetworkResource(customResource *types.NetworkAttachmentDefinit // name as the custom resource config, err = getCNIConfigFromFile(customResource.Metadata.Name, confdir) if err != nil { - return nil, logging.Errorf("cniConfigFromNetworkResource: err in getCNIConfigFromFile: %v", err) + return nil, logging.Errorf("cniConfigFromNetworkResource: %v", err) } } else { // Config contains a standard JSON-encoded CNI configuration @@ -335,7 +335,7 @@ func cniConfigFromNetworkResource(customResource *types.NetworkAttachmentDefinit // execute. config, err = getCNIConfigFromSpec(customResource.Spec.Config, customResource.Metadata.Name) if err != nil { - return nil, logging.Errorf("cniConfigFromNetworkResource: err in getCNIConfigFromSpec: %v", err) + return nil, logging.Errorf("cniConfigFromNetworkResource: %v", err) } } @@ -348,12 +348,12 @@ func getKubernetesDelegate(client KubeClient, net *types.NetworkSelectionElement rawPath := fmt.Sprintf("/apis/k8s.cni.cncf.io/v1/namespaces/%s/network-attachment-definitions/%s", net.Namespace, net.Name) netData, err := client.GetRawWithPath(rawPath) if err != nil { - return nil, resourceMap, logging.Errorf("getKubernetesDelegate: failed to get network resource, refer Multus README.md for the usage guide: %v", err) + return nil, resourceMap, logging.Errorf("getKubernetesDelegate: cannot find get a network-attachment-definition (%s) in namespace (%s): %v", net.Name, net.Namespace, err) } customResource := &types.NetworkAttachmentDefinition{} if err := json.Unmarshal(netData, customResource); err != nil { - return nil, resourceMap, logging.Errorf("getKubernetesDelegate: failed to get the netplugin data: %v", err) + return nil, resourceMap, logging.Errorf("getKubernetesDelegate: failed to parse the network-attachment-definition: %v", err) } // Get resourceName annotation from NetworkAttachmentDefinition @@ -372,7 +372,7 @@ func getKubernetesDelegate(client KubeClient, net *types.NetworkSelectionElement if err != nil { return nil, resourceMap, logging.Errorf("getKubernetesDelegate: failed to get resourceMap from ResourceClient: %v", err) } - logging.Debugf("getKubernetesDelegate(): resourceMap instance: %+v", resourceMap) + logging.Debugf("getKubernetesDelegate: resourceMap instance: %+v", resourceMap) } entry, ok := resourceMap[resourceName] @@ -433,7 +433,7 @@ func TryLoadPodDelegates(k8sArgs *types.K8sArgs, conf *types.NetConf, kubeClient if kubeClient == nil { if len(conf.Delegates) == 0 { // No available kube client and no delegates, we can't do anything - return 0, nil, logging.Errorf("must have either Kubernetes config or delegates, refer Multus README.md for the usage guide") + return 0, nil, logging.Errorf("TryLoadPodDelegates: must have either Kubernetes config or delegates") } return 0, nil, nil } @@ -442,16 +442,16 @@ func TryLoadPodDelegates(k8sArgs *types.K8sArgs, conf *types.NetConf, kubeClient // Get the pod info. If cannot get it, we use cached delegates pod, err := kubeClient.GetPod(string(k8sArgs.K8S_POD_NAMESPACE), string(k8sArgs.K8S_POD_NAME)) if err != nil { - logging.Debugf("tryLoadK8sDelegates: Err in loading K8s cluster default network from pod annotation: %v, use cached delegates", err) + logging.Debugf("TryLoadPodDelegates: Err in loading K8s cluster default network from pod annotation: %v, use cached delegates", err) return 0, nil, nil } delegate, err := tryLoadK8sPodDefaultNetwork(kubeClient, pod, conf) if err != nil { - return 0, nil, logging.Errorf("tryLoadK8sDelegates: Err in loading K8s cluster default network from pod annotation: %v", err) + return 0, nil, logging.Errorf("TryLoadPodDelegates: error in loading K8s cluster default network from pod annotation: %v", err) } if delegate != nil { - logging.Debugf("tryLoadK8sDelegates: Overwrite the cluster default network with %v from pod annotations", delegate) + logging.Debugf("TryLoadPodDelegates: Overwrite the cluster default network with %v from pod annotations", delegate) conf.Delegates[0] = delegate } @@ -464,7 +464,7 @@ func TryLoadPodDelegates(k8sArgs *types.K8sArgs, conf *types.NetConf, kubeClient if _, ok := err.(*NoK8sNetworkError); ok { return 0, clientInfo, nil } - return 0, nil, logging.Errorf("Multus: Err in getting k8s network from pod: %v", err) + return 0, nil, logging.Errorf("TryLoadPodDelegates: error in getting k8s network from pod: %v", err) } if err = conf.AddDelegates(delegates); err != nil { @@ -492,13 +492,13 @@ func GetK8sClient(kubeconfig string, kubeClient KubeClient) (KubeClient, error) // uses the current context in kubeconfig config, err = clientcmd.BuildConfigFromFlags("", kubeconfig) if err != nil { - return nil, logging.Errorf("GetK8sClient: failed to get context for the kubeconfig %v, refer Multus README.md for the usage guide: %v", kubeconfig, err) + return nil, logging.Errorf("GetK8sClient: failed to get context for the kubeconfig %v: %v", kubeconfig, err) } } else if os.Getenv("KUBERNETES_SERVICE_HOST") != "" && os.Getenv("KUBERNETES_SERVICE_PORT") != "" { // Try in-cluster config where multus might be running in a kubernetes pod config, err = rest.InClusterConfig() if err != nil { - return nil, logging.Errorf("createK8sClient: failed to get context for in-cluster kube config, refer Multus README.md for the usage guide: %v", err) + return nil, logging.Errorf("GetK8sClient: failed to get context for in-cluster kube config: %v", err) } } else { // No kubernetes config; assume we shouldn't talk to Kube at all @@ -553,13 +553,13 @@ func GetNetworkDelegates(k8sclient KubeClient, pod *v1.Pod, networks []*types.Ne // In the case that this is a mismatch when namespaceisolation is enabled, this should be an error. if confnamespaceIsolation { if defaultNamespace != net.Namespace { - return nil, logging.Errorf("GetPodNetwork: namespace isolation violation: podnamespace: %v / target namespace: %v", defaultNamespace, net.Namespace) + return nil, logging.Errorf("GetNetworkDelegates: namespace isolation enabled, annotation violates permission, pod is in namespace %v but refers to target namespace %v", defaultNamespace, net.Namespace) } } delegate, updatedResourceMap, err := getKubernetesDelegate(k8sclient, net, confdir, pod, resourceMap) if err != nil { - return nil, logging.Errorf("GetPodNetwork: failed getting the delegate: %v", err) + return nil, logging.Errorf("GetNetworkDelegates: failed getting the delegate: %v", err) } delegates = append(delegates, delegate) resourceMap = updatedResourceMap @@ -573,7 +573,7 @@ func getDefaultNetDelegateCRD(client KubeClient, net, confdir, namespace string) rawPath := fmt.Sprintf("/apis/k8s.cni.cncf.io/v1/namespaces/%s/network-attachment-definitions/%s", namespace, net) netData, err := client.GetRawWithPath(rawPath) if err != nil { - return nil, logging.Errorf("getDefaultNetDelegateCRD: failed to get network resource, refer Multus README.md for the usage guide: %v", err) + return nil, logging.Errorf("getDefaultNetDelegateCRD: failed to get network resource: %v", err) } customResource := &types.NetworkAttachmentDefinition{} @@ -650,7 +650,7 @@ func GetDefaultNetworks(k8sArgs *types.K8sArgs, conf *types.NetConf, kubeClient if kubeClient == nil { if len(conf.Delegates) == 0 { // No available kube client and no delegates, we can't do anything - return logging.Errorf("must have either Kubernetes config or delegates, refer Multus README.md for the usage guide") + return logging.Errorf("GetDefaultNetworks: must have either Kubernetes config or delegates") } return nil } diff --git a/k8sclient/k8sclient_test.go b/k8sclient/k8sclient_test.go index 834c2525c..5a200844a 100644 --- a/k8sclient/k8sclient_test.go +++ b/k8sclient/k8sclient_test.go @@ -125,7 +125,7 @@ var _ = Describe("k8sclient operations", func() { Expect(err).NotTo(HaveOccurred()) delegates, err := GetNetworkDelegates(kubeClient, pod, networks, tmpDir, false) Expect(len(delegates)).To(Equal(0)) - Expect(err).To(MatchError("GetPodNetwork: failed getting the delegate: getKubernetesDelegate: failed to get network resource, refer Multus README.md for the usage guide: resource not found")) + Expect(err).To(MatchError("GetNetworkDelegates: failed getting the delegate: getKubernetesDelegate: cannot find get a network-attachment-definition (net1) in namespace (test): resource not found")) }) It("retrieves delegates from kubernetes using JSON format annotation", func() { @@ -296,7 +296,7 @@ var _ = Describe("k8sclient operations", func() { Expect(err).NotTo(HaveOccurred()) delegates, err := GetNetworkDelegates(kubeClient, pod, networks, tmpDir, false) Expect(len(delegates)).To(Equal(0)) - Expect(err).To(MatchError(fmt.Sprintf("GetPodNetwork: failed getting the delegate: cniConfigFromNetworkResource: err in getCNIConfigFromFile: Error loading CNI config file %s: error parsing configuration: invalid character 'a' looking for beginning of value", net2Name))) + Expect(err).To(MatchError(fmt.Sprintf("GetNetworkDelegates: failed getting the delegate: cniConfigFromNetworkResource: getCNIConfigFromFile: error loading CNI config file %s: error parsing configuration: invalid character 'a' looking for beginning of value", net2Name))) }) It("retrieves cluster network from CRD", func() { @@ -672,7 +672,11 @@ var _ = Describe("k8sclient operations", func() { }) It("uses cached delegates when an error in loading from pod annotation occurs", func() { - kubeletconf, err := os.Create("/etc/kubernetes/kubelet.conf") + dir, err := ioutil.TempDir("", "multus-test") + Expect(err).NotTo(HaveOccurred()) + defer os.RemoveAll(dir) // clean up + + kubeletconf, err := os.Create(fmt.Sprintf("%s/kubelet.conf", dir)) kubeletconfDef := `apiVersion: v1 clusters: - cluster: @@ -695,15 +699,15 @@ users: kubeletconf.Write([]byte(kubeletconfDef)) fakePod := testutils.NewFakePod("testpod", "", "net1") - conf := `{ + conf := fmt.Sprintf(`{ "name":"node-cni-network", "type":"multus", - "kubeconfig":"/etc/kubernetes/kubelet.conf", + "kubeconfig":"%s/kubelet.conf", "delegates": [{ "type": "mynet2", "name": "net2" }] - }` + }`, dir) netConf, err := types.LoadNetConf([]byte(conf)) Expect(netConf.Delegates[0].Conf.Name).To(Equal("net2")) Expect(netConf.Delegates[0].Conf.Type).To(Equal("mynet2")) @@ -766,7 +770,7 @@ users: Expect(err).NotTo(HaveOccurred()) _, err = GetNetworkDelegates(kubeClient, pod, networks, tmpDir, netConf.NamespaceIsolation) Expect(err).To(HaveOccurred()) - Expect(err).To(MatchError("GetPodNetwork: namespace isolation violation: podnamespace: test / target namespace: kube-system")) + Expect(err).To(MatchError("GetNetworkDelegates: namespace isolation enabled, annotation violates permission, pod is in namespace test but refers to target namespace kube-system")) }) diff --git a/kubeletclient/kubeletclient.go b/kubeletclient/kubeletclient.go index 0585150ba..d39c8d733 100644 --- a/kubeletclient/kubeletclient.go +++ b/kubeletclient/kubeletclient.go @@ -30,11 +30,11 @@ func GetResourceClient() (types.ResourceClient, error) { // If Kubelet resource API endpoint exist use that by default // Or else fallback with checkpoint file if hasKubeletAPIEndpoint() { - logging.Verbosef("GetResourceClient(): using Kubelet resource API endpoint") + logging.Debugf("GetResourceClient: using Kubelet resource API endpoint") return getKubeletClient() } - logging.Verbosef("GetResourceClient(): using Kubelet device plugin checkpoint") + logging.Debugf("GetResourceClient: using Kubelet device plugin checkpoint") return checkpoint.GetCheckpoint() } @@ -46,12 +46,12 @@ func getKubeletClient() (types.ResourceClient, error) { client, conn, err := podresources.GetClient(kubeletSocket, 10*time.Second, defaultPodResourcesMaxSize) if err != nil { - return nil, logging.Errorf("GetResourceClient(): error getting grpc client: %v\n", err) + return nil, logging.Errorf("getKubeletClient: error getting grpc client: %v\n", err) } defer conn.Close() if err := newClient.getPodResources(client); err != nil { - return nil, logging.Errorf("GetResourceClient(): error getting resource client: %v\n", err) + return nil, logging.Errorf("getKubeletClient: error ge tting pod resources from client: %v\n", err) } return newClient, nil @@ -68,7 +68,7 @@ func (rc *kubeletClient) getPodResources(client podresourcesapi.PodResourcesList resp, err := client.List(ctx, &podresourcesapi.ListPodResourcesRequest{}) if err != nil { - return logging.Errorf("getPodResources(): %v.Get(_) = _, %v", client, err) + return logging.Errorf("getPodResources: failed to list pod resources, %v.Get(_) = _, %v", client, err) } rc.resources = resp.PodResources @@ -83,7 +83,7 @@ func (rc *kubeletClient) GetPodResourceMap(pod *v1.Pod) (map[string]*types.Resou ns := pod.Namespace if name == "" || ns == "" { - return nil, logging.Errorf("GetPodResourcesMap(): Pod name or namespace cannot be empty") + return nil, logging.Errorf("GetPodResourcesMap: Pod name or namespace cannot be empty") } for _, pr := range rc.resources { @@ -106,7 +106,7 @@ func hasKubeletAPIEndpoint() bool { // Check for kubelet resource API socket file kubeletAPISocket := filepath.Join(defaultPodResourcesPath, defaultKubeletSocketFile) if _, err := os.Stat(kubeletAPISocket); err != nil { - logging.Verbosef("hasKubeletAPIEndpoint(): error looking up kubelet resource api socket file: %q", err) + logging.Debugf("hasKubeletAPIEndpoint: error looking up kubelet resource api socket file: %q", err) return false } return true diff --git a/multus/multus.go b/multus/multus.go index 6ea21d787..873231543 100644 --- a/multus/multus.go +++ b/multus/multus.go @@ -62,14 +62,14 @@ func printVersionString() string { func saveScratchNetConf(containerID, dataDir string, netconf []byte) error { logging.Debugf("saveScratchNetConf: %s, %s, %s", containerID, dataDir, string(netconf)) if err := os.MkdirAll(dataDir, 0700); err != nil { - return logging.Errorf("failed to create the multus data directory(%q): %v", dataDir, err) + return logging.Errorf("saveScratchNetConf: failed to create the multus data directory(%q): %v", dataDir, err) } path := filepath.Join(dataDir, containerID) err := ioutil.WriteFile(path, netconf, 0600) if err != nil { - return logging.Errorf("failed to write container data in the path(%q): %v", path, err) + return logging.Errorf("saveScratchNetConf: failed to write container data in the path(%q): %v", path, err) } return err @@ -102,11 +102,11 @@ func saveDelegates(containerID, dataDir string, delegates []*types.DelegateNetCo logging.Debugf("saveDelegates: %s, %s, %v", containerID, dataDir, delegates) delegatesBytes, err := json.Marshal(delegates) if err != nil { - return logging.Errorf("error serializing delegate netconf: %v", err) + return logging.Errorf("saveDelegates: error serializing delegate netconf: %v", err) } if err = saveScratchNetConf(containerID, dataDir, delegatesBytes); err != nil { - return logging.Errorf("error in saving the delegates : %v", err) + return logging.Errorf("saveDelegates: error in saving the delegates : %v", err) } return err @@ -117,7 +117,7 @@ func deleteDelegates(containerID, dataDir string) error { path := filepath.Join(dataDir, containerID) if err := os.Remove(path); err != nil { - return logging.Errorf("error in deleting the delegates : %v", err) + return logging.Errorf("deleteDelegates: error in deleting the delegates : %v", err) } return nil @@ -127,7 +127,7 @@ func validateIfName(nsname string, ifname string) error { logging.Debugf("validateIfName: %s, %s", nsname, ifname) podNs, err := ns.GetNS(nsname) if err != nil { - return logging.Errorf("no netns: %v", err) + return logging.Errorf("validateIfName: no net namespace %s found: %v", nsname, err) } err = podNs.Do(func(_ ns.NetNS) error { @@ -138,7 +138,7 @@ func validateIfName(nsname string, ifname string) error { } return err } - return logging.Errorf("ifname %s is already exist", ifname) + return logging.Errorf("validateIfName: interface name %s already exists", ifname) }) return err @@ -153,12 +153,12 @@ func conflistAdd(rt *libcni.RuntimeConf, rawnetconflist []byte, binDir string, e confList, err := libcni.ConfListFromBytes(rawnetconflist) if err != nil { - return nil, logging.Errorf("error in converting the raw bytes to conflist: %v", err) + return nil, logging.Errorf("conflistAdd: error converting the raw bytes into a conflist: %v", err) } result, err := cniNet.AddNetworkList(context.Background(), confList, rt) if err != nil { - return nil, logging.Errorf("error in getting result from AddNetworkList: %v", err) + return nil, logging.Errorf("conflistAdd: error in getting result from AddNetworkList: %v", err) } return result, nil @@ -173,12 +173,12 @@ func conflistDel(rt *libcni.RuntimeConf, rawnetconflist []byte, binDir string, e confList, err := libcni.ConfListFromBytes(rawnetconflist) if err != nil { - return logging.Errorf("error in converting the raw bytes to conflist: %v", err) + return logging.Errorf("conflistDel: error converting the raw bytes into a conflist: %v", err) } err = cniNet.DelNetworkList(context.Background(), confList, rt) if err != nil { - return logging.Errorf("error in getting result from DelNetworkList: %v", err) + return logging.Errorf("conflistDel: error in getting result from DelNetworkList: %v", err) } return err @@ -187,11 +187,11 @@ func conflistDel(rt *libcni.RuntimeConf, rawnetconflist []byte, binDir string, e func delegateAdd(exec invoke.Exec, 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("Multus: error in setting CNI_IFNAME") + return nil, logging.Errorf("delegateAdd: error setting envionment variable CNI_IFNAME") } if err := validateIfName(os.Getenv("CNI_NETNS"), ifName); err != nil { - return nil, logging.Errorf("cannot set %q ifname to %q: %v", delegate.Conf.Type, ifName, err) + return nil, logging.Errorf("delegateAdd: cannot set %q interface name to %q: %v", delegate.Conf.Type, ifName, err) } if delegate.MacRequest != "" || delegate.IPRequest != "" { @@ -204,11 +204,11 @@ func delegateAdd(exec invoke.Exec, ifName string, delegate *types.DelegateNetCon // validate Mac address _, err := net.ParseMAC(delegate.MacRequest) if err != nil { - return nil, logging.Errorf("failed to parse mac address %q", delegate.MacRequest) + return nil, logging.Errorf("delegateAdd: failed to parse mac address %q", delegate.MacRequest) } cniArgs = fmt.Sprintf("%s;MAC=%s", cniArgs, delegate.MacRequest) - logging.Debugf("Set MAC address %q to %q", delegate.MacRequest, ifName) + logging.Debugf("delegateAdd: set MAC address %q to %q", delegate.MacRequest, ifName) } if delegate.IPRequest != "" { @@ -216,17 +216,17 @@ func delegateAdd(exec invoke.Exec, ifName string, delegate *types.DelegateNetCon if strings.Contains(delegate.IPRequest, "/") { _, _, err := net.ParseCIDR(delegate.IPRequest) if err != nil { - return nil, logging.Errorf("failed to parse CIDR %q", delegate.MacRequest) + return nil, logging.Errorf("delegateAdd: failed to parse CIDR %q", delegate.MacRequest) } } else if net.ParseIP(delegate.IPRequest) == nil { - return nil, logging.Errorf("failed to parse IP address %q", delegate.IPRequest) + return nil, logging.Errorf("delegateAdd: failed to parse IP address %q", delegate.IPRequest) } cniArgs = fmt.Sprintf("%s;IP=%s", cniArgs, delegate.IPRequest) - logging.Debugf("Set IP address %q to %q", delegate.IPRequest, ifName) + logging.Debugf("delegateAdd: set IP address %q to %q", delegate.IPRequest, ifName) } if os.Setenv("CNI_ARGS", cniArgs) != nil { - return nil, logging.Errorf("cannot set %q mac to %q and ip to %q", delegate.Conf.Type, delegate.MacRequest, delegate.IPRequest) + return nil, logging.Errorf("delegateAdd: cannot set %q mac to %q and ip to %q", delegate.Conf.Type, delegate.MacRequest, delegate.IPRequest) } } @@ -235,7 +235,7 @@ func delegateAdd(exec invoke.Exec, ifName string, delegate *types.DelegateNetCon if delegate.ConfListPlugin { result, err = conflistAdd(rt, delegate.Bytes, binDir, exec) if err != nil { - return nil, logging.Errorf("Multus: error in invoke Conflist add - %q: %v", delegate.ConfList.Name, err) + return nil, logging.Errorf("delegateAdd: error invoking conflistAdd - %q: %v", delegate.ConfList.Name, err) } } else { origpath := os.Getenv("CNI_PATH") @@ -243,7 +243,7 @@ func delegateAdd(exec invoke.Exec, ifName string, delegate *types.DelegateNetCon result, err = invoke.DelegateAdd(context.Background(), delegate.Conf.Type, delegate.Bytes, exec) os.Setenv("CNI_PATH", origpath) if err != nil { - return nil, logging.Errorf("Multus: error in invoke Delegate add - %q: %v", delegate.Conf.Type, err) + return nil, logging.Errorf("delegateAdd: error invoking DelegateAdd - %q: %v", delegate.Conf.Type, err) } } @@ -265,7 +265,7 @@ func delegateAdd(exec invoke.Exec, ifName string, delegate *types.DelegateNetCon func delegateDel(exec invoke.Exec, ifName string, delegateConf *types.DelegateNetConf, rt *libcni.RuntimeConf, binDir string) error { logging.Debugf("delegateDel: %v, %s, %v, %v, %s", exec, ifName, delegateConf, rt, binDir) if os.Setenv("CNI_IFNAME", ifName) != nil { - return logging.Errorf("Multus: error in setting CNI_IFNAME") + return logging.Errorf("delegateDel: error setting envionment variable CNI_IFNAME") } if logging.GetLoggingLevel() >= logging.VerboseLevel { @@ -282,14 +282,14 @@ func delegateDel(exec invoke.Exec, ifName string, delegateConf *types.DelegateNe if delegateConf.ConfListPlugin { err = conflistDel(rt, delegateConf.Bytes, binDir, exec) if err != nil { - return logging.Errorf("Multus: error in invoke Conflist Del - %q: %v", delegateConf.ConfList.Name, err) + return logging.Errorf("delegateDel: error invoking ConflistDel - %q: %v", delegateConf.ConfList.Name, err) } } else { origpath := os.Getenv("CNI_PATH") os.Setenv("CNI_PATH", origpath+":"+binDir) if err = invoke.DelegateDel(context.Background(), delegateConf.Conf.Type, delegateConf.Bytes, exec); err != nil { os.Setenv("CNI_PATH", origpath) - return logging.Errorf("Multus: error in invoke Delegate del - %q: %v", delegateConf.Conf.Type, err) + return logging.Errorf("delegateDel: error invoking DelegateDel - %q: %v", delegateConf.Conf.Type, err) } os.Setenv("CNI_PATH", origpath) } @@ -300,7 +300,7 @@ func delegateDel(exec invoke.Exec, ifName string, delegateConf *types.DelegateNe func delPlugins(exec invoke.Exec, argIfname string, delegates []*types.DelegateNetConf, lastIdx int, rt *libcni.RuntimeConf, binDir string) error { logging.Debugf("delPlugins: %v, %s, %v, %d, %v, %s", exec, argIfname, delegates, lastIdx, rt, binDir) if os.Setenv("CNI_COMMAND", "DEL") != nil { - return logging.Errorf("Multus: error in setting CNI_COMMAND to DEL") + return logging.Errorf("delPlugins: error setting envionment variable CNI_COMMAND to a value of DEL") } var errorstrings []string @@ -325,12 +325,12 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) (cn n, err := types.LoadNetConf(args.StdinData) logging.Debugf("cmdAdd: %v, %v, %v", args, exec, kubeClient) if err != nil { - return nil, logging.Errorf("err in loading netconf: %v", err) + return nil, logging.Errorf("Multus: error loading netconf: %v", err) } k8sArgs, err := k8s.GetK8sArgs(args) if err != nil { - return nil, logging.Errorf("Multus: Err in getting k8s args: %v", err) + return nil, logging.Errorf("Multus: error getting k8s args: %v", err) } wait.ExponentialBackoff(defaultReadinessBackoff, func() (bool, error) { @@ -346,7 +346,7 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) (cn if n.ClusterNetwork != "" { err = k8s.GetDefaultNetworks(k8sArgs, n, kubeClient) if err != nil { - return nil, logging.Errorf("Multus: Failed to get clusterNetwork/defaultNetworks: %v", err) + return nil, logging.Errorf("Multus: failed to get clusterNetwork/defaultNetworks: %v", err) } // First delegate is always the master plugin n.Delegates[0].MasterPlugin = true @@ -354,12 +354,12 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) (cn _, kc, err := k8s.TryLoadPodDelegates(k8sArgs, n, kubeClient) if err != nil { - return nil, logging.Errorf("Multus: Err in loading K8s Delegates k8s args: %v", err) + return nil, logging.Errorf("Multus: error loading k8s delegates k8s args: %v", err) } // cache the multus config if err := saveDelegates(args.ContainerID, n.CNIDir, n.Delegates); err != nil { - return nil, logging.Errorf("Multus: Err in saving the delegates: %v", err) + return nil, logging.Errorf("Multus: error saving the delegates: %v", err) } var result, tmpResult cnitypes.Result @@ -377,7 +377,7 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) (cn } // Ignore errors; DEL must be idempotent anyway _ = delPlugins(exec, args.IfName, n.Delegates, idx, rt, n.BinDir) - return nil, logging.Errorf("Multus: Err adding pod to network %q: %v", netName, err) + return nil, logging.Errorf("Multus: error adding pod to network %q: %v", netName, err) } // Master plugin result is always used if present @@ -390,7 +390,7 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) (cn if !types.CheckSystemNamespaces(kc.Podnamespace, n.SystemNamespaces) { delegateNetStatus, err := types.LoadNetworkStatus(tmpResult, delegate.Conf.Name, delegate.MasterPlugin) if err != nil { - return nil, logging.Errorf("Multus: Err in setting network status: %v", err) + return nil, logging.Errorf("Multus: error setting network status: %v", err) } netStatus = append(netStatus, delegateNetStatus) @@ -403,7 +403,7 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) (cn if !types.CheckSystemNamespaces(kc.Podnamespace, n.SystemNamespaces) { err = k8s.SetNetworkStatus(kubeClient, k8sArgs, netStatus, n) if err != nil { - return nil, logging.Errorf("Multus: Err set the networks status: %v", err) + return nil, logging.Errorf("Multus: error setting the networks status: %v", err) } } } @@ -441,7 +441,7 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err netnsfound = false logging.Debugf("cmdDel: WARNING netns may not exist, netns: %s, err: %s", args.Netns, err) } else { - return fmt.Errorf("failed to open netns %q: %v", netns, err) + return logging.Errorf("Multus: failed to open netns %q: %v", netns, err) } } @@ -451,7 +451,7 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err k8sArgs, err := k8s.GetK8sArgs(args) if err != nil { - return logging.Errorf("Multus: Err in getting k8s args: %v", err) + return logging.Errorf("Multus: error getting k8s args: %v", err) } // Read the cache to get delegates json for the pod @@ -462,7 +462,7 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err if in.ClusterNetwork != "" { err = k8s.GetDefaultNetworks(k8sArgs, in, kubeClient) if err != nil { - return logging.Errorf("Multus: Failed to get clusterNetwork/defaultNetworks: %v", err) + return logging.Errorf("Multus: failed to get clusterNetwork/defaultNetworks: %v", err) } // First delegate is always the master plugin in.Delegates[0].MasterPlugin = true @@ -479,7 +479,7 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err logging.Errorf("Multus: failed to get delegates: %v, but continue to delete clusterNetwork", err) } } else { - return logging.Errorf("Multus: Err in reading the delegates: %v", err) + return logging.Errorf("Multus: error reading the delegates: %v", err) } } else { defer os.Remove(path) @@ -511,7 +511,7 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err err := k8s.SetNetworkStatus(kubeClient, k8sArgs, nil, in) if err != nil { // error happen but continue to delete - logging.Errorf("Multus: Err unset the networks status: %v", err) + logging.Errorf("Multus: error unsetting the networks status: %v", err) } } } else { diff --git a/multus/multus_test.go b/multus/multus_test.go index e8f9c8f6e..44840c2f0 100644 --- a/multus/multus_test.go +++ b/multus/multus_test.go @@ -1157,7 +1157,7 @@ var _ = Describe("multus operations", func() { _, err = cmdAdd(args, fExec, nil) Expect(fExec.addIndex).To(Equal(2)) Expect(fExec.delIndex).To(Equal(2)) - Expect(err).To(MatchError("Multus: Err adding pod to network \"other1\": Multus: error in invoke Delegate add - \"other-plugin\": expected plugin failure")) + Expect(err).To(MatchError("Multus: error adding pod to network \"other1\": delegateAdd: error invoking DelegateAdd - \"other-plugin\": expected plugin failure")) // Cleanup default network file. if _, errStat := os.Stat(configPath); errStat == nil { diff --git a/types/conf.go b/types/conf.go index 88c95a4a3..91a9aeb83 100644 --- a/types/conf.go +++ b/types/conf.go @@ -39,15 +39,15 @@ func LoadDelegateNetConfList(bytes []byte, delegateConf *DelegateNetConf) error logging.Debugf("LoadDelegateNetConfList: %s, %v", string(bytes), delegateConf) if err := json.Unmarshal(bytes, &delegateConf.ConfList); err != nil { - return logging.Errorf("err in unmarshalling delegate conflist: %v", err) + return logging.Errorf("LoadDelegateNetConfList: error unmarshalling delegate conflist: %v", err) } if delegateConf.ConfList.Plugins == nil { - return logging.Errorf("delegate must have the 'type'or 'Plugin' field") + return logging.Errorf("LoadDelegateNetConfList: delegate must have the 'type' or 'plugin' field") } if delegateConf.ConfList.Plugins[0].Type == "" { - return logging.Errorf("a plugin delegate must have the 'type' field") + return logging.Errorf("LoadDelegateNetConfList: a plugin delegate must have the 'type' field") } delegateConf.ConfListPlugin = true return nil @@ -60,25 +60,25 @@ func LoadDelegateNetConf(bytes []byte, net *NetworkSelectionElement, deviceID st delegateConf := &DelegateNetConf{} if err := json.Unmarshal(bytes, &delegateConf.Conf); err != nil { - return nil, logging.Errorf("error in LoadDelegateNetConf - unmarshalling delegate config: %v", err) + return nil, logging.Errorf("LoadDelegateNetConf: error unmarshalling delegate config: %v", err) } // Do some minimal validation if delegateConf.Conf.Type == "" { if err := LoadDelegateNetConfList(bytes, delegateConf); err != nil { - return nil, logging.Errorf("error in LoadDelegateNetConf: %v", err) + return nil, logging.Errorf("LoadDelegateNetConf: failed with: %v", err) } if deviceID != "" { bytes, err = addDeviceIDInConfList(bytes, deviceID) if err != nil { - return nil, logging.Errorf("LoadDelegateNetConf(): failed to add deviceID in NetConfList bytes: %v", err) + return nil, logging.Errorf("LoadDelegateNetConf: failed to add deviceID in NetConfList bytes: %v", err) } } } else { if deviceID != "" { bytes, err = delegateAddDeviceID(bytes, deviceID) if err != nil { - return nil, logging.Errorf("LoadDelegateNetConf(): failed to add deviceID in NetConf bytes: %v", err) + return nil, logging.Errorf("LoadDelegateNetConf: failed to add deviceID in NetConf bytes: %v", err) } } } @@ -137,7 +137,7 @@ func LoadNetworkStatus(r types.Result, netName string, defaultNet bool) (*Networ // Convert whatever the IPAM result was into the current Result type result, err := current.NewResultFromResult(r) if err != nil { - logging.Errorf("error convert the type.Result to current.Result: %v", err) + logging.Errorf("LoadNetworkStatus: error converting the type.Result to current.Result: %v", err) return netstatus, err } for _, ifs := range result.Interfaces { @@ -170,7 +170,7 @@ func LoadNetConf(bytes []byte) (*NetConf, error) { logging.Debugf("LoadNetConf: %s", string(bytes)) if err := json.Unmarshal(bytes, netconf); err != nil { - return nil, logging.Errorf("failed to load netconf: %v", err) + return nil, logging.Errorf("LoadNetConf: failed to load netconf: %v", err) } // Logging @@ -185,16 +185,16 @@ func LoadNetConf(bytes []byte) (*NetConf, error) { if netconf.RawPrevResult != nil { resultBytes, err := json.Marshal(netconf.RawPrevResult) if err != nil { - return nil, logging.Errorf("could not serialize prevResult: %v", err) + return nil, logging.Errorf("LoadNetConf: could not serialize prevResult: %v", err) } res, err := version.NewResult(netconf.CNIVersion, resultBytes) if err != nil { - return nil, logging.Errorf("could not parse prevResult: %v", err) + return nil, logging.Errorf("LoadNetConf: could not parse prevResult: %v", err) } netconf.RawPrevResult = nil netconf.PrevResult, err = current.NewResultFromResult(res) if err != nil { - return nil, logging.Errorf("could not convert result to current version: %v", err) + return nil, logging.Errorf("LoadNetConf: could not convert result to current version: %v", err) } } @@ -205,7 +205,7 @@ func LoadNetConf(bytes []byte) (*NetConf, error) { // the existing delegate list and all delegates executed in-order. if len(netconf.RawDelegates) == 0 && netconf.ClusterNetwork == "" { - return nil, logging.Errorf("at least one delegate/defaultNetwork must be specified") + return nil, logging.Errorf("LoadNetConf: at least one delegate/defaultNetwork must be specified") } if netconf.CNIDir == "" { @@ -236,16 +236,16 @@ func LoadNetConf(bytes []byte) (*NetConf, error) { if netconf.ClusterNetwork == "" { // for Delegates if len(netconf.RawDelegates) == 0 { - return nil, logging.Errorf("at least one delegate must be specified") + return nil, logging.Errorf("LoadNetConf: at least one delegate must be specified") } for idx, rawConf := range netconf.RawDelegates { bytes, err := json.Marshal(rawConf) if err != nil { - return nil, logging.Errorf("error marshalling delegate %d config: %v", idx, err) + return nil, logging.Errorf("LoadNetConf: error marshalling delegate %d config: %v", idx, err) } delegateConf, err := LoadDelegateNetConf(bytes, nil, "") if err != nil { - return nil, logging.Errorf("failed to load delegate %d config: %v", idx, err) + return nil, logging.Errorf("LoadNetConf: failed to load delegate %d config: %v", idx, err) } netconf.Delegates = append(netconf.Delegates, delegateConf) } @@ -281,7 +281,7 @@ func delegateAddDeviceID(inBytes []byte, deviceID string) ([]byte, error) { if err != nil { return nil, logging.Errorf("delegateAddDeviceID: failed to re-marshal Spec.Config: %v", err) } - logging.Debugf("delegateAddDeviceID(): updated configBytes %s", string(configBytes)) + logging.Debugf("delegateAddDeviceID updated configBytes %s", string(configBytes)) return configBytes, nil } @@ -292,22 +292,22 @@ func addDeviceIDInConfList(inBytes []byte, deviceID string) ([]byte, error) { err = json.Unmarshal(inBytes, &rawConfig) if err != nil { - return nil, logging.Errorf("addDeviceIDInConfList(): failed to unmarshal inBytes: %v", err) + return nil, logging.Errorf("addDeviceIDInConfList: failed to unmarshal inBytes: %v", err) } pList, ok := rawConfig["plugins"] if !ok { - return nil, logging.Errorf("addDeviceIDInConfList(): unable to get plugin list") + return nil, logging.Errorf("addDeviceIDInConfList: unable to get plugin list") } pMap, ok := pList.([]interface{}) if !ok { - return nil, logging.Errorf("addDeviceIDInConfList(): unable to typecast plugin list") + return nil, logging.Errorf("addDeviceIDInConfList: unable to typecast plugin list") } firstPlugin, ok := pMap[0].(map[string]interface{}) if !ok { - return nil, logging.Errorf("addDeviceIDInConfList(): unable to typecast pMap") + return nil, logging.Errorf("addDeviceIDInConfList: unable to typecast pMap") } // Inject deviceID firstPlugin["deviceID"] = deviceID @@ -315,9 +315,9 @@ func addDeviceIDInConfList(inBytes []byte, deviceID string) ([]byte, error) { configBytes, err := json.Marshal(rawConfig) if err != nil { - return nil, logging.Errorf("addDeviceIDInConfList(): failed to re-marshal: %v", err) + return nil, logging.Errorf("addDeviceIDInConfList: failed to re-marshal: %v", err) } - logging.Debugf("addDeviceIDInConfList(): updated configBytes %s", string(configBytes)) + logging.Debugf("addDeviceIDInConfList: updated configBytes %s", string(configBytes)) return configBytes, nil }