forked from github/multus-cni
Improve error/debug message
This diff changes error message with fixed format for easy-to-read for users.
This commit is contained in:
committed by
Doug Smith
parent
f4431cd010
commit
0a2f7b18d3
@@ -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 {
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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"))
|
||||
|
||||
})
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user