mirror of
https://github.com/containers/podman.git
synced 2025-10-16 10:43:52 +08:00
Create non-existing named volumes at container create
Replaces old functionality we used for handling image volumes. Signed-off-by: Matthew Heon <matthew.heon@pm.me>
This commit is contained in:
@ -1265,14 +1265,11 @@ func WithNamedVolumes(volumes []*ContainerNamedVolume) CtrCreateOption {
|
||||
destinations := make(map[string]bool)
|
||||
|
||||
for _, vol := range volumes {
|
||||
// First check if libpod has the volumes
|
||||
_, err := ctr.runtime.GetVolume(vol.Name)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error retrieving volume %s to add to container", vol.Name)
|
||||
}
|
||||
// Don't check if they already exist.
|
||||
// If they don't we will automatically create them.
|
||||
|
||||
if _, ok := destinations[vol.Dest]; ok {
|
||||
return errors.Wrapf(err, "two volumes found with destination %s", vol.Dest)
|
||||
return errors.Wrapf(ErrInvalidArg, "two volumes found with destination %s", vol.Dest)
|
||||
}
|
||||
destinations[vol.Dest] = true
|
||||
|
||||
@ -1306,28 +1303,6 @@ func WithVolumeName(name string) VolumeCreateOption {
|
||||
}
|
||||
}
|
||||
|
||||
// WithVolumeUID sets the uid of the owner.
|
||||
func WithVolumeUID(uid int) VolumeCreateOption {
|
||||
return func(volume *Volume) error {
|
||||
if volume.valid {
|
||||
return ErrVolumeFinalized
|
||||
}
|
||||
volume.config.UID = uid
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithVolumeGID sets the gid of the owner.
|
||||
func WithVolumeGID(gid int) VolumeCreateOption {
|
||||
return func(volume *Volume) error {
|
||||
if volume.valid {
|
||||
return ErrVolumeFinalized
|
||||
}
|
||||
volume.config.GID = gid
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithVolumeLabels sets the labels of the volume.
|
||||
func WithVolumeLabels(labels map[string]string) VolumeCreateOption {
|
||||
return func(volume *Volume) error {
|
||||
@ -1373,6 +1348,32 @@ func WithVolumeOptions(options map[string]string) VolumeCreateOption {
|
||||
}
|
||||
}
|
||||
|
||||
// WithVolumeUID sets the UID that the volume will be created as.
|
||||
func WithVolumeUID(uid int) VolumeCreateOption {
|
||||
return func(volume *Volume) error {
|
||||
if volume.valid {
|
||||
return ErrVolumeFinalized
|
||||
}
|
||||
|
||||
volume.config.UID = uid
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithVolumeGID sets the GID that the volume will be created as.
|
||||
func WithVolumeGID(gid int) VolumeCreateOption {
|
||||
return func(volume *Volume) error {
|
||||
if volume.valid {
|
||||
return ErrVolumeFinalized
|
||||
}
|
||||
|
||||
volume.config.GID = gid
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// withSetCtrSpecific sets a bool notifying libpod that a volume was created
|
||||
// specifically for a container.
|
||||
// These volumes will be removed when the container is removed and volumes are
|
||||
|
Reference in New Issue
Block a user