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
}