| //go:build windows | |
| package wclayer | |
| import ( | |
| "context" | |
| "strings" | |
| "github.com/Microsoft/hcsshim/internal/hcserror" | |
| "github.com/Microsoft/hcsshim/internal/oc" | |
| "go.opencensus.io/trace" | |
| ) | |
| // CreateScratchLayer creates and populates new read-write layer for use by a container. | |
| // This requires the full list of paths to all parent layers up to the base | |
| func CreateScratchLayer(ctx context.Context, path string, parentLayerPaths []string) (err error) { | |
| title := "hcsshim::CreateScratchLayer" | |
| ctx, span := oc.StartSpan(ctx, title) | |
| defer span.End() | |
| defer func() { oc.SetSpanStatus(span, err) }() | |
| span.AddAttributes( | |
| trace.StringAttribute("path", path), | |
| trace.StringAttribute("parentLayerPaths", strings.Join(parentLayerPaths, ", "))) | |
| // Generate layer descriptors | |
| layers, err := layerPathsToDescriptors(ctx, parentLayerPaths) | |
| if err != nil { | |
| return err | |
| } | |
| err = createSandboxLayer(&stdDriverInfo, path, 0, layers) | |
| if err != nil { | |
| return hcserror.New(err, title, "") | |
| } | |
| return nil | |
| } |