mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-12-24 11:51:13 +08:00
fix(connect): fix connect foreground exit failed (#214)
* fix(connect): fix connect foreground exit failed * fix(*): fix lint * fix: disconnect by kubeconfig instead of id --------- Co-authored-by: 江鹏飞 <jiangpengfei.jiangpf@bytedance.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package cmds
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
@@ -12,6 +13,7 @@ import (
|
||||
cmdutil "k8s.io/kubectl/pkg/cmd/util"
|
||||
"k8s.io/kubectl/pkg/util/i18n"
|
||||
"k8s.io/kubectl/pkg/util/templates"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/wencaiwulue/kubevpn/v2/pkg/config"
|
||||
"github.com/wencaiwulue/kubevpn/v2/pkg/daemon"
|
||||
@@ -119,6 +121,28 @@ func CmdConnect(f cmdutil.Factory) *cobra.Command {
|
||||
}
|
||||
if !req.Foreground {
|
||||
util.Print(os.Stdout, "Now you can access resources in the kubernetes cluster, enjoy it :)")
|
||||
} else {
|
||||
<-cmd.Context().Done()
|
||||
disconnect, 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
|
||||
}
|
||||
for {
|
||||
recv, err := disconnect.Recv()
|
||||
if err == io.EOF {
|
||||
break
|
||||
} else if err != nil {
|
||||
log.Errorf("receive disconnect error: %v", err)
|
||||
return err
|
||||
}
|
||||
log.Info(recv.Message)
|
||||
}
|
||||
log.Info("disconnect successfully")
|
||||
}
|
||||
return nil
|
||||
},
|
||||
|
||||
@@ -11,7 +11,6 @@ import (
|
||||
"github.com/spf13/pflag"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
"k8s.io/utils/pointer"
|
||||
|
||||
"github.com/wencaiwulue/kubevpn/v2/pkg/config"
|
||||
"github.com/wencaiwulue/kubevpn/v2/pkg/daemon/rpc"
|
||||
@@ -198,33 +197,6 @@ func (svr *Server) redirectToSudoDaemon(req *rpc.ConnectRequest, resp rpc.Daemon
|
||||
svr.t = time.Now()
|
||||
svr.connect = connect
|
||||
|
||||
// hangup
|
||||
if req.Foreground {
|
||||
<-resp.Context().Done()
|
||||
|
||||
client := svr.GetClient(false)
|
||||
if client == nil {
|
||||
return fmt.Errorf("daemon not start")
|
||||
}
|
||||
disconnect, err := client.Disconnect(context.Background(), &rpc.DisconnectRequest{
|
||||
ID: pointer.Int32(int32(0)),
|
||||
})
|
||||
if err != nil {
|
||||
log.Errorf("disconnect error: %v", err)
|
||||
return err
|
||||
}
|
||||
for {
|
||||
recv, err := disconnect.Recv()
|
||||
if err == io.EOF {
|
||||
break
|
||||
} else if err != nil {
|
||||
log.Error(err)
|
||||
return err
|
||||
}
|
||||
log.Info(recv.Message)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user