moby/daemon/changes.go
Nicolas De Loof 4dd86a0b33
containerd-integration: prefer error over panic where possible
- prefer error over panic where possible
- ContainerChanges is not implemented by snapshotter-based ImageService

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-09-07 22:01:49 +02:00

37 lines
952 B
Go

package daemon // import "github.com/docker/docker/daemon"
import (
"errors"
"time"
"github.com/docker/docker/errdefs"
"github.com/docker/docker/pkg/archive"
)
// ContainerChanges returns a list of container fs changes
func (daemon *Daemon) ContainerChanges(name string) ([]archive.Change, error) {
start := time.Now()
container, err := daemon.GetContainer(name)
if err != nil {
return nil, err
}
if isWindows && container.IsRunning() {
return nil, errors.New("Windows does not support diff of a running container")
}
if daemon.UsesSnapshotter() {
return nil, errdefs.NotImplemented(errors.New("not implemented"))
}
container.Lock()
defer container.Unlock()
if container.RWLayer == nil {
return nil, errors.New("RWLayer of container " + name + " is unexpectedly nil")
}
c, err := container.RWLayer.Changes()
if err != nil {
return nil, err
}
containerActions.WithValues("changes").UpdateSince(start)
return c, nil
}