mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00
vendor: bump c/storage to main/d06b0f
Bump c/storage to main/d06b0f so we podman could use new `race-free` `AddNames` and `RemoveNames` api Signed-off-by: Aditya R <arajan@redhat.com>
This commit is contained in:
2
go.mod
2
go.mod
@ -17,7 +17,7 @@ require (
|
|||||||
github.com/containers/image/v5 v5.19.2-0.20220224100137-1045fb70b094
|
github.com/containers/image/v5 v5.19.2-0.20220224100137-1045fb70b094
|
||||||
github.com/containers/ocicrypt v1.1.2
|
github.com/containers/ocicrypt v1.1.2
|
||||||
github.com/containers/psgo v1.7.2
|
github.com/containers/psgo v1.7.2
|
||||||
github.com/containers/storage v1.38.3-0.20220228132533-ebc90aba7d29
|
github.com/containers/storage v1.38.3-0.20220301151551-d06b0f81c0aa
|
||||||
github.com/coreos/go-systemd/v22 v22.3.2
|
github.com/coreos/go-systemd/v22 v22.3.2
|
||||||
github.com/coreos/stream-metadata-go v0.0.0-20210225230131-70edb9eb47b3
|
github.com/coreos/stream-metadata-go v0.0.0-20210225230131-70edb9eb47b3
|
||||||
github.com/cyphar/filepath-securejoin v0.2.3
|
github.com/cyphar/filepath-securejoin v0.2.3
|
||||||
|
4
go.sum
4
go.sum
@ -373,8 +373,8 @@ github.com/containers/psgo v1.7.2/go.mod h1:SLpqxsPOHtTqRygjutCPXmeU2PoEFzV3gzJp
|
|||||||
github.com/containers/storage v1.37.0/go.mod h1:kqeJeS0b7DO2ZT1nVWs0XufrmPFbgV3c+Q/45RlH6r4=
|
github.com/containers/storage v1.37.0/go.mod h1:kqeJeS0b7DO2ZT1nVWs0XufrmPFbgV3c+Q/45RlH6r4=
|
||||||
github.com/containers/storage v1.38.0/go.mod h1:lBzt28gAk5ADZuRtwdndRJyqX22vnRaXmlF+7ktfMYc=
|
github.com/containers/storage v1.38.0/go.mod h1:lBzt28gAk5ADZuRtwdndRJyqX22vnRaXmlF+7ktfMYc=
|
||||||
github.com/containers/storage v1.38.2/go.mod h1:INP0RPLHWBxx+pTsO5uiHlDUGHDFvWZPWprAbAlQWPQ=
|
github.com/containers/storage v1.38.2/go.mod h1:INP0RPLHWBxx+pTsO5uiHlDUGHDFvWZPWprAbAlQWPQ=
|
||||||
github.com/containers/storage v1.38.3-0.20220228132533-ebc90aba7d29 h1:jKxTQc8+kAoYi/oQoMOptWi7CXsicJ/i6DR5GZCyISw=
|
github.com/containers/storage v1.38.3-0.20220301151551-d06b0f81c0aa h1:rdJIWaQ7PwS2N0ZWgn6NXDp+8KtvfSmPTJ3S5i6fJr4=
|
||||||
github.com/containers/storage v1.38.3-0.20220228132533-ebc90aba7d29/go.mod h1:LkkL34WRi4dI4jt9Cp+ImdZi/P5i36glSHimT5CP5zM=
|
github.com/containers/storage v1.38.3-0.20220301151551-d06b0f81c0aa/go.mod h1:LkkL34WRi4dI4jt9Cp+ImdZi/P5i36glSHimT5CP5zM=
|
||||||
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||||
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||||
github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||||
|
55
vendor/github.com/containers/storage/containers.go
generated
vendored
55
vendor/github.com/containers/storage/containers.go
generated
vendored
@ -84,8 +84,17 @@ type ContainerStore interface {
|
|||||||
|
|
||||||
// SetNames updates the list of names associated with the container
|
// SetNames updates the list of names associated with the container
|
||||||
// with the specified ID.
|
// with the specified ID.
|
||||||
|
// Deprecated: Prone to race conditions, suggested alternatives are `AddNames` and `RemoveNames`.
|
||||||
SetNames(id string, names []string) error
|
SetNames(id string, names []string) error
|
||||||
|
|
||||||
|
// AddNames adds the supplied values to the list of names associated with the container with
|
||||||
|
// the specified id.
|
||||||
|
AddNames(id string, names []string) error
|
||||||
|
|
||||||
|
// RemoveNames removes the supplied values from the list of names associated with the container with
|
||||||
|
// the specified id.
|
||||||
|
RemoveNames(id string, names []string) error
|
||||||
|
|
||||||
// Get retrieves information about a container given an ID or name.
|
// Get retrieves information about a container given an ID or name.
|
||||||
Get(id string) (*Container, error)
|
Get(id string) (*Container, error)
|
||||||
|
|
||||||
@ -377,22 +386,40 @@ func (r *containerStore) removeName(container *Container, name string) {
|
|||||||
container.Names = stringSliceWithoutValue(container.Names, name)
|
container.Names = stringSliceWithoutValue(container.Names, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deprecated: Prone to race conditions, suggested alternatives are `AddNames` and `RemoveNames`.
|
||||||
func (r *containerStore) SetNames(id string, names []string) error {
|
func (r *containerStore) SetNames(id string, names []string) error {
|
||||||
names = dedupeNames(names)
|
return r.updateNames(id, names, setNames)
|
||||||
if container, ok := r.lookup(id); ok {
|
}
|
||||||
for _, name := range container.Names {
|
|
||||||
delete(r.byname, name)
|
func (r *containerStore) AddNames(id string, names []string) error {
|
||||||
}
|
return r.updateNames(id, names, addNames)
|
||||||
for _, name := range names {
|
}
|
||||||
if otherContainer, ok := r.byname[name]; ok {
|
|
||||||
r.removeName(otherContainer, name)
|
func (r *containerStore) RemoveNames(id string, names []string) error {
|
||||||
}
|
return r.updateNames(id, names, removeNames)
|
||||||
r.byname[name] = container
|
}
|
||||||
}
|
|
||||||
container.Names = names
|
func (r *containerStore) updateNames(id string, names []string, op updateNameOperation) error {
|
||||||
return r.Save()
|
container, ok := r.lookup(id)
|
||||||
|
if !ok {
|
||||||
|
return ErrContainerUnknown
|
||||||
}
|
}
|
||||||
return ErrContainerUnknown
|
oldNames := container.Names
|
||||||
|
names, err := applyNameOperation(oldNames, names, op)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, name := range oldNames {
|
||||||
|
delete(r.byname, name)
|
||||||
|
}
|
||||||
|
for _, name := range names {
|
||||||
|
if otherContainer, ok := r.byname[name]; ok {
|
||||||
|
r.removeName(otherContainer, name)
|
||||||
|
}
|
||||||
|
r.byname[name] = container
|
||||||
|
}
|
||||||
|
container.Names = names
|
||||||
|
return r.Save()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *containerStore) Delete(id string) error {
|
func (r *containerStore) Delete(id string) error {
|
||||||
|
2
vendor/github.com/containers/storage/drivers/overlay/overlay.go
generated
vendored
2
vendor/github.com/containers/storage/drivers/overlay/overlay.go
generated
vendored
@ -1530,7 +1530,7 @@ func (d *Driver) get(id string, disableShifting bool, options graphdriver.MountO
|
|||||||
diffDir := path.Join(id, "diff")
|
diffDir := path.Join(id, "diff")
|
||||||
opts = fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", strings.Join(relLowers, ":"), diffDir, workdir)
|
opts = fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", strings.Join(relLowers, ":"), diffDir, workdir)
|
||||||
} else {
|
} else {
|
||||||
opts = fmt.Sprintf("lowerdir=%s", strings.Join(absLowers, ":"))
|
opts = fmt.Sprintf("lowerdir=%s", strings.Join(relLowers, ":"))
|
||||||
}
|
}
|
||||||
if len(optsList) > 0 {
|
if len(optsList) > 0 {
|
||||||
opts = fmt.Sprintf("%s,%s", opts, strings.Join(optsList, ","))
|
opts = fmt.Sprintf("%s,%s", opts, strings.Join(optsList, ","))
|
||||||
|
5
vendor/github.com/containers/storage/errors.go
generated
vendored
5
vendor/github.com/containers/storage/errors.go
generated
vendored
@ -1,6 +1,8 @@
|
|||||||
package storage
|
package storage
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/containers/storage/types"
|
"github.com/containers/storage/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -57,4 +59,7 @@ var (
|
|||||||
ErrNotSupported = types.ErrNotSupported
|
ErrNotSupported = types.ErrNotSupported
|
||||||
// ErrInvalidMappings is returned when the specified mappings are invalid.
|
// ErrInvalidMappings is returned when the specified mappings are invalid.
|
||||||
ErrInvalidMappings = types.ErrInvalidMappings
|
ErrInvalidMappings = types.ErrInvalidMappings
|
||||||
|
// ErrInvalidNameOperation is returned when updateName is called with invalid operation.
|
||||||
|
// Internal error
|
||||||
|
errInvalidUpdateNameOperation = errors.New("invalid update name operation")
|
||||||
)
|
)
|
||||||
|
59
vendor/github.com/containers/storage/images.go
generated
vendored
59
vendor/github.com/containers/storage/images.go
generated
vendored
@ -136,8 +136,19 @@ type ImageStore interface {
|
|||||||
// SetNames replaces the list of names associated with an image with the
|
// SetNames replaces the list of names associated with an image with the
|
||||||
// supplied values. The values are expected to be valid normalized
|
// supplied values. The values are expected to be valid normalized
|
||||||
// named image references.
|
// named image references.
|
||||||
|
// Deprecated: Prone to race conditions, suggested alternatives are `AddNames` and `RemoveNames`.
|
||||||
SetNames(id string, names []string) error
|
SetNames(id string, names []string) error
|
||||||
|
|
||||||
|
// AddNames adds the supplied values to the list of names associated with the image with
|
||||||
|
// the specified id. The values are expected to be valid normalized
|
||||||
|
// named image references.
|
||||||
|
AddNames(id string, names []string) error
|
||||||
|
|
||||||
|
// RemoveNames removes the supplied values from the list of names associated with the image with
|
||||||
|
// the specified id. The values are expected to be valid normalized
|
||||||
|
// named image references.
|
||||||
|
RemoveNames(id string, names []string) error
|
||||||
|
|
||||||
// Delete removes the record of the image.
|
// Delete removes the record of the image.
|
||||||
Delete(id string) error
|
Delete(id string) error
|
||||||
|
|
||||||
@ -505,26 +516,44 @@ func (i *Image) addNameToHistory(name string) {
|
|||||||
i.NamesHistory = dedupeNames(append([]string{name}, i.NamesHistory...))
|
i.NamesHistory = dedupeNames(append([]string{name}, i.NamesHistory...))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deprecated: Prone to race conditions, suggested alternatives are `AddNames` and `RemoveNames`.
|
||||||
func (r *imageStore) SetNames(id string, names []string) error {
|
func (r *imageStore) SetNames(id string, names []string) error {
|
||||||
|
return r.updateNames(id, names, setNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *imageStore) AddNames(id string, names []string) error {
|
||||||
|
return r.updateNames(id, names, addNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *imageStore) RemoveNames(id string, names []string) error {
|
||||||
|
return r.updateNames(id, names, removeNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *imageStore) updateNames(id string, names []string, op updateNameOperation) error {
|
||||||
if !r.IsReadWrite() {
|
if !r.IsReadWrite() {
|
||||||
return errors.Wrapf(ErrStoreIsReadOnly, "not allowed to change image name assignments at %q", r.imagespath())
|
return errors.Wrapf(ErrStoreIsReadOnly, "not allowed to change image name assignments at %q", r.imagespath())
|
||||||
}
|
}
|
||||||
names = dedupeNames(names)
|
image, ok := r.lookup(id)
|
||||||
if image, ok := r.lookup(id); ok {
|
if !ok {
|
||||||
for _, name := range image.Names {
|
return errors.Wrapf(ErrImageUnknown, "error locating image with ID %q", id)
|
||||||
delete(r.byname, name)
|
|
||||||
}
|
|
||||||
for _, name := range names {
|
|
||||||
if otherImage, ok := r.byname[name]; ok {
|
|
||||||
r.removeName(otherImage, name)
|
|
||||||
}
|
|
||||||
r.byname[name] = image
|
|
||||||
image.addNameToHistory(name)
|
|
||||||
}
|
|
||||||
image.Names = names
|
|
||||||
return r.Save()
|
|
||||||
}
|
}
|
||||||
return errors.Wrapf(ErrImageUnknown, "error locating image with ID %q", id)
|
oldNames := image.Names
|
||||||
|
names, err := applyNameOperation(oldNames, names, op)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, name := range oldNames {
|
||||||
|
delete(r.byname, name)
|
||||||
|
}
|
||||||
|
for _, name := range names {
|
||||||
|
if otherImage, ok := r.byname[name]; ok {
|
||||||
|
r.removeName(otherImage, name)
|
||||||
|
}
|
||||||
|
r.byname[name] = image
|
||||||
|
image.addNameToHistory(name)
|
||||||
|
}
|
||||||
|
image.Names = names
|
||||||
|
return r.Save()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *imageStore) Delete(id string) error {
|
func (r *imageStore) Delete(id string) error {
|
||||||
|
55
vendor/github.com/containers/storage/layers.go
generated
vendored
55
vendor/github.com/containers/storage/layers.go
generated
vendored
@ -221,8 +221,17 @@ type LayerStore interface {
|
|||||||
|
|
||||||
// SetNames replaces the list of names associated with a layer with the
|
// SetNames replaces the list of names associated with a layer with the
|
||||||
// supplied values.
|
// supplied values.
|
||||||
|
// Deprecated: Prone to race conditions, suggested alternatives are `AddNames` and `RemoveNames`.
|
||||||
SetNames(id string, names []string) error
|
SetNames(id string, names []string) error
|
||||||
|
|
||||||
|
// AddNames adds the supplied values to the list of names associated with the layer with the
|
||||||
|
// specified id.
|
||||||
|
AddNames(id string, names []string) error
|
||||||
|
|
||||||
|
// RemoveNames remove the supplied values from the list of names associated with the layer with the
|
||||||
|
// specified id.
|
||||||
|
RemoveNames(id string, names []string) error
|
||||||
|
|
||||||
// Delete deletes a layer with the specified name or ID.
|
// Delete deletes a layer with the specified name or ID.
|
||||||
Delete(id string) error
|
Delete(id string) error
|
||||||
|
|
||||||
@ -1040,25 +1049,43 @@ func (r *layerStore) removeName(layer *Layer, name string) {
|
|||||||
layer.Names = stringSliceWithoutValue(layer.Names, name)
|
layer.Names = stringSliceWithoutValue(layer.Names, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deprecated: Prone to race conditions, suggested alternatives are `AddNames` and `RemoveNames`.
|
||||||
func (r *layerStore) SetNames(id string, names []string) error {
|
func (r *layerStore) SetNames(id string, names []string) error {
|
||||||
|
return r.updateNames(id, names, setNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *layerStore) AddNames(id string, names []string) error {
|
||||||
|
return r.updateNames(id, names, addNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *layerStore) RemoveNames(id string, names []string) error {
|
||||||
|
return r.updateNames(id, names, removeNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *layerStore) updateNames(id string, names []string, op updateNameOperation) error {
|
||||||
if !r.IsReadWrite() {
|
if !r.IsReadWrite() {
|
||||||
return errors.Wrapf(ErrStoreIsReadOnly, "not allowed to change layer name assignments at %q", r.layerspath())
|
return errors.Wrapf(ErrStoreIsReadOnly, "not allowed to change layer name assignments at %q", r.layerspath())
|
||||||
}
|
}
|
||||||
names = dedupeNames(names)
|
layer, ok := r.lookup(id)
|
||||||
if layer, ok := r.lookup(id); ok {
|
if !ok {
|
||||||
for _, name := range layer.Names {
|
return ErrLayerUnknown
|
||||||
delete(r.byname, name)
|
|
||||||
}
|
|
||||||
for _, name := range names {
|
|
||||||
if otherLayer, ok := r.byname[name]; ok {
|
|
||||||
r.removeName(otherLayer, name)
|
|
||||||
}
|
|
||||||
r.byname[name] = layer
|
|
||||||
}
|
|
||||||
layer.Names = names
|
|
||||||
return r.Save()
|
|
||||||
}
|
}
|
||||||
return ErrLayerUnknown
|
oldNames := layer.Names
|
||||||
|
names, err := applyNameOperation(oldNames, names, op)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, name := range oldNames {
|
||||||
|
delete(r.byname, name)
|
||||||
|
}
|
||||||
|
for _, name := range names {
|
||||||
|
if otherLayer, ok := r.byname[name]; ok {
|
||||||
|
r.removeName(otherLayer, name)
|
||||||
|
}
|
||||||
|
r.byname[name] = layer
|
||||||
|
}
|
||||||
|
layer.Names = names
|
||||||
|
return r.Save()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *layerStore) datadir(id string) string {
|
func (r *layerStore) datadir(id string) string {
|
||||||
|
63
vendor/github.com/containers/storage/store.go
generated
vendored
63
vendor/github.com/containers/storage/store.go
generated
vendored
@ -31,6 +31,14 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type updateNameOperation int
|
||||||
|
|
||||||
|
const (
|
||||||
|
setNames updateNameOperation = iota
|
||||||
|
addNames
|
||||||
|
removeNames
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
stores []*store
|
stores []*store
|
||||||
storesLock sync.Mutex
|
storesLock sync.Mutex
|
||||||
@ -368,8 +376,17 @@ type Store interface {
|
|||||||
|
|
||||||
// SetNames changes the list of names for a layer, image, or container.
|
// SetNames changes the list of names for a layer, image, or container.
|
||||||
// Duplicate names are removed from the list automatically.
|
// Duplicate names are removed from the list automatically.
|
||||||
|
// Deprecated: Prone to race conditions, suggested alternatives are `AddNames` and `RemoveNames`.
|
||||||
SetNames(id string, names []string) error
|
SetNames(id string, names []string) error
|
||||||
|
|
||||||
|
// AddNames adds the list of names for a layer, image, or container.
|
||||||
|
// Duplicate names are removed from the list automatically.
|
||||||
|
AddNames(id string, names []string) error
|
||||||
|
|
||||||
|
// RemoveNames removes the list of names for a layer, image, or container.
|
||||||
|
// Duplicate names are removed from the list automatically.
|
||||||
|
RemoveNames(id string, names []string) error
|
||||||
|
|
||||||
// ListImageBigData retrieves a list of the (possibly large) chunks of
|
// ListImageBigData retrieves a list of the (possibly large) chunks of
|
||||||
// named data associated with an image.
|
// named data associated with an image.
|
||||||
ListImageBigData(id string) ([]string, error)
|
ListImageBigData(id string) ([]string, error)
|
||||||
@ -2050,7 +2067,20 @@ func dedupeNames(names []string) []string {
|
|||||||
return deduped
|
return deduped
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deprecated: Prone to race conditions, suggested alternatives are `AddNames` and `RemoveNames`.
|
||||||
func (s *store) SetNames(id string, names []string) error {
|
func (s *store) SetNames(id string, names []string) error {
|
||||||
|
return s.updateNames(id, names, setNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *store) AddNames(id string, names []string) error {
|
||||||
|
return s.updateNames(id, names, addNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *store) RemoveNames(id string, names []string) error {
|
||||||
|
return s.updateNames(id, names, removeNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *store) updateNames(id string, names []string, op updateNameOperation) error {
|
||||||
deduped := dedupeNames(names)
|
deduped := dedupeNames(names)
|
||||||
|
|
||||||
rlstore, err := s.LayerStore()
|
rlstore, err := s.LayerStore()
|
||||||
@ -2063,7 +2093,16 @@ func (s *store) SetNames(id string, names []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if rlstore.Exists(id) {
|
if rlstore.Exists(id) {
|
||||||
return rlstore.SetNames(id, deduped)
|
switch op {
|
||||||
|
case setNames:
|
||||||
|
return rlstore.SetNames(id, deduped)
|
||||||
|
case removeNames:
|
||||||
|
return rlstore.RemoveNames(id, deduped)
|
||||||
|
case addNames:
|
||||||
|
return rlstore.AddNames(id, deduped)
|
||||||
|
default:
|
||||||
|
return errInvalidUpdateNameOperation
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ristore, err := s.ImageStore()
|
ristore, err := s.ImageStore()
|
||||||
@ -2076,7 +2115,16 @@ func (s *store) SetNames(id string, names []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if ristore.Exists(id) {
|
if ristore.Exists(id) {
|
||||||
return ristore.SetNames(id, deduped)
|
switch op {
|
||||||
|
case setNames:
|
||||||
|
return ristore.SetNames(id, deduped)
|
||||||
|
case removeNames:
|
||||||
|
return ristore.RemoveNames(id, deduped)
|
||||||
|
case addNames:
|
||||||
|
return ristore.AddNames(id, deduped)
|
||||||
|
default:
|
||||||
|
return errInvalidUpdateNameOperation
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check is id refers to a RO Store
|
// Check is id refers to a RO Store
|
||||||
@ -2114,7 +2162,16 @@ func (s *store) SetNames(id string, names []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if rcstore.Exists(id) {
|
if rcstore.Exists(id) {
|
||||||
return rcstore.SetNames(id, deduped)
|
switch op {
|
||||||
|
case setNames:
|
||||||
|
return rcstore.SetNames(id, deduped)
|
||||||
|
case removeNames:
|
||||||
|
return rcstore.RemoveNames(id, deduped)
|
||||||
|
case addNames:
|
||||||
|
return rcstore.AddNames(id, deduped)
|
||||||
|
default:
|
||||||
|
return errInvalidUpdateNameOperation
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ErrLayerUnknown
|
return ErrLayerUnknown
|
||||||
}
|
}
|
||||||
|
32
vendor/github.com/containers/storage/utils.go
generated
vendored
32
vendor/github.com/containers/storage/utils.go
generated
vendored
@ -40,3 +40,35 @@ func validateMountOptions(mountOptions []string) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func applyNameOperation(oldNames []string, opParameters []string, op updateNameOperation) ([]string, error) {
|
||||||
|
result := make([]string, 0)
|
||||||
|
switch op {
|
||||||
|
case setNames:
|
||||||
|
// ignore all old names and just return new names
|
||||||
|
return dedupeNames(opParameters), nil
|
||||||
|
case removeNames:
|
||||||
|
// remove given names from old names
|
||||||
|
for _, name := range oldNames {
|
||||||
|
// only keep names in final result which do not intersect with input names
|
||||||
|
// basically `result = oldNames - opParameters`
|
||||||
|
nameShouldBeRemoved := false
|
||||||
|
for _, opName := range opParameters {
|
||||||
|
if name == opName {
|
||||||
|
nameShouldBeRemoved = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !nameShouldBeRemoved {
|
||||||
|
result = append(result, name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dedupeNames(result), nil
|
||||||
|
case addNames:
|
||||||
|
result = append(result, opParameters...)
|
||||||
|
result = append(result, oldNames...)
|
||||||
|
return dedupeNames(result), nil
|
||||||
|
default:
|
||||||
|
return result, errInvalidUpdateNameOperation
|
||||||
|
}
|
||||||
|
return dedupeNames(result), nil
|
||||||
|
}
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -232,7 +232,7 @@ github.com/containers/psgo/internal/dev
|
|||||||
github.com/containers/psgo/internal/host
|
github.com/containers/psgo/internal/host
|
||||||
github.com/containers/psgo/internal/proc
|
github.com/containers/psgo/internal/proc
|
||||||
github.com/containers/psgo/internal/process
|
github.com/containers/psgo/internal/process
|
||||||
# github.com/containers/storage v1.38.3-0.20220228132533-ebc90aba7d29
|
# github.com/containers/storage v1.38.3-0.20220301151551-d06b0f81c0aa
|
||||||
## explicit
|
## explicit
|
||||||
github.com/containers/storage
|
github.com/containers/storage
|
||||||
github.com/containers/storage/drivers
|
github.com/containers/storage/drivers
|
||||||
|
Reference in New Issue
Block a user