summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libpod/container_api.go27
-rw-r--r--libpod/container_internal.go30
2 files changed, 30 insertions, 27 deletions
diff --git a/libpod/container_api.go b/libpod/container_api.go
index 9020a2dde..161cd938c 100644
--- a/libpod/container_api.go
+++ b/libpod/container_api.go
@@ -3,13 +3,11 @@ package libpod
import (
"io/ioutil"
"os"
- gosignal "os/signal"
"strconv"
"time"
"github.com/containers/storage"
"github.com/docker/docker/daemon/caps"
- "github.com/docker/docker/pkg/signal"
"github.com/docker/docker/pkg/stringid"
"github.com/docker/docker/pkg/term"
"github.com/pkg/errors"
@@ -322,31 +320,6 @@ func (c *Container) Exec(tty, privileged bool, env, cmd []string, user string) e
return waitErr
}
-func resizeTty(resize chan remotecommand.TerminalSize) {
- sigchan := make(chan os.Signal, 1)
- gosignal.Notify(sigchan, signal.SIGWINCH)
- sendUpdate := func() {
- winsize, err := term.GetWinsize(os.Stdin.Fd())
- if err != nil {
- logrus.Warnf("Could not get terminal size %v", err)
- return
- }
- resize <- remotecommand.TerminalSize{
- Width: winsize.Width,
- Height: winsize.Height,
- }
- }
- go func() {
- defer close(resize)
- // Update the terminal size immediately without waiting
- // for a SIGWINCH to get the correct initial size.
- sendUpdate()
- for range sigchan {
- sendUpdate()
- }
- }()
-}
-
// Attach attaches to a container
// Returns fully qualified URL of streaming server for the container
func (c *Container) Attach(noStdin bool, keys string, attached chan<- bool) error {
diff --git a/libpod/container_internal.go b/libpod/container_internal.go
index 772eeaa66..736655f13 100644
--- a/libpod/container_internal.go
+++ b/libpod/container_internal.go
@@ -6,6 +6,7 @@ import (
"io"
"io/ioutil"
"os"
+ gosignal "os/signal"
"path/filepath"
"strings"
"syscall"
@@ -16,7 +17,9 @@ import (
"github.com/containers/storage/pkg/chrootarchive"
"github.com/docker/docker/pkg/mount"
"github.com/docker/docker/pkg/namesgenerator"
+ "github.com/docker/docker/pkg/signal"
"github.com/docker/docker/pkg/stringid"
+ "github.com/docker/docker/pkg/term"
spec "github.com/opencontainers/runtime-spec/specs-go"
"github.com/opencontainers/runtime-tools/generate"
"github.com/opencontainers/selinux/go-selinux/label"
@@ -26,6 +29,7 @@ import (
"github.com/sirupsen/logrus"
"github.com/ulule/deepcopier"
"golang.org/x/sys/unix"
+ "k8s.io/client-go/tools/remotecommand"
)
const (
@@ -329,6 +333,32 @@ func (c *Container) stop(timeout uint) error {
return c.cleanupStorage()
}
+// resizeTty handles TTY resizing for Attach()
+func resizeTty(resize chan remotecommand.TerminalSize) {
+ sigchan := make(chan os.Signal, 1)
+ gosignal.Notify(sigchan, signal.SIGWINCH)
+ sendUpdate := func() {
+ winsize, err := term.GetWinsize(os.Stdin.Fd())
+ if err != nil {
+ logrus.Warnf("Could not get terminal size %v", err)
+ return
+ }
+ resize <- remotecommand.TerminalSize{
+ Width: winsize.Width,
+ Height: winsize.Height,
+ }
+ }
+ go func() {
+ defer close(resize)
+ // Update the terminal size immediately without waiting
+ // for a SIGWINCH to get the correct initial size.
+ sendUpdate()
+ for range sigchan {
+ sendUpdate()
+ }
+ }()
+}
+
// mountStorage sets up the container's root filesystem
// It mounts the image and any other requested mounts
// TODO: Add ability to override mount label so we can use this for Mount() too