func()

in common/core/network.go [421:482]


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 := ""
	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 err
	}

	logrus.Debugf("[cni-net] Read network configuration %+v.", cniConfig)

	if cniConfig.Ipam.Type != "" {
		logrus.Debugf("[cni-net] Ipam detected, executing delegate call to delete ipam, %v", cniConfig.Ipam)
		err := deallocateIpam(cniConfig, args.StdinData)

		if err != nil {
			logrus.Debugf("[cni-net] Failed during delete call for ipam, %v", err)
			return fmt.Errorf("ipam deletion failed, %v", err)
		}
	}

	// Convert cniConfig to NetworkInfo
	networkInfo, err := cniConfig.GetNetworkInfo(k8sNamespace)
	if err != nil {
		logrus.Errorf("[cni-net] Failed to get network information from network configuration, err:%v.", err)
		return err
	}
	epInfo, err := cniConfig.GetEndpointInfo(networkInfo, args.ContainerID, args.Netns)
	if err != nil {
		return err
	}
	endpointInfo, err := plugin.nm.GetEndpointByName(epInfo.Name, cniConfig.OptionalFlags.EnableDualStack)
	if err != nil {
		if hcn.IsNotFoundError(err) {
			logrus.Debugf("[cni-net] Endpoint was not found error, err:%v", err)
			return nil
		}
		logrus.Errorf("[cni-net] Failed while getting endpoint, err:%v", err)
		return err
	}

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