github.com/rish1988/moby@v25.0.2+incompatible/daemon/images/image_windows.go (about)

     1  package images
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/docker/docker/image"
     7  	"github.com/docker/docker/layer"
     8  	"github.com/pkg/errors"
     9  )
    10  
    11  // GetContainerLayerSize returns real size & virtual size
    12  func (i *ImageService) GetContainerLayerSize(ctx context.Context, containerID string) (int64, int64, error) {
    13  	// TODO Windows
    14  	return 0, 0, nil
    15  }
    16  
    17  // GetLayerFolders returns the layer folders from an image RootFS
    18  func (i *ImageService) GetLayerFolders(img *image.Image, rwLayer layer.RWLayer, containerID string) ([]string, error) {
    19  	folders := []string{}
    20  	rd := len(img.RootFS.DiffIDs)
    21  	for index := 1; index <= rd; index++ {
    22  		// FIXME: why does this mutate the RootFS?
    23  		img.RootFS.DiffIDs = img.RootFS.DiffIDs[:index]
    24  		if err := image.CheckOS(img.OperatingSystem()); err != nil {
    25  			return nil, errors.Wrapf(err, "cannot get layerpath for ImageID %s", img.RootFS.ChainID())
    26  		}
    27  		layerPath, err := layer.GetLayerPath(i.layerStore, img.RootFS.ChainID())
    28  		if err != nil {
    29  			return nil, errors.Wrapf(err, "failed to get layer path from graphdriver %s for ImageID %s", i.layerStore, img.RootFS.ChainID())
    30  		}
    31  		// Reverse order, expecting parent first
    32  		folders = append([]string{layerPath}, folders...)
    33  	}
    34  	if rwLayer == nil {
    35  		return nil, errors.New("RWLayer is unexpectedly nil")
    36  	}
    37  	m, err := rwLayer.Metadata()
    38  	if err != nil {
    39  		return nil, errors.Wrap(err, "failed to get layer metadata")
    40  	}
    41  	return append(folders, m["dir"]), nil
    42  }