added kubernetes - NOT TESTED
This commit is contained in:
60
instancemanager/kubernetes/kubecon.go
Normal file
60
instancemanager/kubernetes/kubecon.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package kubernetes
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"k8s.io/client-go/tools/remotecommand"
|
||||
)
|
||||
|
||||
type kubeConn struct {
|
||||
stdinWriter *io.PipeWriter
|
||||
stdoutReader *io.PipeReader
|
||||
closeCh chan struct{}
|
||||
}
|
||||
|
||||
func (c *kubeConn) Read(b []byte) (int, error) {
|
||||
return c.stdoutReader.Read(b)
|
||||
}
|
||||
|
||||
func (c *kubeConn) Write(b []byte) (int, error) {
|
||||
return c.stdinWriter.Write(b)
|
||||
}
|
||||
|
||||
func (c *kubeConn) Close() error {
|
||||
close(c.closeCh)
|
||||
c.stdinWriter.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *kubeConn) LocalAddr() net.Addr { return dummyAddr("local") }
|
||||
func (c *kubeConn) RemoteAddr() net.Addr { return dummyAddr("remote") }
|
||||
func (c *kubeConn) SetDeadline(t time.Time) error { return nil }
|
||||
func (c *kubeConn) SetReadDeadline(t time.Time) error { return nil }
|
||||
func (c *kubeConn) SetWriteDeadline(t time.Time) error { return nil }
|
||||
|
||||
type dummyAddr string
|
||||
|
||||
func (a dummyAddr) Network() string { return string(a) }
|
||||
func (a dummyAddr) String() string { return string(a) }
|
||||
|
||||
func newKubeCon(stdin *io.PipeWriter, stdout *io.PipeReader) net.Conn {
|
||||
return &kubeConn{
|
||||
stdinWriter: stdin,
|
||||
stdoutReader: stdout,
|
||||
closeCh: make(chan struct{}),
|
||||
}
|
||||
}
|
||||
|
||||
type sizeQueue struct {
|
||||
resizeChan chan remotecommand.TerminalSize
|
||||
}
|
||||
|
||||
func (s *sizeQueue) Next() *remotecommand.TerminalSize {
|
||||
size, ok := <-s.resizeChan
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
return &size
|
||||
}
|
Reference in New Issue
Block a user