mirror of
https://github.com/containers/podman.git
synced 2025-10-16 18:53:19 +08:00

Pull in updates made to the filters code for images. Filters now perform an AND operation except for th reference filter which does an OR operation for positive case but an AND operation for negative cases. Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
//go:build windows
|
|
|
|
package computestorage
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
|
|
hcsschema "github.com/Microsoft/hcsshim/internal/hcs/schema2"
|
|
"github.com/Microsoft/hcsshim/internal/oc"
|
|
"github.com/pkg/errors"
|
|
"go.opencensus.io/trace"
|
|
)
|
|
|
|
// DetachLayerStorageFilter detaches the layer storage filter on a writable container layer.
|
|
//
|
|
// `layerPath` is a path to a directory containing the layer to export.
|
|
func DetachLayerStorageFilter(ctx context.Context, layerPath string) (err error) {
|
|
title := "hcsshim::DetachLayerStorageFilter"
|
|
ctx, span := oc.StartSpan(ctx, title) //nolint:ineffassign,staticcheck
|
|
defer span.End()
|
|
defer func() { oc.SetSpanStatus(span, err) }()
|
|
span.AddAttributes(trace.StringAttribute("layerPath", layerPath))
|
|
|
|
err = hcsDetachLayerStorageFilter(layerPath)
|
|
if err != nil {
|
|
return errors.Wrap(err, "failed to detach layer storage filter")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DetachOverlayFilter detaches the filter on a writable container layer.
|
|
//
|
|
// `volumePath` is a path to writable container volume.
|
|
func DetachOverlayFilter(ctx context.Context, volumePath string, filterType hcsschema.FileSystemFilterType) (err error) {
|
|
title := "hcsshim::DetachOverlayFilter"
|
|
ctx, span := oc.StartSpan(ctx, title) //nolint:ineffassign,staticcheck
|
|
defer span.End()
|
|
defer func() { oc.SetSpanStatus(span, err) }()
|
|
span.AddAttributes(trace.StringAttribute("volumePath", volumePath))
|
|
|
|
layerData := LayerData{}
|
|
layerData.FilterType = filterType
|
|
bytes, err := json.Marshal(layerData)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = hcsDetachOverlayFilter(volumePath, string(bytes))
|
|
if err != nil {
|
|
return errors.Wrap(err, "failed to detach overlay filter")
|
|
}
|
|
return nil
|
|
}
|