func()

in Kubernetes/wincni/cni/network/network.go [232:278]


func (plugin *netPlugin) Delete(args *cniSkel.CmdArgs) error {
	logrus.Debugf("[cni-net] Processing DEL command with args {ContainerID:%v Netns:%v IfName:%v Args:%v Path:%v}.",
		args.ContainerID, args.Netns, args.IfName, args.Args, args.Path)

	podConfig, err := cni.ParseCniArgs(args.Args)
	k8sNamespace := "default"
	if err == nil {
		k8sNamespace = string(podConfig.K8S_POD_NAMESPACE)
	}
	// Parse network configuration from stdin.
	cniConfig, err := cni.ParseNetworkConfig(args.StdinData)
	if err != nil {
		logrus.Errorf("[cni-net] Failed to parse network configuration, err:%v.", err)
		return nil
	}

	logrus.Debugf("[cni-net] Read network configuration %+v.", cniConfig)
	// Convert cniConfig to NetworkInfo
	networkInfo := cniConfig.GetNetworkInfo()
	//endpointID := args.ContainerID + "_" + networkInfo.ID
	epInfo := cniConfig.GetEndpointInfo(
		networkInfo, args.ContainerID, args.Netns, k8sNamespace)
	endpointInfo, err := plugin.nm.GetEndpointByName(epInfo.Name)
	if err != nil {
		logrus.Errorf("[cni-net] Failed to find endpoint, err:%v.", err)
		return nil
	}

	if args.Netns != "none" {
		// Shared endpoint removal. Do not remove the endpoint.
		err = plugin.nm.DetachEndpointFromContainer(epInfo.Name, epInfo.ContainerID)
		if err != nil {
			logrus.Errorf("[cni-net] Failed to attach endpoint to container [%v], err:%v.", epInfo, err)
		}
	} else {
		endpointInfo.HotDetachEndpoint(args.ContainerID)

		// Delete the endpoint.
		err = plugin.nm.DeleteEndpoint(endpointInfo.ID)
		if err != nil {
			logrus.Errorf("[cni-net] Failed to delete endpoint, err:%v.", err)
			return nil
		}
		logrus.Debugf("[cni-net] DEL succeeded.")
	}
	return nil
}