func cmdDel()

in cmd/kube-egress-cni/main.go [192:254]


func cmdDel(args *skel.CmdArgs) error {
	// get cni config
	config, err := conf.ParseCNIConfig(args.StdinData)
	if err != nil {
		return err
	}

	// get k8s metadata
	k8sInfo, err := conf.LoadK8sInfo(args.Args)
	if err != nil {
		return err
	}
	conn, err := grpc.NewClient(config.SocketPath,
		grpc.WithTransportCredentials(insecure.NewCredentials()),
		grpc.WithStreamInterceptor(grpc_retry.StreamClientInterceptor()),
		grpc.WithUnaryInterceptor(grpc_retry.UnaryClientInterceptor()),
		grpc.WithUnaryInterceptor(grpc_prometheus.UnaryClientInterceptor),
		grpc.WithStreamInterceptor(grpc_prometheus.StreamClientInterceptor),
		grpc.WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) {
			d := net.Dialer{}
			return d.DialContext(ctx, "tcp", addr)
		}))
	if err != nil {
		return err
	}
	defer conn.Close()
	client := v1.NewNicServiceClient(conn)

	podNs, err := ns.GetNS(args.Netns)
	if err != nil {
		return err
	}
	defer podNs.Close()
	err = podNs.Do(func(nn ns.NetNS) error {

		_, err = client.NicDel(context.Background(), &v1.NicDelRequest{
			PodConfig: &v1.PodInfo{
				PodName:      string(k8sInfo.K8S_POD_NAME),
				PodNamespace: string(k8sInfo.K8S_POD_NAMESPACE),
			},
		})
		if err != nil {
			return err
		}

		ifHandle, err := netlink.LinkByName(consts.WireguardLinkName)
		if err != nil {
			//ignore error because cni delete may be invoked more than once.
			return nil
		}
		return netlink.LinkDel(ifHandle)
	})
	if err != nil {
		return err
	}

	err = ipam.New(config.IPAM.Type, args.StdinData).DeleteIP()
	if err != nil {
		return err
	}

	return types.PrintResult(&type100.Result{}, config.CNIVersion)
}