diff --git a/cmd/kubevpn/cmds/clone.go b/cmd/kubevpn/cmds/clone.go index e9c0388b..e0005f0c 100644 --- a/cmd/kubevpn/cmds/clone.go +++ b/cmd/kubevpn/cmds/clone.go @@ -1,6 +1,7 @@ package cmds import ( + "context" "fmt" "os" @@ -153,7 +154,8 @@ func CmdClone(f cmdutil.Factory) *cobra.Command { err = util.PrintGRPCStream[rpc.CloneResponse](resp) if err != nil { if status.Code(err) == codes.Canceled { - return nil + err = remove(cli, args) + return err } return err } @@ -176,3 +178,20 @@ func CmdClone(f cmdutil.Factory) *cobra.Command { cmd.ValidArgsFunction = utilcomp.ResourceTypeAndNameCompletionFunc(f) return cmd } + +func remove(cli rpc.DaemonClient, args []string) error { + resp, err := cli.Remove(context.Background(), &rpc.RemoveRequest{ + Workloads: args, + }) + if err != nil { + return err + } + err = util.PrintGRPCStream[rpc.DisconnectResponse](resp) + if err != nil { + if status.Code(err) == codes.Canceled { + return nil + } + return err + } + return nil +} diff --git a/cmd/kubevpn/cmds/connect.go b/cmd/kubevpn/cmds/connect.go index d4579de2..a5011761 100644 --- a/cmd/kubevpn/cmds/connect.go +++ b/cmd/kubevpn/cmds/connect.go @@ -116,7 +116,8 @@ func CmdConnect(f cmdutil.Factory) *cobra.Command { err = util.PrintGRPCStream[rpc.ConnectResponse](resp) if err != nil { if status.Code(err) == codes.Canceled { - return nil + err = disconnect(cli, bytes, ns, sshConf) + return err } return err } @@ -124,20 +125,8 @@ func CmdConnect(f cmdutil.Factory) *cobra.Command { util.Print(os.Stdout, config.Slogan) } else { <-cmd.Context().Done() - disconnect, err := cli.Disconnect(context.Background(), &rpc.DisconnectRequest{ - KubeconfigBytes: ptr.To(string(bytes)), - Namespace: ptr.To(ns), - SshJump: sshConf.ToRPC(), - }) + err = disconnect(cli, bytes, ns, sshConf) if err != nil { - log.Errorf("Disconnect error: %v", err) - return err - } - err = util.PrintGRPCStream[rpc.DisconnectResponse](disconnect) - if err != nil { - if status.Code(err) == codes.Canceled { - return nil - } return err } _, _ = fmt.Fprint(os.Stdout, "Disconnect completed") @@ -153,3 +142,23 @@ func CmdConnect(f cmdutil.Factory) *cobra.Command { pkgssh.AddSshFlags(cmd.Flags(), sshConf) return cmd } + +func disconnect(cli rpc.DaemonClient, bytes []byte, ns string, sshConf *pkgssh.SshConfig) error { + resp, err := cli.Disconnect(context.Background(), &rpc.DisconnectRequest{ + KubeconfigBytes: ptr.To(string(bytes)), + Namespace: ptr.To(ns), + SshJump: sshConf.ToRPC(), + }) + if err != nil { + log.Errorf("Disconnect error: %v", err) + return err + } + err = util.PrintGRPCStream[rpc.DisconnectResponse](resp) + if err != nil { + if status.Code(err) == codes.Canceled { + return nil + } + return err + } + return nil +} diff --git a/cmd/kubevpn/cmds/proxy.go b/cmd/kubevpn/cmds/proxy.go index a006c216..ad129c31 100644 --- a/cmd/kubevpn/cmds/proxy.go +++ b/cmd/kubevpn/cmds/proxy.go @@ -147,7 +147,8 @@ func CmdProxy(f cmdutil.Factory) *cobra.Command { err = util.PrintGRPCStream[rpc.ConnectResponse](client) if err != nil { if status.Code(err) == codes.Canceled { - return nil + err = leave(cli, args) + return err } return err } @@ -157,19 +158,10 @@ func CmdProxy(f cmdutil.Factory) *cobra.Command { // leave from cluster resources <-cmd.Context().Done() - stream, err := cli.Leave(context.Background(), &rpc.LeaveRequest{ - Workloads: args, - }) + err = leave(cli, args) if err != nil { return err } - err = util.PrintGRPCStream[rpc.LeaveResponse](stream) - if err != nil { - if status.Code(err) == codes.Canceled { - return nil - } - return err - } } return nil }, @@ -184,3 +176,20 @@ func CmdProxy(f cmdutil.Factory) *cobra.Command { cmd.ValidArgsFunction = utilcomp.ResourceTypeAndNameCompletionFunc(f) return cmd } + +func leave(cli rpc.DaemonClient, args []string) error { + stream, err := cli.Leave(context.Background(), &rpc.LeaveRequest{ + Workloads: args, + }) + if err != nil { + return err + } + err = util.PrintGRPCStream[rpc.LeaveResponse](stream) + if err != nil { + if status.Code(err) == codes.Canceled { + return nil + } + return err + } + return nil +}