summaryrefslogtreecommitdiff
path: root/pkg/varlinkapi/attach.go
diff options
context:
space:
mode:
authorJhon Honce <jhonce@redhat.com>2019-05-08 16:45:12 -0700
committerJhon Honce <jhonce@redhat.com>2019-05-14 12:19:28 -0700
commitbd3154fcf6a48b37cfde5d9b1226900cd863c0d9 (patch)
treea898754ae35bdb97d52c359131ef5fff63d4b18b /pkg/varlinkapi/attach.go
parenta261b60cc8851c04efd191be6f6e2e4598439822 (diff)
downloadpodman-bd3154fcf6a48b37cfde5d9b1226900cd863c0d9.tar.gz
podman-bd3154fcf6a48b37cfde5d9b1226900cd863c0d9.tar.bz2
podman-bd3154fcf6a48b37cfde5d9b1226900cd863c0d9.zip
Add VarlinkCall.RequiresUpgrade() type and method
Type varlinkapi.VarlinkCall currently only used as receiver for RequiresUpgrade() future helpers could be added to this type. RequiresUpgrade() verifies caller has given correct options to the call for the given operation. Signed-off-by: Jhon Honce <jhonce@redhat.com>
Diffstat (limited to 'pkg/varlinkapi/attach.go')
-rw-r--r--pkg/varlinkapi/attach.go16
1 files changed, 9 insertions, 7 deletions
diff --git a/pkg/varlinkapi/attach.go b/pkg/varlinkapi/attach.go
index 2234899a5..f292bbbf8 100644
--- a/pkg/varlinkapi/attach.go
+++ b/pkg/varlinkapi/attach.go
@@ -45,22 +45,24 @@ func (i *LibpodAPI) Attach(call iopodman.VarlinkCall, name string, detachKeys st
var finalErr error
resize := make(chan remotecommand.TerminalSize)
errChan := make(chan error)
+ varlink := VarlinkCall{&call}
- if !call.WantsUpgrade() {
- return call.ReplyErrorOccurred("client must use upgraded connection to attach")
+ if err := varlink.RequiresUpgrade(); err != nil {
+ return varlink.ReplyErrorOccurred(err.Error())
}
+
ctr, err := i.Runtime.LookupContainer(name)
if err != nil {
- return call.ReplyErrorOccurred(err.Error())
+ return varlink.ReplyErrorOccurred(err.Error())
}
state, err := ctr.State()
if err != nil {
- return call.ReplyErrorOccurred(err.Error())
+ return varlink.ReplyErrorOccurred(err.Error())
}
if !start && state != libpod.ContainerStateRunning {
- return call.ReplyErrorOccurred("container must be running to attach")
+ return varlink.ReplyErrorOccurred("container must be running to attach")
}
- call.Reply(nil)
+
reader, writer, _, pw, streams := setupStreams(call)
go func() {
@@ -81,7 +83,7 @@ func (i *LibpodAPI) Attach(call iopodman.VarlinkCall, name string, detachKeys st
quitWriter := virtwriter.NewVirtWriteCloser(writer, virtwriter.Quit)
_, err = quitWriter.Write([]byte("HANG-UP"))
// TODO error handling is not quite right here yet
- return call.Writer.Flush()
+ return varlink.Writer.Flush()
}
func attach(ctr *libpod.Container, streams *libpod.AttachStreams, detachKeys string, resize chan remotecommand.TerminalSize, errChan chan error) error {