mirror of
https://github.com/containers/podman.git
synced 2025-05-20 16:47:39 +08:00
Move Attach under the OCI Runtime interface
With conmon-rs on the horizon, we need to disentangle Libpod from legacy Conmon to the greatest extent possible. There are definitely opportunities for codesharing between the two, but we have to assume the implementations will be largely disjoint given the different architectures. Fortunately, most of the work has already been done in the past. The conmon-managed OCI runtime mostly sits behind an interface, with a few exceptions - the most notable of those being attach. This PR thus moves Attach behind the interface, to ensure that we can have attach implementations that don't use our existing unix socket streaming if necessary. Still to-do is conmon cleanup. There's a lot of code that removes Conmon-specific files, or kills the Conmon PID, and all of it will need to be refactored behind the interface. [NO NEW TESTS NEEDED] Just moving some things around. Signed-off-by: Matthew Heon <matthew.heon@pm.me>
This commit is contained in:
@ -123,7 +123,18 @@ func (c *Container) StartAndAttach(ctx context.Context, streams *define.AttachSt
|
||||
|
||||
// Attach to the container before starting it
|
||||
go func() {
|
||||
if err := c.attach(streams, keys, resize, true, startedChan, nil); err != nil {
|
||||
// Start resizing
|
||||
if c.LogDriver() != define.PassthroughLogging {
|
||||
registerResizeFunc(resize, c.bundlePath())
|
||||
}
|
||||
|
||||
opts := new(AttachOptions)
|
||||
opts.Streams = streams
|
||||
opts.DetachKeys = &keys
|
||||
opts.Start = true
|
||||
opts.Started = startedChan
|
||||
|
||||
if err := c.ociRuntime.Attach(c, opts); err != nil {
|
||||
attachChan <- err
|
||||
}
|
||||
close(attachChan)
|
||||
@ -261,8 +272,18 @@ func (c *Container) Attach(streams *define.AttachStreams, keys string, resize <-
|
||||
}()
|
||||
}
|
||||
|
||||
// Start resizing
|
||||
if c.LogDriver() != define.PassthroughLogging {
|
||||
registerResizeFunc(resize, c.bundlePath())
|
||||
}
|
||||
|
||||
opts := new(AttachOptions)
|
||||
opts.Streams = streams
|
||||
opts.DetachKeys = &keys
|
||||
opts.AttachReady = attachRdy
|
||||
|
||||
c.newContainerEvent(events.Attach)
|
||||
return c.attach(streams, keys, resize, false, nil, attachRdy)
|
||||
return c.ociRuntime.Attach(c, opts)
|
||||
}
|
||||
|
||||
// HTTPAttach forwards an attach session over a hijacked HTTP session.
|
||||
|
Reference in New Issue
Block a user