mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 22:17:14 +00:00
Change fsGroup to mounterArgs in volume.SetUp() to allow for future extension.
This commit is contained in:
parent
472b9011d5
commit
5b97b2860d
@ -439,11 +439,11 @@ func (f *stubVolume) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *stubVolume) SetUp(fsGroup *int64) error {
|
func (f *stubVolume) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *stubVolume) SetUpAt(dir string, fsGroup *int64) error {
|
func (f *stubVolume) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -382,12 +382,12 @@ func (b *awsElasticBlockStoreMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (b *awsElasticBlockStoreMounter) SetUp(fsGroup *int64) error {
|
func (b *awsElasticBlockStoreMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUpAt attaches the disk and bind mounts to the volume path.
|
// SetUpAt attaches the disk and bind mounts to the volume path.
|
||||||
func (b *awsElasticBlockStoreMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *awsElasticBlockStoreMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
// TODO: handle failed mounts here.
|
// TODO: handle failed mounts here.
|
||||||
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
||||||
klog.V(4).Infof("PersistentDisk set up: %s %v %v", dir, !notMnt, err)
|
klog.V(4).Infof("PersistentDisk set up: %s %v %v", dir, !notMnt, err)
|
||||||
@ -440,7 +440,7 @@ func (b *awsElasticBlockStoreMounter) SetUpAt(dir string, fsGroup *int64) error
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !b.readOnly {
|
if !b.readOnly {
|
||||||
volume.SetVolumeOwnership(b, fsGroup)
|
volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.V(4).Infof("Successfully mounted %s", dir)
|
klog.V(4).Infof("Successfully mounted %s", dir)
|
||||||
|
@ -136,7 +136,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
@ -367,7 +367,7 @@ func TestMountOptions(t *testing.T) {
|
|||||||
t.Errorf("Got a nil Mounter")
|
t.Errorf("Got a nil Mounter")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
mountOptions := fakeMounter.MountPoints[0].Opts
|
mountOptions := fakeMounter.MountPoints[0].Opts
|
||||||
|
@ -62,15 +62,15 @@ func (m *azureDiskMounter) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *azureDiskMounter) SetUp(fsGroup *int64) error {
|
func (m *azureDiskMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return m.SetUpAt(m.GetPath(), fsGroup)
|
return m.SetUpAt(m.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *azureDiskMounter) GetPath() string {
|
func (m *azureDiskMounter) GetPath() string {
|
||||||
return getPath(m.dataDisk.podUID, m.dataDisk.volumeName, m.plugin.host)
|
return getPath(m.dataDisk.podUID, m.dataDisk.volumeName, m.plugin.host)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *azureDiskMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (m *azureDiskMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
mounter := m.plugin.host.GetMounter(m.plugin.GetPluginName())
|
mounter := m.plugin.host.GetMounter(m.plugin.GetPluginName())
|
||||||
volumeSource, _, err := getVolumeSource(m.spec)
|
volumeSource, _, err := getVolumeSource(m.spec)
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ func (m *azureDiskMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if volumeSource.ReadOnly == nil || !*volumeSource.ReadOnly {
|
if volumeSource.ReadOnly == nil || !*volumeSource.ReadOnly {
|
||||||
volume.SetVolumeOwnership(m, fsGroup)
|
volume.SetVolumeOwnership(m, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.V(2).Infof("azureDisk - successfully mounted disk %s on %s", diskName, dir)
|
klog.V(2).Infof("azureDisk - successfully mounted disk %s on %s", diskName, dir)
|
||||||
|
@ -236,11 +236,11 @@ func (b *azureFileMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (b *azureFileMounter) SetUp(fsGroup *int64) error {
|
func (b *azureFileMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *azureFileMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *azureFileMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
||||||
klog.V(4).Infof("AzureFile mount set up: %s %v %v", dir, !notMnt, err)
|
klog.V(4).Infof("AzureFile mount set up: %s %v %v", dir, !notMnt, err)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
@ -283,7 +283,7 @@ func (b *azureFileMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
options = append(options, "ro")
|
options = append(options, "ro")
|
||||||
}
|
}
|
||||||
mountOptions = volutil.JoinMountOptions(b.mountOptions, options)
|
mountOptions = volutil.JoinMountOptions(b.mountOptions, options)
|
||||||
mountOptions = appendDefaultMountOptions(mountOptions, fsGroup)
|
mountOptions = appendDefaultMountOptions(mountOptions, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = b.mounter.Mount(source, dir, "cifs", mountOptions)
|
err = b.mounter.Mount(source, dir, "cifs", mountOptions)
|
||||||
|
@ -155,7 +155,7 @@ func testPlugin(t *testing.T, tmpDir string, volumeHost volume.VolumeHost) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
|
@ -222,12 +222,12 @@ func (cephfsVolume *cephfsMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (cephfsVolume *cephfsMounter) SetUp(fsGroup *int64) error {
|
func (cephfsVolume *cephfsMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return cephfsVolume.SetUpAt(cephfsVolume.GetPath(), fsGroup)
|
return cephfsVolume.SetUpAt(cephfsVolume.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUpAt attaches the disk and bind mounts to the volume path.
|
// SetUpAt attaches the disk and bind mounts to the volume path.
|
||||||
func (cephfsVolume *cephfsMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (cephfsVolume *cephfsMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
notMnt, err := cephfsVolume.mounter.IsLikelyNotMountPoint(dir)
|
notMnt, err := cephfsVolume.mounter.IsLikelyNotMountPoint(dir)
|
||||||
klog.V(4).Infof("CephFS mount set up: %s %v %v", dir, !notMnt, err)
|
klog.V(4).Infof("CephFS mount set up: %s %v %v", dir, !notMnt, err)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
|
@ -87,7 +87,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
if volumePath != volpath {
|
if volumePath != volpath {
|
||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(volumePath); err != nil {
|
if _, err := os.Stat(volumePath); err != nil {
|
||||||
|
@ -377,12 +377,12 @@ func (b *cinderVolumeMounter) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *cinderVolumeMounter) SetUp(fsGroup *int64) error {
|
func (b *cinderVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUp bind mounts to the volume path.
|
// SetUp bind mounts to the volume path.
|
||||||
func (b *cinderVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *cinderVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
klog.V(5).Infof("Cinder SetUp %s to %s", b.pdName, dir)
|
klog.V(5).Infof("Cinder SetUp %s to %s", b.pdName, dir)
|
||||||
|
|
||||||
b.plugin.volumeLocks.LockKey(b.pdName)
|
b.plugin.volumeLocks.LockKey(b.pdName)
|
||||||
@ -442,7 +442,7 @@ func (b *cinderVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !b.readOnly {
|
if !b.readOnly {
|
||||||
volume.SetVolumeOwnership(b, fsGroup)
|
volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
klog.V(3).Infof("Cinder volume %s mounted to %s", b.pdName, dir)
|
klog.V(3).Infof("Cinder volume %s mounted to %s", b.pdName, dir)
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
|
@ -183,11 +183,11 @@ func (b *configMapVolumeMounter) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *configMapVolumeMounter) SetUp(fsGroup *int64) error {
|
func (b *configMapVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *configMapVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *configMapVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
klog.V(3).Infof("Setting up volume %v for pod %v at %v", b.volName, b.pod.UID, dir)
|
klog.V(3).Infof("Setting up volume %v for pod %v at %v", b.volName, b.pod.UID, dir)
|
||||||
|
|
||||||
// Wrap EmptyDir, let it do the setup.
|
// Wrap EmptyDir, let it do the setup.
|
||||||
@ -224,7 +224,7 @@ func (b *configMapVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setupSuccess := false
|
setupSuccess := false
|
||||||
if err := wrapped.SetUpAt(dir, fsGroup); err != nil {
|
if err := wrapped.SetUpAt(dir, mounterArgs); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := volumeutil.MakeNestedMountpoints(b.volName, dir, b.pod); err != nil {
|
if err := volumeutil.MakeNestedMountpoints(b.volName, dir, b.pod); err != nil {
|
||||||
@ -259,9 +259,9 @@ func (b *configMapVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = volume.SetVolumeOwnership(b, fsGroup)
|
err = volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Error applying volume ownership settings for group: %v", fsGroup)
|
klog.Errorf("Error applying volume ownership settings for group: %v", mounterArgs.FsGroup)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
setupSuccess = true
|
setupSuccess = true
|
||||||
|
@ -365,8 +365,10 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
fsGroup := int64(1001)
|
var mounterArgs volume.MounterArgs
|
||||||
err = mounter.SetUp(&fsGroup)
|
group := int64(1001)
|
||||||
|
mounterArgs.FsGroup = &group
|
||||||
|
err = mounter.SetUp(mounterArgs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -423,8 +425,10 @@ func TestPluginReboot(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
fsGroup := int64(1001)
|
var mounterArgs volume.MounterArgs
|
||||||
err = mounter.SetUp(&fsGroup)
|
group := int64(1001)
|
||||||
|
mounterArgs.FsGroup = &group
|
||||||
|
err = mounter.SetUp(mounterArgs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -485,8 +489,10 @@ func TestPluginOptional(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
fsGroup := int64(1001)
|
var mounterArgs volume.MounterArgs
|
||||||
err = mounter.SetUp(&fsGroup)
|
group := int64(1001)
|
||||||
|
mounterArgs.FsGroup = &group
|
||||||
|
err = mounter.SetUp(mounterArgs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -582,8 +588,10 @@ func TestPluginKeysOptional(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
fsGroup := int64(1001)
|
var mounterArgs volume.MounterArgs
|
||||||
err = mounter.SetUp(&fsGroup)
|
group := int64(1001)
|
||||||
|
mounterArgs.FsGroup = &group
|
||||||
|
err = mounter.SetUp(mounterArgs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -660,8 +668,10 @@ func TestInvalidConfigMapSetup(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
fsGroup := int64(1001)
|
var mounterArgs volume.MounterArgs
|
||||||
err = mounter.SetUp(&fsGroup)
|
group := int64(1001)
|
||||||
|
mounterArgs.FsGroup = &group
|
||||||
|
err = mounter.SetUp(mounterArgs)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Expected setup to fail")
|
t.Errorf("Expected setup to fail")
|
||||||
}
|
}
|
||||||
|
@ -93,11 +93,11 @@ func (c *csiMountMgr) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *csiMountMgr) SetUp(fsGroup *int64) error {
|
func (c *csiMountMgr) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return c.SetUpAt(c.GetPath(), fsGroup)
|
return c.SetUpAt(c.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *csiMountMgr) SetUpAt(dir string, fsGroup *int64) error {
|
func (c *csiMountMgr) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
klog.V(4).Infof(log("Mounter.SetUpAt(%s)", dir))
|
klog.V(4).Infof(log("Mounter.SetUpAt(%s)", dir))
|
||||||
|
|
||||||
mounted, err := isDirMounted(c.plugin, dir)
|
mounted, err := isDirMounted(c.plugin, dir)
|
||||||
@ -268,7 +268,7 @@ func (c *csiMountMgr) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
// if fstype is "", then skip fsgroup (could be indication of non-block filesystem)
|
// if fstype is "", then skip fsgroup (could be indication of non-block filesystem)
|
||||||
// if fstype is provided and pv.AccessMode == ReadWriteOnly, then apply fsgroup
|
// if fstype is provided and pv.AccessMode == ReadWriteOnly, then apply fsgroup
|
||||||
|
|
||||||
err = c.applyFSGroup(fsType, fsGroup)
|
err = c.applyFSGroup(fsType, mounterArgs.FsGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// attempt to rollback mount.
|
// attempt to rollback mount.
|
||||||
fsGrpErr := fmt.Errorf("applyFSGroup failed for vol %s: %v", c.volumeID, err)
|
fsGrpErr := fmt.Errorf("applyFSGroup failed for vol %s: %v", c.volumeID, err)
|
||||||
|
@ -203,8 +203,10 @@ func MounterSetUpTests(t *testing.T, podInfoEnabled bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Mounter.SetUp()
|
// Mounter.SetUp()
|
||||||
|
var mounterArgs volume.MounterArgs
|
||||||
fsGroup := int64(2000)
|
fsGroup := int64(2000)
|
||||||
if err := csiMounter.SetUp(&fsGroup); err != nil {
|
mounterArgs.FsGroup = &fsGroup
|
||||||
|
if err := csiMounter.SetUp(mounterArgs); err != nil {
|
||||||
t.Fatalf("mounter.Setup failed: %v", err)
|
t.Fatalf("mounter.Setup failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,7 +346,7 @@ func TestMounterSetUpSimple(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Mounter.SetUp()
|
// Mounter.SetUp()
|
||||||
if err := csiMounter.SetUp(nil); err != nil {
|
if err := csiMounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Fatalf("mounter.Setup failed: %v", err)
|
t.Fatalf("mounter.Setup failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -475,7 +477,7 @@ func TestMounterSetUpWithInline(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Mounter.SetUp()
|
// Mounter.SetUp()
|
||||||
if err := csiMounter.SetUp(nil); err != nil {
|
if err := csiMounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Fatalf("mounter.Setup failed: %v", err)
|
t.Fatalf("mounter.Setup failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -621,12 +623,14 @@ func TestMounterSetUpWithFSGroup(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Mounter.SetUp()
|
// Mounter.SetUp()
|
||||||
|
var mounterArgs volume.MounterArgs
|
||||||
var fsGroupPtr *int64
|
var fsGroupPtr *int64
|
||||||
if tc.setFsGroup {
|
if tc.setFsGroup {
|
||||||
fsGroup := tc.fsGroup
|
fsGroup := tc.fsGroup
|
||||||
fsGroupPtr = &fsGroup
|
fsGroupPtr = &fsGroup
|
||||||
}
|
}
|
||||||
if err := csiMounter.SetUp(fsGroupPtr); err != nil {
|
mounterArgs.FsGroup = fsGroupPtr
|
||||||
|
if err := csiMounter.SetUp(mounterArgs); err != nil {
|
||||||
t.Fatalf("mounter.Setup failed: %v", err)
|
t.Fatalf("mounter.Setup failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,7 +268,9 @@ func TestCSI_VolumeAll(t *testing.T) {
|
|||||||
|
|
||||||
csiMounter := mounter.(*csiMountMgr)
|
csiMounter := mounter.(*csiMountMgr)
|
||||||
csiMounter.csiClient = csiClient
|
csiMounter.csiClient = csiClient
|
||||||
if err := csiMounter.SetUp(fsGroup); err != nil {
|
var mounterArgs volume.MounterArgs
|
||||||
|
mounterArgs.FsGroup = fsGroup
|
||||||
|
if err := csiMounter.SetUp(mounterArgs); err != nil {
|
||||||
t.Fatalf("csiTest.VolumeAll mounter.Setup(fsGroup) failed: %s", err)
|
t.Fatalf("csiTest.VolumeAll mounter.Setup(fsGroup) failed: %s", err)
|
||||||
}
|
}
|
||||||
t.Log("csiTest.VolumeAll mounter.Setup(fsGroup) done OK")
|
t.Log("csiTest.VolumeAll mounter.Setup(fsGroup) done OK")
|
||||||
|
@ -174,11 +174,11 @@ func (b *downwardAPIVolumeMounter) CanMount() error {
|
|||||||
// This function is not idempotent by design. We want the data to be refreshed periodically.
|
// This function is not idempotent by design. We want the data to be refreshed periodically.
|
||||||
// The internal sync interval of kubelet will drive the refresh of data.
|
// The internal sync interval of kubelet will drive the refresh of data.
|
||||||
// TODO: Add volume specific ticker and refresh loop
|
// TODO: Add volume specific ticker and refresh loop
|
||||||
func (b *downwardAPIVolumeMounter) SetUp(fsGroup *int64) error {
|
func (b *downwardAPIVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *downwardAPIVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *downwardAPIVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
klog.V(3).Infof("Setting up a downwardAPI volume %v for pod %v/%v at %v", b.volName, b.pod.Namespace, b.pod.Name, dir)
|
klog.V(3).Infof("Setting up a downwardAPI volume %v for pod %v/%v at %v", b.volName, b.pod.Namespace, b.pod.Name, dir)
|
||||||
// Wrap EmptyDir. Here we rely on the idempotency of the wrapped plugin to avoid repeatedly mounting
|
// Wrap EmptyDir. Here we rely on the idempotency of the wrapped plugin to avoid repeatedly mounting
|
||||||
wrapped, err := b.plugin.host.NewWrapperMounter(b.volName, wrappedVolumeSpec(), b.pod, *b.opts)
|
wrapped, err := b.plugin.host.NewWrapperMounter(b.volName, wrappedVolumeSpec(), b.pod, *b.opts)
|
||||||
@ -194,7 +194,7 @@ func (b *downwardAPIVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setupSuccess := false
|
setupSuccess := false
|
||||||
if err := wrapped.SetUpAt(dir, fsGroup); err != nil {
|
if err := wrapped.SetUpAt(dir, mounterArgs); err != nil {
|
||||||
klog.Errorf("Unable to setup downwardAPI volume %v for pod %v/%v: %s", b.volName, b.pod.Namespace, b.pod.Name, err.Error())
|
klog.Errorf("Unable to setup downwardAPI volume %v for pod %v/%v: %s", b.volName, b.pod.Namespace, b.pod.Name, err.Error())
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -231,9 +231,9 @@ func (b *downwardAPIVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = volume.SetVolumeOwnership(b, fsGroup)
|
err = volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Error applying volume ownership settings for group: %v", fsGroup)
|
klog.Errorf("Error applying volume ownership settings for group: %v", mounterArgs.FsGroup)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,7 +253,7 @@ func newDownwardAPITest(t *testing.T, name string, volumeFiles, podLabels, podAn
|
|||||||
|
|
||||||
volumePath := mounter.GetPath()
|
volumePath := mounter.GetPath()
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -380,7 +380,7 @@ func (step reSetUp) run(test *downwardAPITest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// now re-run Setup
|
// now re-run Setup
|
||||||
if err = test.mounter.SetUp(nil); err != nil {
|
if err = test.mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
test.t.Errorf("Failed to re-setup volume: %v", err)
|
test.t.Errorf("Failed to re-setup volume: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,12 +193,12 @@ func (ed *emptyDir) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp creates new directory.
|
// SetUp creates new directory.
|
||||||
func (ed *emptyDir) SetUp(fsGroup *int64) error {
|
func (ed *emptyDir) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return ed.SetUpAt(ed.GetPath(), fsGroup)
|
return ed.SetUpAt(ed.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUpAt creates new directory.
|
// SetUpAt creates new directory.
|
||||||
func (ed *emptyDir) SetUpAt(dir string, fsGroup *int64) error {
|
func (ed *emptyDir) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
notMnt, err := ed.mounter.IsLikelyNotMountPoint(dir)
|
notMnt, err := ed.mounter.IsLikelyNotMountPoint(dir)
|
||||||
// Getting an os.IsNotExist err from is a contingency; the directory
|
// Getting an os.IsNotExist err from is a contingency; the directory
|
||||||
// may not exist yet, in which case, setup should run.
|
// may not exist yet, in which case, setup should run.
|
||||||
@ -229,7 +229,7 @@ func (ed *emptyDir) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
err = fmt.Errorf("unknown storage medium %q", ed.medium)
|
err = fmt.Errorf("unknown storage medium %q", ed.medium)
|
||||||
}
|
}
|
||||||
|
|
||||||
volume.SetVolumeOwnership(ed, fsGroup)
|
volume.SetVolumeOwnership(ed, mounterArgs.FsGroup)
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
volumeutil.SetReady(ed.getMetaDir())
|
volumeutil.SetReady(ed.getMetaDir())
|
||||||
|
@ -163,7 +163,7 @@ func doTestPlugin(t *testing.T, config pluginTestConfig) {
|
|||||||
t.Errorf("Got unexpected path: %s", volPath)
|
t.Errorf("Got unexpected path: %s", volPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,13 +371,13 @@ func (b *fcDiskMounter) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *fcDiskMounter) SetUp(fsGroup *int64) error {
|
func (b *fcDiskMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *fcDiskMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *fcDiskMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
// diskSetUp checks mountpoints and prevent repeated calls
|
// diskSetUp checks mountpoints and prevent repeated calls
|
||||||
err := diskSetUp(b.manager, *b, dir, b.mounter, fsGroup)
|
err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("fc: failed to setup")
|
klog.Errorf("fc: failed to setup")
|
||||||
}
|
}
|
||||||
|
@ -179,7 +179,7 @@ func doTestPlugin(t *testing.T, spec *volume.Spec) {
|
|||||||
t.Errorf("Unexpected path, expected %q, got: %q", expectedPath, path)
|
t.Errorf("Unexpected path, expected %q, got: %q", expectedPath, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
|
@ -51,7 +51,7 @@ const (
|
|||||||
optionFSType = "kubernetes.io/fsType"
|
optionFSType = "kubernetes.io/fsType"
|
||||||
optionReadWrite = "kubernetes.io/readwrite"
|
optionReadWrite = "kubernetes.io/readwrite"
|
||||||
optionKeySecret = "kubernetes.io/secret"
|
optionKeySecret = "kubernetes.io/secret"
|
||||||
optionFSGroup = "kubernetes.io/fsGroup"
|
optionFSGroup = "kubernetes.io/mounterArgs.FsGroup"
|
||||||
optionMountsDir = "kubernetes.io/mountsDir"
|
optionMountsDir = "kubernetes.io/mountsDir"
|
||||||
optionPVorVolumeName = "kubernetes.io/pvOrVolumeName"
|
optionPVorVolumeName = "kubernetes.io/pvOrVolumeName"
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ type mounterDefaults flexVolumeMounter
|
|||||||
|
|
||||||
// SetUpAt is part of the volume.Mounter interface.
|
// SetUpAt is part of the volume.Mounter interface.
|
||||||
// This implementation relies on the attacher's device mount path and does a bind mount to dir.
|
// This implementation relies on the attacher's device mount path and does a bind mount to dir.
|
||||||
func (f *mounterDefaults) SetUpAt(dir string, fsGroup *int64) error {
|
func (f *mounterDefaults) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
klog.Warning(logPrefix(f.plugin), "using default SetUpAt to ", dir)
|
klog.Warning(logPrefix(f.plugin), "using default SetUpAt to ", dir)
|
||||||
|
|
||||||
src, err := f.plugin.getDeviceMountPath(f.spec)
|
src, err := f.plugin.getDeviceMountPath(f.spec)
|
||||||
|
@ -39,12 +39,12 @@ var _ volume.Mounter = &flexVolumeMounter{}
|
|||||||
// Mounter interface
|
// Mounter interface
|
||||||
|
|
||||||
// SetUp creates new directory.
|
// SetUp creates new directory.
|
||||||
func (f *flexVolumeMounter) SetUp(fsGroup *int64) error {
|
func (f *flexVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return f.SetUpAt(f.GetPath(), fsGroup)
|
return f.SetUpAt(f.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUpAt creates new directory.
|
// SetUpAt creates new directory.
|
||||||
func (f *flexVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (f *flexVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
// Mount only once.
|
// Mount only once.
|
||||||
alreadyMounted, err := prepareForMount(f.mounter, dir)
|
alreadyMounted, err := prepareForMount(f.mounter, dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -75,15 +75,15 @@ func (f *flexVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Implicit parameters
|
// Implicit parameters
|
||||||
if fsGroup != nil {
|
if mounterArgs.FsGroup != nil {
|
||||||
extraOptions[optionFSGroup] = strconv.FormatInt(int64(*fsGroup), 10)
|
extraOptions[optionFSGroup] = strconv.FormatInt(int64(*mounterArgs.FsGroup), 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
call.AppendSpec(f.spec, f.plugin.host, extraOptions)
|
call.AppendSpec(f.spec, f.plugin.host, extraOptions)
|
||||||
|
|
||||||
_, err = call.Run()
|
_, err = call.Run()
|
||||||
if isCmdNotSupportedErr(err) {
|
if isCmdNotSupportedErr(err) {
|
||||||
err = (*mounterDefaults)(f).SetUpAt(dir, fsGroup)
|
err = (*mounterDefaults)(f).SetUpAt(dir, mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -93,7 +93,7 @@ func (f *flexVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
|
|
||||||
if !f.readOnly {
|
if !f.readOnly {
|
||||||
if f.plugin.capabilities.FSGroup {
|
if f.plugin.capabilities.FSGroup {
|
||||||
volume.SetVolumeOwnership(f, fsGroup)
|
volume.SetVolumeOwnership(f, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util/mount"
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
"k8s.io/kubernetes/test/utils/harness"
|
"k8s.io/kubernetes/test/utils/harness"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -46,7 +47,7 @@ func TestSetUpAt(tt *testing.T) {
|
|||||||
plugin, rootDir := testPlugin(t)
|
plugin, rootDir := testPlugin(t)
|
||||||
plugin.unsupportedCommands = []string{"unsupportedCmd"}
|
plugin.unsupportedCommands = []string{"unsupportedCmd"}
|
||||||
plugin.runner = fakeRunner(
|
plugin.runner = fakeRunner(
|
||||||
// first call without fsGroup
|
// first call without mounterArgs.FsGroup
|
||||||
assertDriverCall(t, successOutput(), mountCmd, rootDir+"/mount-dir",
|
assertDriverCall(t, successOutput(), mountCmd, rootDir+"/mount-dir",
|
||||||
specJSON(plugin, spec, map[string]string{
|
specJSON(plugin, spec, map[string]string{
|
||||||
optionKeyPodName: "my-pod",
|
optionKeyPodName: "my-pod",
|
||||||
@ -55,7 +56,7 @@ func TestSetUpAt(tt *testing.T) {
|
|||||||
optionKeyServiceAccountName: "my-sa",
|
optionKeyServiceAccountName: "my-sa",
|
||||||
})),
|
})),
|
||||||
|
|
||||||
// second test has fsGroup
|
// second test has mounterArgs.FsGroup
|
||||||
assertDriverCall(t, notSupportedOutput(), mountCmd, rootDir+"/mount-dir",
|
assertDriverCall(t, notSupportedOutput(), mountCmd, rootDir+"/mount-dir",
|
||||||
specJSON(plugin, spec, map[string]string{
|
specJSON(plugin, spec, map[string]string{
|
||||||
optionFSGroup: "42",
|
optionFSGroup: "42",
|
||||||
@ -69,8 +70,10 @@ func TestSetUpAt(tt *testing.T) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
m, _ := plugin.newMounterInternal(spec, pod, mounter, plugin.runner)
|
m, _ := plugin.newMounterInternal(spec, pod, mounter, plugin.runner)
|
||||||
m.SetUpAt(rootDir+"/mount-dir", nil)
|
var mounterArgs volume.MounterArgs
|
||||||
|
m.SetUpAt(rootDir+"/mount-dir", mounterArgs)
|
||||||
|
|
||||||
fsGroup := int64(42)
|
group := int64(42)
|
||||||
m.SetUpAt(rootDir+"/mount-dir", &fsGroup)
|
mounterArgs.FsGroup = &group
|
||||||
|
m.SetUpAt(rootDir+"/mount-dir", mounterArgs)
|
||||||
}
|
}
|
||||||
|
@ -235,8 +235,8 @@ func (b *flockerVolumeMounter) GetPath() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp bind mounts the disk global mount to the volume path.
|
// SetUp bind mounts the disk global mount to the volume path.
|
||||||
func (b *flockerVolumeMounter) SetUp(fsGroup *int64) error {
|
func (b *flockerVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// newFlockerClient uses environment variables and pod attributes to return a
|
// newFlockerClient uses environment variables and pod attributes to return a
|
||||||
@ -277,7 +277,7 @@ control service:
|
|||||||
need to update the Primary UUID for this volume.
|
need to update the Primary UUID for this volume.
|
||||||
5. Wait until the Primary UUID was updated or timeout.
|
5. Wait until the Primary UUID was updated or timeout.
|
||||||
*/
|
*/
|
||||||
func (b *flockerVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *flockerVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
var err error
|
var err error
|
||||||
if b.flockerClient == nil {
|
if b.flockerClient == nil {
|
||||||
b.flockerClient, err = b.newFlockerClient()
|
b.flockerClient, err = b.newFlockerClient()
|
||||||
@ -365,7 +365,7 @@ func (b *flockerVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !b.readOnly {
|
if !b.readOnly {
|
||||||
volume.SetVolumeOwnership(b, fsGroup)
|
volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.V(4).Infof("successfully mounted %s", dir)
|
klog.V(4).Infof("successfully mounted %s", dir)
|
||||||
|
@ -354,12 +354,12 @@ func (b *gcePersistentDiskMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp bind mounts the disk global mount to the volume path.
|
// SetUp bind mounts the disk global mount to the volume path.
|
||||||
func (b *gcePersistentDiskMounter) SetUp(fsGroup *int64) error {
|
func (b *gcePersistentDiskMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUp bind mounts the disk global mount to the give volume path.
|
// SetUp bind mounts the disk global mount to the give volume path.
|
||||||
func (b *gcePersistentDiskMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *gcePersistentDiskMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
// TODO: handle failed mounts here.
|
// TODO: handle failed mounts here.
|
||||||
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
||||||
klog.V(4).Infof("GCE PersistentDisk set up: Dir (%s) PD name (%q) Mounted (%t) Error (%v), ReadOnly (%t)", dir, b.pdName, !notMnt, err, b.readOnly)
|
klog.V(4).Infof("GCE PersistentDisk set up: Dir (%s) PD name (%q) Mounted (%t) Error (%v), ReadOnly (%t)", dir, b.pdName, !notMnt, err, b.readOnly)
|
||||||
@ -419,7 +419,7 @@ func (b *gcePersistentDiskMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !b.readOnly {
|
if !b.readOnly {
|
||||||
volume.SetVolumeOwnership(b, fsGroup)
|
volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.V(4).Infof("Successfully mounted %s", dir)
|
klog.V(4).Infof("Successfully mounted %s", dir)
|
||||||
|
@ -141,7 +141,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
@ -279,7 +279,7 @@ func TestMountOptions(t *testing.T) {
|
|||||||
t.Errorf("Got a nil Mounter")
|
t.Errorf("Got a nil Mounter")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
mountOptions := fakeMounter.MountPoints[0].Opts
|
mountOptions := fakeMounter.MountPoints[0].Opts
|
||||||
|
@ -179,12 +179,12 @@ func (b *gitRepoVolumeMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp creates new directory and clones a git repo.
|
// SetUp creates new directory and clones a git repo.
|
||||||
func (b *gitRepoVolumeMounter) SetUp(fsGroup *int64) error {
|
func (b *gitRepoVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUpAt creates new directory and clones a git repo.
|
// SetUpAt creates new directory and clones a git repo.
|
||||||
func (b *gitRepoVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *gitRepoVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
if volumeutil.IsReady(b.getMetaDir()) {
|
if volumeutil.IsReady(b.getMetaDir()) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -194,7 +194,7 @@ func (b *gitRepoVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := wrapped.SetUpAt(dir, fsGroup); err != nil {
|
if err := wrapped.SetUpAt(dir, mounterArgs); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,7 +240,7 @@ func (b *gitRepoVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
return fmt.Errorf("failed to exec 'git reset --hard': %s: %v", output, err)
|
return fmt.Errorf("failed to exec 'git reset --hard': %s: %v", output, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
volume.SetVolumeOwnership(b, fsGroup)
|
volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
|
|
||||||
volumeutil.SetReady(b.getMetaDir())
|
volumeutil.SetReady(b.getMetaDir())
|
||||||
return nil
|
return nil
|
||||||
|
@ -422,7 +422,7 @@ func doTestSetUp(scenario struct {
|
|||||||
g := mounter.(*gitRepoVolumeMounter)
|
g := mounter.(*gitRepoVolumeMounter)
|
||||||
g.exec = &fake
|
g.exec = &fake
|
||||||
|
|
||||||
g.SetUp(nil)
|
g.SetUp(volume.MounterArgs{})
|
||||||
|
|
||||||
if fake.CommandCalls != len(expecteds) {
|
if fake.CommandCalls != len(expecteds) {
|
||||||
allErrs = append(allErrs,
|
allErrs = append(allErrs,
|
||||||
|
@ -275,11 +275,11 @@ func (b *glusterfsMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (b *glusterfsMounter) SetUp(fsGroup *int64) error {
|
func (b *glusterfsMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *glusterfsMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *glusterfsMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
||||||
klog.V(4).Infof("mount setup: %s %v %v", dir, !notMnt, err)
|
klog.V(4).Infof("mount setup: %s %v %v", dir, !notMnt, err)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
|
@ -118,7 +118,7 @@ func doTestPlugin(t *testing.T, spec *volume.Spec) {
|
|||||||
if volumePath != expectedPath {
|
if volumePath != expectedPath {
|
||||||
t.Errorf("Unexpected path, expected %q, got: %q", expectedPath, volumePath)
|
t.Errorf("Unexpected path, expected %q, got: %q", expectedPath, volumePath)
|
||||||
}
|
}
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(volumePath); err != nil {
|
if _, err := os.Stat(volumePath); err != nil {
|
||||||
|
@ -222,7 +222,7 @@ func (b *hostPathMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp does nothing.
|
// SetUp does nothing.
|
||||||
func (b *hostPathMounter) SetUp(fsGroup *int64) error {
|
func (b *hostPathMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
err := validation.ValidatePathNoBacksteps(b.GetPath())
|
err := validation.ValidatePathNoBacksteps(b.GetPath())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid HostPath `%s`: %v", b.GetPath(), err)
|
return fmt.Errorf("invalid HostPath `%s`: %v", b.GetPath(), err)
|
||||||
@ -235,7 +235,7 @@ func (b *hostPathMounter) SetUp(fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUpAt does not make sense for host paths - probably programmer error.
|
// SetUpAt does not make sense for host paths - probably programmer error.
|
||||||
func (b *hostPathMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *hostPathMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
return fmt.Errorf("SetUpAt() does not make sense for host paths")
|
return fmt.Errorf("SetUpAt() does not make sense for host paths")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ func TestInvalidHostPath(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
expectedMsg := "invalid HostPath `/no/backsteps/allowed/..`: must not contain '..'"
|
expectedMsg := "invalid HostPath `/no/backsteps/allowed/..`: must not contain '..'"
|
||||||
if err.Error() != expectedMsg {
|
if err.Error() != expectedMsg {
|
||||||
t.Fatalf("expected error `%s` but got `%s`", expectedMsg, err)
|
t.Fatalf("expected error `%s` but got `%s`", expectedMsg, err)
|
||||||
@ -253,7 +253,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,13 +330,13 @@ func (b *iscsiDiskMounter) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *iscsiDiskMounter) SetUp(fsGroup *int64) error {
|
func (b *iscsiDiskMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *iscsiDiskMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *iscsiDiskMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
// diskSetUp checks mountpoints and prevent repeated calls
|
// diskSetUp checks mountpoints and prevent repeated calls
|
||||||
err := diskSetUp(b.manager, *b, dir, b.mounter, fsGroup)
|
err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("iscsi: failed to setup")
|
klog.Errorf("iscsi: failed to setup")
|
||||||
}
|
}
|
||||||
|
@ -175,7 +175,7 @@ func doTestPlugin(t *testing.T, spec *volume.Spec) {
|
|||||||
t.Errorf("Unexpected path, expected %q, got: %q", expectedPath, path)
|
t.Errorf("Unexpected path, expected %q, got: %q", expectedPath, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
|
@ -423,12 +423,12 @@ func (m *localVolumeMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp bind mounts the directory to the volume path
|
// SetUp bind mounts the directory to the volume path
|
||||||
func (m *localVolumeMounter) SetUp(fsGroup *int64) error {
|
func (m *localVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return m.SetUpAt(m.GetPath(), fsGroup)
|
return m.SetUpAt(m.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUpAt bind mounts the directory to the volume path and sets up volume ownership
|
// SetUpAt bind mounts the directory to the volume path and sets up volume ownership
|
||||||
func (m *localVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (m *localVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
m.plugin.volumeLocks.LockKey(m.globalPath)
|
m.plugin.volumeLocks.LockKey(m.globalPath)
|
||||||
defer m.plugin.volumeLocks.UnlockKey(m.globalPath)
|
defer m.plugin.volumeLocks.UnlockKey(m.globalPath)
|
||||||
|
|
||||||
@ -452,7 +452,7 @@ func (m *localVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
refs, err := m.mounter.GetMountRefs(m.globalPath)
|
refs, err := m.mounter.GetMountRefs(m.globalPath)
|
||||||
if fsGroup != nil {
|
if mounterArgs.FsGroup != nil {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("cannot collect mounting information: %s %v", m.globalPath, err)
|
klog.Errorf("cannot collect mounting information: %s %v", m.globalPath, err)
|
||||||
return err
|
return err
|
||||||
@ -461,7 +461,7 @@ func (m *localVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
// Only count mounts from other pods
|
// Only count mounts from other pods
|
||||||
refs = m.filterPodMounts(refs)
|
refs = m.filterPodMounts(refs)
|
||||||
if len(refs) > 0 {
|
if len(refs) > 0 {
|
||||||
fsGroupNew := int64(*fsGroup)
|
fsGroupNew := int64(*mounterArgs.FsGroup)
|
||||||
fsGroupOld, err := m.mounter.GetFSGroup(m.globalPath)
|
fsGroupOld, err := m.mounter.GetFSGroup(m.globalPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to check fsGroup for %s (%v)", m.globalPath, err)
|
return fmt.Errorf("failed to check fsGroup for %s (%v)", m.globalPath, err)
|
||||||
@ -519,7 +519,7 @@ func (m *localVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
if !m.readOnly {
|
if !m.readOnly {
|
||||||
// Volume owner will be written only once on the first volume mount
|
// Volume owner will be written only once on the first volume mount
|
||||||
if len(refs) == 0 {
|
if len(refs) == 0 {
|
||||||
return volume.SetVolumeOwnership(m, fsGroup)
|
return volume.SetVolumeOwnership(m, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -200,7 +200,7 @@ func TestInvalidLocalPath(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
expectedMsg := "invalid path: /no/backsteps/allowed/.. must not contain '..'"
|
expectedMsg := "invalid path: /no/backsteps/allowed/.. must not contain '..'"
|
||||||
if err.Error() != expectedMsg {
|
if err.Error() != expectedMsg {
|
||||||
t.Fatalf("expected error `%s` but got `%s`", expectedMsg, err)
|
t.Fatalf("expected error `%s` but got `%s`", expectedMsg, err)
|
||||||
@ -307,7 +307,7 @@ func TestMountUnmount(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -412,7 +412,9 @@ func testFSGroupMount(plug volume.VolumePlugin, pod *v1.Pod, tmpDir string, fsGr
|
|||||||
return fmt.Errorf("Got unexpected path: %s", path)
|
return fmt.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(&fsGroup); err != nil {
|
var mounterArgs volume.MounterArgs
|
||||||
|
mounterArgs.FsGroup = &fsGroup
|
||||||
|
if err := mounter.SetUp(mounterArgs); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -517,7 +519,7 @@ func TestMountOptions(t *testing.T) {
|
|||||||
fakeMounter := &mount.FakeMounter{}
|
fakeMounter := &mount.FakeMounter{}
|
||||||
mounter.(*localVolumeMounter).mounter = fakeMounter
|
mounter.(*localVolumeMounter).mounter = fakeMounter
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
mountOptions := fakeMounter.MountPoints[0].Opts
|
mountOptions := fakeMounter.MountPoints[0].Opts
|
||||||
|
@ -233,11 +233,11 @@ func (nfsMounter *nfsMounter) GetAttributes() volume.Attributes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (nfsMounter *nfsMounter) SetUp(fsGroup *int64) error {
|
func (nfsMounter *nfsMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return nfsMounter.SetUpAt(nfsMounter.GetPath(), fsGroup)
|
return nfsMounter.SetUpAt(nfsMounter.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (nfsMounter *nfsMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (nfsMounter *nfsMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
notMnt, err := mount.IsNotMountPoint(nfsMounter.mounter, dir)
|
notMnt, err := mount.IsNotMountPoint(nfsMounter.mounter, dir)
|
||||||
klog.V(4).Infof("NFS mount set up: %s %v %v", dir, !notMnt, err)
|
klog.V(4).Infof("NFS mount set up: %s %v %v", dir, !notMnt, err)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
|
@ -122,7 +122,7 @@ func doTestPlugin(t *testing.T, spec *volume.Spec) {
|
|||||||
if volumePath != expectedPath {
|
if volumePath != expectedPath {
|
||||||
t.Errorf("Unexpected path, expected %q, got: %q", expectedPath, volumePath)
|
t.Errorf("Unexpected path, expected %q, got: %q", expectedPath, volumePath)
|
||||||
}
|
}
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(volumePath); err != nil {
|
if _, err := os.Stat(volumePath); err != nil {
|
||||||
|
@ -200,12 +200,12 @@ func (b *photonPersistentDiskMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (b *photonPersistentDiskMounter) SetUp(fsGroup *int64) error {
|
func (b *photonPersistentDiskMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (b *photonPersistentDiskMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *photonPersistentDiskMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
klog.V(4).Infof("Photon Persistent Disk setup %s to %s", b.pdID, dir)
|
klog.V(4).Infof("Photon Persistent Disk setup %s to %s", b.pdID, dir)
|
||||||
|
|
||||||
// TODO: handle failed mounts here.
|
// TODO: handle failed mounts here.
|
||||||
|
@ -128,7 +128,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
|
@ -298,12 +298,12 @@ func (b *portworxVolumeMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (b *portworxVolumeMounter) SetUp(fsGroup *int64) error {
|
func (b *portworxVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUpAt attaches the disk and bind mounts to the volume path.
|
// SetUpAt attaches the disk and bind mounts to the volume path.
|
||||||
func (b *portworxVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *portworxVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
||||||
klog.Infof("Portworx Volume set up. Dir: %s %v %v", dir, !notMnt, err)
|
klog.Infof("Portworx Volume set up. Dir: %s %v %v", dir, !notMnt, err)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
@ -331,7 +331,7 @@ func (b *portworxVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !b.readOnly {
|
if !b.readOnly {
|
||||||
volume.SetVolumeOwnership(b, fsGroup)
|
volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
klog.Infof("Portworx Volume %s setup at %s", b.volumeID, dir)
|
klog.Infof("Portworx Volume %s setup at %s", b.volumeID, dir)
|
||||||
return nil
|
return nil
|
||||||
|
@ -163,7 +163,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
|
@ -188,11 +188,11 @@ func (s *projectedVolumeMounter) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *projectedVolumeMounter) SetUp(fsGroup *int64) error {
|
func (s *projectedVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return s.SetUpAt(s.GetPath(), fsGroup)
|
return s.SetUpAt(s.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *projectedVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (s *projectedVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
klog.V(3).Infof("Setting up volume %v for pod %v at %v", s.volName, s.pod.UID, dir)
|
klog.V(3).Infof("Setting up volume %v for pod %v at %v", s.volName, s.pod.UID, dir)
|
||||||
|
|
||||||
wrapped, err := s.plugin.host.NewWrapperMounter(s.volName, wrappedVolumeSpec(), s.pod, *s.opts)
|
wrapped, err := s.plugin.host.NewWrapperMounter(s.volName, wrappedVolumeSpec(), s.pod, *s.opts)
|
||||||
@ -207,7 +207,7 @@ func (s *projectedVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setupSuccess := false
|
setupSuccess := false
|
||||||
if err := wrapped.SetUpAt(dir, fsGroup); err != nil {
|
if err := wrapped.SetUpAt(dir, mounterArgs); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,9 +243,9 @@ func (s *projectedVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = volume.SetVolumeOwnership(s, fsGroup)
|
err = volume.SetVolumeOwnership(s, mounterArgs.FsGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Error applying volume ownership settings for group: %v", fsGroup)
|
klog.Errorf("Error applying volume ownership settings for group: %v", mounterArgs.FsGroup)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
setupSuccess = true
|
setupSuccess = true
|
||||||
|
@ -878,7 +878,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -943,7 +943,8 @@ func TestInvalidPathProjected(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
var mounterArgs volume.MounterArgs
|
||||||
|
err = mounter.SetUp(mounterArgs)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Expected error while setting up secret")
|
t.Errorf("Expected error while setting up secret")
|
||||||
}
|
}
|
||||||
@ -994,7 +995,7 @@ func TestPluginReboot(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -1046,7 +1047,7 @@ func TestPluginOptional(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -1144,7 +1145,7 @@ func TestPluginOptionalKeys(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -237,12 +237,12 @@ func (mounter *quobyteMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (mounter *quobyteMounter) SetUp(fsGroup *int64) error {
|
func (mounter *quobyteMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
pluginDir := mounter.plugin.host.GetPluginDir(utilstrings.EscapeQualifiedName(quobytePluginName))
|
pluginDir := mounter.plugin.host.GetPluginDir(utilstrings.EscapeQualifiedName(quobytePluginName))
|
||||||
return mounter.SetUpAt(pluginDir, fsGroup)
|
return mounter.SetUpAt(pluginDir, mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mounter *quobyteMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (mounter *quobyteMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
// Check if Quobyte is already mounted on the host in the Plugin Dir
|
// Check if Quobyte is already mounted on the host in the Plugin Dir
|
||||||
// if so we can use this mountpoint instead of creating a new one
|
// if so we can use this mountpoint instead of creating a new one
|
||||||
// IsLikelyNotMountPoint wouldn't check the mount type
|
// IsLikelyNotMountPoint wouldn't check the mount type
|
||||||
|
@ -101,7 +101,7 @@ func doTestPlugin(t *testing.T, spec *volume.Spec) {
|
|||||||
if volumePath != fmt.Sprintf("%s/plugins/kubernetes.io~quobyte/root#root@vol", tmpDir) {
|
if volumePath != fmt.Sprintf("%s/plugins/kubernetes.io~quobyte/root#root@vol", tmpDir) {
|
||||||
t.Errorf("Got unexpected path: %s expected: %s", volumePath, fmt.Sprintf("%s/plugins/kubernetes.io~quobyte/root#root@vol", tmpDir))
|
t.Errorf("Got unexpected path: %s expected: %s", volumePath, fmt.Sprintf("%s/plugins/kubernetes.io~quobyte/root#root@vol", tmpDir))
|
||||||
}
|
}
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
unmounter, err := plug.(*quobytePlugin).newUnmounterInternal("vol", types.UID("poduid"), &mount.FakeMounter{})
|
unmounter, err := plug.(*quobytePlugin).newUnmounterInternal("vol", types.UID("poduid"), &mount.FakeMounter{})
|
||||||
|
@ -825,14 +825,14 @@ func (b *rbdMounter) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *rbdMounter) SetUp(fsGroup *int64) error {
|
func (b *rbdMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *rbdMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *rbdMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
// diskSetUp checks mountpoints and prevent repeated calls
|
// diskSetUp checks mountpoints and prevent repeated calls
|
||||||
klog.V(4).Infof("rbd: attempting to setup at %s", dir)
|
klog.V(4).Infof("rbd: attempting to setup at %s", dir)
|
||||||
err := diskSetUp(b.manager, *b, dir, b.mounter, fsGroup)
|
err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("rbd: failed to setup at %s %v", dir, err)
|
klog.Errorf("rbd: failed to setup at %s %v", dir, err)
|
||||||
}
|
}
|
||||||
|
@ -305,7 +305,7 @@ func doTestPlugin(t *testing.T, c *testcase) {
|
|||||||
t.Errorf("Unexpected path, expected %q, got: %q", c.expectedPodMountPath, path)
|
t.Errorf("Unexpected path, expected %q, got: %q", c.expectedPodMountPath, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
|
@ -77,12 +77,12 @@ func (v *sioVolume) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *sioVolume) SetUp(fsGroup *int64) error {
|
func (v *sioVolume) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return v.SetUpAt(v.GetPath(), fsGroup)
|
return v.SetUpAt(v.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUp bind mounts the disk global mount to the volume path.
|
// SetUp bind mounts the disk global mount to the volume path.
|
||||||
func (v *sioVolume) SetUpAt(dir string, fsGroup *int64) error {
|
func (v *sioVolume) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
v.plugin.volumeMtx.LockKey(v.volSpecName)
|
v.plugin.volumeMtx.LockKey(v.volSpecName)
|
||||||
defer v.plugin.volumeMtx.UnlockKey(v.volSpecName)
|
defer v.plugin.volumeMtx.UnlockKey(v.volSpecName)
|
||||||
|
|
||||||
@ -154,9 +154,9 @@ func (v *sioVolume) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if !v.readOnly && fsGroup != nil {
|
if !v.readOnly && mounterArgs.FsGroup != nil {
|
||||||
klog.V(4).Info(log("applying value FSGroup ownership"))
|
klog.V(4).Info(log("applying value FSGroup ownership"))
|
||||||
volume.SetVolumeOwnership(v, fsGroup)
|
volume.SetVolumeOwnership(v, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.V(4).Info(log("successfully setup PV %s: volume %s mapped as %s mounted at %s", v.volSpecName, v.volName, devicePath, dir))
|
klog.V(4).Info(log("successfully setup PV %s: volume %s mapped as %s mounted at %s", v.volSpecName, v.volName, devicePath, dir))
|
||||||
|
@ -191,7 +191,7 @@ func TestVolumeMounterUnmounter(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sioMounter.SetUp(nil); err != nil {
|
if err := sioMounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(path); err != nil {
|
if _, err := os.Stat(path); err != nil {
|
||||||
@ -345,7 +345,7 @@ func TestVolumeProvisioner(t *testing.T) {
|
|||||||
t.Fatalf("failed to create sio mgr: %v", err)
|
t.Fatalf("failed to create sio mgr: %v", err)
|
||||||
}
|
}
|
||||||
sioVol.sioMgr.client = sio
|
sioVol.sioMgr.client = sio
|
||||||
if err := sioMounter.SetUp(nil); err != nil {
|
if err := sioMounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Fatalf("Expected success, got: %v", err)
|
t.Fatalf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,11 +178,11 @@ func (b *secretVolumeMounter) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *secretVolumeMounter) SetUp(fsGroup *int64) error {
|
func (b *secretVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *secretVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *secretVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
klog.V(3).Infof("Setting up volume %v for pod %v at %v", b.volName, b.pod.UID, dir)
|
klog.V(3).Infof("Setting up volume %v for pod %v at %v", b.volName, b.pod.UID, dir)
|
||||||
|
|
||||||
// Wrap EmptyDir, let it do the setup.
|
// Wrap EmptyDir, let it do the setup.
|
||||||
@ -219,7 +219,7 @@ func (b *secretVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setupSuccess := false
|
setupSuccess := false
|
||||||
if err := wrapped.SetUpAt(dir, fsGroup); err != nil {
|
if err := wrapped.SetUpAt(dir, mounterArgs); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := volumeutil.MakeNestedMountpoints(b.volName, dir, b.pod); err != nil {
|
if err := volumeutil.MakeNestedMountpoints(b.volName, dir, b.pod); err != nil {
|
||||||
@ -254,9 +254,9 @@ func (b *secretVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = volume.SetVolumeOwnership(b, fsGroup)
|
err = volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Error applying volume ownership settings for group: %v", fsGroup)
|
klog.Errorf("Error applying volume ownership settings for group: %v", mounterArgs.FsGroup)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
setupSuccess = true
|
setupSuccess = true
|
||||||
|
@ -327,7 +327,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -401,7 +401,8 @@ func TestInvalidPathSecret(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
var mounterArgs volume.MounterArgs
|
||||||
|
err = mounter.SetUp(mounterArgs)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Expected error while setting up secret")
|
t.Errorf("Expected error while setting up secret")
|
||||||
}
|
}
|
||||||
@ -452,7 +453,7 @@ func TestPluginReboot(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -504,7 +505,7 @@ func TestPluginOptional(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
@ -602,7 +603,7 @@ func TestPluginOptionalKeys(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", volumePath)
|
t.Errorf("Got unexpected path: %s", volumePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mounter.SetUp(nil)
|
err = mounter.SetUp(volume.MounterArgs{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to setup volume: %v", err)
|
t.Errorf("Failed to setup volume: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -345,7 +345,7 @@ func (b *storageosMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (b *storageosMounter) SetUp(fsGroup *int64) error {
|
func (b *storageosMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
// Need a namespace to find the volume, try pod's namespace if not set.
|
// Need a namespace to find the volume, try pod's namespace if not set.
|
||||||
if b.volNamespace == "" {
|
if b.volNamespace == "" {
|
||||||
klog.V(2).Infof("Setting StorageOS volume namespace to pod namespace: %s", b.podNamespace)
|
klog.V(2).Infof("Setting StorageOS volume namespace to pod namespace: %s", b.podNamespace)
|
||||||
@ -375,11 +375,11 @@ func (b *storageosMounter) SetUp(fsGroup *int64) error {
|
|||||||
klog.V(4).Infof("Successfully mounted StorageOS volume %s into global mount directory", b.volName)
|
klog.V(4).Infof("Successfully mounted StorageOS volume %s into global mount directory", b.volName)
|
||||||
|
|
||||||
// Bind mount the volume into the pod
|
// Bind mount the volume into the pod
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUp bind mounts the disk global mount to the give volume path.
|
// SetUp bind mounts the disk global mount to the give volume path.
|
||||||
func (b *storageosMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *storageosMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
|
||||||
klog.V(4).Infof("StorageOS volume set up: %s %v %v", dir, !notMnt, err)
|
klog.V(4).Infof("StorageOS volume set up: %s %v %v", dir, !notMnt, err)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
@ -433,7 +433,7 @@ func (b *storageosMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !b.readOnly {
|
if !b.readOnly {
|
||||||
volume.SetVolumeOwnership(b, fsGroup)
|
volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
}
|
}
|
||||||
klog.V(4).Infof("StorageOS volume setup complete on %s", dir)
|
klog.V(4).Infof("StorageOS volume setup complete on %s", dir)
|
||||||
return nil
|
return nil
|
||||||
|
@ -208,7 +208,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Expected path: '%s' got: '%s'", expectedPath, volPath)
|
t.Errorf("Expected path: '%s' got: '%s'", expectedPath, volPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(volPath); err != nil {
|
if _, err := os.Stat(volPath); err != nil {
|
||||||
|
@ -765,11 +765,11 @@ func (fv *FakeVolume) CanMount() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fv *FakeVolume) SetUp(fsGroup *int64) error {
|
func (fv *FakeVolume) SetUp(mounterArgs MounterArgs) error {
|
||||||
fv.Lock()
|
fv.Lock()
|
||||||
defer fv.Unlock()
|
defer fv.Unlock()
|
||||||
fv.SetUpCallCount++
|
fv.SetUpCallCount++
|
||||||
return fv.SetUpAt(fv.getPath(), fsGroup)
|
return fv.SetUpAt(fv.getPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fv *FakeVolume) GetSetUpCallCount() int {
|
func (fv *FakeVolume) GetSetUpCallCount() int {
|
||||||
@ -778,7 +778,7 @@ func (fv *FakeVolume) GetSetUpCallCount() int {
|
|||||||
return fv.SetUpCallCount
|
return fv.SetUpCallCount
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fv *FakeVolume) SetUpAt(dir string, fsGroup *int64) error {
|
func (fv *FakeVolume) SetUpAt(dir string, mounterArgs MounterArgs) error {
|
||||||
return os.MkdirAll(dir, 0750)
|
return os.MkdirAll(dir, 0750)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -701,7 +701,10 @@ func (og *operationGenerator) GenerateMountVolumeFunc(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute mount
|
// Execute mount
|
||||||
mountErr := volumeMounter.SetUp(fsGroup)
|
mountErr := volumeMounter.SetUp(volume.MounterArgs{
|
||||||
|
FsGroup: fsGroup,
|
||||||
|
PodUID: string(volumeToMount.Pod.UID),
|
||||||
|
})
|
||||||
if mountErr != nil {
|
if mountErr != nil {
|
||||||
// On failure, return error. Caller will log and retry.
|
// On failure, return error. Caller will log and retry.
|
||||||
return volumeToMount.GenerateError("MountVolume.SetUp failed", mountErr)
|
return volumeToMount.GenerateError("MountVolume.SetUp failed", mountErr)
|
||||||
|
@ -101,6 +101,12 @@ type Attributes struct {
|
|||||||
SupportsSELinux bool
|
SupportsSELinux bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MounterArgs provides more easily extensible arguments to Mounter
|
||||||
|
type MounterArgs struct {
|
||||||
|
FsGroup *int64
|
||||||
|
PodUID string
|
||||||
|
}
|
||||||
|
|
||||||
// Mounter interface provides methods to set up/mount the volume.
|
// Mounter interface provides methods to set up/mount the volume.
|
||||||
type Mounter interface {
|
type Mounter interface {
|
||||||
// Uses Interface to provide the path for Docker binds.
|
// Uses Interface to provide the path for Docker binds.
|
||||||
@ -122,14 +128,14 @@ type Mounter interface {
|
|||||||
// content should be owned by 'fsGroup' so that it can be
|
// content should be owned by 'fsGroup' so that it can be
|
||||||
// accessed by the pod. This may be called more than once, so
|
// accessed by the pod. This may be called more than once, so
|
||||||
// implementations must be idempotent.
|
// implementations must be idempotent.
|
||||||
SetUp(fsGroup *int64) error
|
SetUp(mounterArgs MounterArgs) error
|
||||||
// SetUpAt prepares and mounts/unpacks the volume to the
|
// SetUpAt prepares and mounts/unpacks the volume to the
|
||||||
// specified directory path, which may or may not exist yet.
|
// specified directory path, which may or may not exist yet.
|
||||||
// The mount point and its content should be owned by
|
// The mount point and its content should be owned by
|
||||||
// 'fsGroup' so that it can be accessed by the pod. This may
|
// 'fsGroup' so that it can be accessed by the pod. This may
|
||||||
// be called more than once, so implementations must be
|
// be called more than once, so implementations must be
|
||||||
// idempotent.
|
// idempotent.
|
||||||
SetUpAt(dir string, fsGroup *int64) error
|
SetUpAt(dir string, mounterArgs MounterArgs) error
|
||||||
// GetAttributes returns the attributes of the mounter.
|
// GetAttributes returns the attributes of the mounter.
|
||||||
// This function is called after SetUp()/SetUpAt().
|
// This function is called after SetUp()/SetUpAt().
|
||||||
GetAttributes() Attributes
|
GetAttributes() Attributes
|
||||||
|
@ -208,8 +208,8 @@ func (b *vsphereVolumeMounter) GetAttributes() volume.Attributes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (b *vsphereVolumeMounter) SetUp(fsGroup *int64) error {
|
func (b *vsphereVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error {
|
||||||
return b.SetUpAt(b.GetPath(), fsGroup)
|
return b.SetUpAt(b.GetPath(), mounterArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checks prior to mount operations to verify that the required components (binaries, etc.)
|
// Checks prior to mount operations to verify that the required components (binaries, etc.)
|
||||||
@ -220,7 +220,7 @@ func (b *vsphereVolumeMounter) CanMount() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetUp attaches the disk and bind mounts to the volume path.
|
// SetUp attaches the disk and bind mounts to the volume path.
|
||||||
func (b *vsphereVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
func (b *vsphereVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error {
|
||||||
klog.V(5).Infof("vSphere volume setup %s to %s", b.volPath, dir)
|
klog.V(5).Infof("vSphere volume setup %s to %s", b.volPath, dir)
|
||||||
|
|
||||||
// TODO: handle failed mounts here.
|
// TODO: handle failed mounts here.
|
||||||
@ -269,7 +269,7 @@ func (b *vsphereVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
|
|||||||
os.Remove(dir)
|
os.Remove(dir)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
volume.SetVolumeOwnership(b, fsGroup)
|
volume.SetVolumeOwnership(b, mounterArgs.FsGroup)
|
||||||
klog.V(3).Infof("vSphere volume %s mounted to %s", b.volPath, dir)
|
klog.V(3).Infof("vSphere volume %s mounted to %s", b.volPath, dir)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -123,7 +123,7 @@ func TestPlugin(t *testing.T) {
|
|||||||
t.Errorf("Got unexpected path: %s", path)
|
t.Errorf("Got unexpected path: %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := mounter.SetUp(nil); err != nil {
|
if err := mounter.SetUp(volume.MounterArgs{}); err != nil {
|
||||||
t.Errorf("Expected success, got: %v", err)
|
t.Errorf("Expected success, got: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user