Merge pull request #95866 from JornShen/add_metrics_report_time_permit_change
Report a metric for time taken to perform recursive permission change
This commit is contained in:
		| @@ -428,7 +428,7 @@ func (b *awsElasticBlockStoreMounter) SetUpAt(dir string, mounterArgs volume.Mou | ||||
| 	} | ||||
|  | ||||
| 	if !b.readOnly { | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	} | ||||
|  | ||||
| 	klog.V(4).Infof("Successfully mounted %s", dir) | ||||
|   | ||||
| @@ -164,7 +164,7 @@ func (m *azureDiskMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) e | ||||
| 	} | ||||
|  | ||||
| 	if volumeSource.ReadOnly == nil || !*volumeSource.ReadOnly { | ||||
| 		volume.SetVolumeOwnership(m, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(m, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(m.plugin.GetPluginName())) | ||||
| 	} | ||||
|  | ||||
| 	klog.V(2).Infof("azureDisk - successfully mounted disk %s on %s", diskName, dir) | ||||
|   | ||||
| @@ -448,7 +448,7 @@ func (b *cinderVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs | ||||
| 	} | ||||
|  | ||||
| 	if !b.readOnly { | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	} | ||||
| 	klog.V(3).Infof("Cinder volume %s mounted to %s", b.pdName, dir) | ||||
|  | ||||
|   | ||||
| @@ -256,7 +256,7 @@ func (b *configMapVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterA | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = volume.SetVolumeOwnership(b, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/) | ||||
| 	err = volume.SetVolumeOwnership(b, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/, volumeutil.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	if err != nil { | ||||
| 		klog.Errorf("Error applying volume ownership settings for group: %v", mounterArgs.FsGroup) | ||||
| 		return err | ||||
|   | ||||
| @@ -35,6 +35,7 @@ import ( | ||||
| 	"k8s.io/client-go/kubernetes" | ||||
| 	"k8s.io/kubernetes/pkg/features" | ||||
| 	"k8s.io/kubernetes/pkg/volume" | ||||
| 	"k8s.io/kubernetes/pkg/volume/util" | ||||
| 	volumetypes "k8s.io/kubernetes/pkg/volume/util/types" | ||||
| 	"k8s.io/mount-utils" | ||||
| 	utilstrings "k8s.io/utils/strings" | ||||
| @@ -278,7 +279,7 @@ func (c *csiMountMgr) SetUpAt(dir string, mounterArgs volume.MounterArgs) error | ||||
| 	} | ||||
|  | ||||
| 	if c.supportsFSGroup(fsType, mounterArgs.FsGroup, c.fsGroupPolicy) { | ||||
| 		err := volume.SetVolumeOwnership(c, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 		err := volume.SetVolumeOwnership(c, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(c.plugin.GetPluginName())) | ||||
| 		if err != nil { | ||||
| 			// At this point mount operation is successful: | ||||
| 			//   1. Since volume can not be used by the pod because of invalid permissions, we must return error | ||||
|   | ||||
| @@ -227,7 +227,7 @@ func (b *downwardAPIVolumeMounter) SetUpAt(dir string, mounterArgs volume.Mounte | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = volume.SetVolumeOwnership(b, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/) | ||||
| 	err = volume.SetVolumeOwnership(b, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/, volumeutil.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	if err != nil { | ||||
| 		klog.Errorf("Error applying volume ownership settings for group: %v", mounterArgs.FsGroup) | ||||
| 		return err | ||||
|   | ||||
| @@ -227,7 +227,7 @@ func (ed *emptyDir) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { | ||||
| 		err = fmt.Errorf("unknown storage medium %q", ed.medium) | ||||
| 	} | ||||
|  | ||||
| 	volume.SetVolumeOwnership(ed, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/) | ||||
| 	volume.SetVolumeOwnership(ed, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/, volumeutil.FSGroupCompleteHook(ed.plugin.GetPluginName())) | ||||
|  | ||||
| 	// If setting up the quota fails, just log a message but don't actually error out. | ||||
| 	// We'll use the old du mechanism in this case, at least until we support | ||||
|   | ||||
| @@ -40,7 +40,7 @@ type diskManager interface { | ||||
| } | ||||
|  | ||||
| // utility to mount a disk based filesystem | ||||
| func diskSetUp(manager diskManager, b fcDiskMounter, volPath string, mounter mount.Interface, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy) error { | ||||
| func diskSetUp(manager diskManager, b fcDiskMounter, volPath string, mounter mount.Interface, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy, plugin volume.VolumePlugin) error { | ||||
| 	globalPDPath := manager.MakeGlobalPDName(*b.fcDisk) | ||||
| 	noMnt, err := mounter.IsLikelyNotMountPoint(volPath) | ||||
|  | ||||
| @@ -91,7 +91,7 @@ func diskSetUp(manager diskManager, b fcDiskMounter, volPath string, mounter mou | ||||
| 	} | ||||
|  | ||||
| 	if !b.readOnly { | ||||
| 		volume.SetVolumeOwnership(&b, fsGroup, fsGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(&b, fsGroup, fsGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
| @@ -362,7 +362,7 @@ func (b *fcDiskMounter) SetUp(mounterArgs volume.MounterArgs) error { | ||||
|  | ||||
| func (b *fcDiskMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { | ||||
| 	// diskSetUp checks mountpoints and prevent repeated calls | ||||
| 	err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 	err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, b.plugin) | ||||
| 	if err != nil { | ||||
| 		klog.Errorf("fc: failed to setup") | ||||
| 	} | ||||
|   | ||||
| @@ -21,6 +21,7 @@ import ( | ||||
| 	"strconv" | ||||
|  | ||||
| 	"k8s.io/kubernetes/pkg/volume" | ||||
| 	"k8s.io/kubernetes/pkg/volume/util" | ||||
| 	"k8s.io/utils/exec" | ||||
| ) | ||||
|  | ||||
| @@ -93,7 +94,7 @@ func (f *flexVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) | ||||
|  | ||||
| 	if !f.readOnly { | ||||
| 		if f.plugin.capabilities.FSGroup { | ||||
| 			volume.SetVolumeOwnership(f, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 			volume.SetVolumeOwnership(f, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(f.plugin.GetPluginName())) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -31,6 +31,7 @@ import ( | ||||
| 	"k8s.io/apimachinery/pkg/types" | ||||
| 	"k8s.io/kubernetes/pkg/util/env" | ||||
| 	"k8s.io/kubernetes/pkg/volume" | ||||
| 	"k8s.io/kubernetes/pkg/volume/util" | ||||
| ) | ||||
|  | ||||
| // ProbeVolumePlugins is the primary entrypoint for volume plugins. | ||||
| @@ -361,7 +362,7 @@ func (b *flockerVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArg | ||||
| 	} | ||||
|  | ||||
| 	if !b.readOnly { | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	} | ||||
|  | ||||
| 	klog.V(4).Infof("successfully mounted %s", dir) | ||||
|   | ||||
| @@ -429,7 +429,7 @@ func (b *gcePersistentDiskMounter) SetUpAt(dir string, mounterArgs volume.Mounte | ||||
| 	} | ||||
|  | ||||
| 	if !b.readOnly { | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
| @@ -236,7 +236,7 @@ func (b *gitRepoVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArg | ||||
| 		return fmt.Errorf("failed to exec 'git reset --hard': %s: %v", output, err) | ||||
| 	} | ||||
|  | ||||
| 	volume.SetVolumeOwnership(b, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/) | ||||
| 	volume.SetVolumeOwnership(b, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/, volumeutil.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
|  | ||||
| 	volumeutil.SetReady(b.getMetaDir()) | ||||
| 	return nil | ||||
|   | ||||
| @@ -42,7 +42,7 @@ type diskManager interface { | ||||
| // utility to mount a disk based filesystem | ||||
| // globalPDPath: global mount path like, /var/lib/kubelet/plugins/kubernetes.io/iscsi/{ifaceName}/{portal-some_iqn-lun-lun_id} | ||||
| // volPath: pod volume dir path like, /var/lib/kubelet/pods/{podUID}/volumes/kubernetes.io~iscsi/{volumeName} | ||||
| func diskSetUp(manager diskManager, b iscsiDiskMounter, volPath string, mounter mount.Interface, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy) error { | ||||
| func diskSetUp(manager diskManager, b iscsiDiskMounter, volPath string, mounter mount.Interface, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy, plugin volume.VolumePlugin) error { | ||||
| 	notMnt, err := mounter.IsLikelyNotMountPoint(volPath) | ||||
| 	if err != nil && !os.IsNotExist(err) { | ||||
| 		klog.Errorf("cannot validate mountpoint: %s", volPath) | ||||
| @@ -96,7 +96,7 @@ func diskSetUp(manager diskManager, b iscsiDiskMounter, volPath string, mounter | ||||
| 	} | ||||
|  | ||||
| 	if !b.readOnly { | ||||
| 		volume.SetVolumeOwnership(&b, fsGroup, fsGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(&b, fsGroup, fsGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
| @@ -345,7 +345,7 @@ func (b *iscsiDiskMounter) SetUp(mounterArgs volume.MounterArgs) error { | ||||
|  | ||||
| func (b *iscsiDiskMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { | ||||
| 	// diskSetUp checks mountpoints and prevent repeated calls | ||||
| 	err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 	err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, b.plugin) | ||||
| 	if err != nil { | ||||
| 		klog.Errorf("iscsi: failed to setup") | ||||
| 	} | ||||
|   | ||||
| @@ -566,7 +566,7 @@ func (m *localVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) | ||||
| 	if !m.readOnly { | ||||
| 		// Volume owner will be written only once on the first volume mount | ||||
| 		if len(refs) == 0 { | ||||
| 			return volume.SetVolumeOwnership(m, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 			return volume.SetVolumeOwnership(m, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(m.plugin.GetPluginName())) | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
|   | ||||
| @@ -328,7 +328,7 @@ func (b *portworxVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterAr | ||||
| 		return err | ||||
| 	} | ||||
| 	if !b.readOnly { | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	} | ||||
| 	klog.Infof("Portworx Volume %s setup at %s", b.volumeID, dir) | ||||
| 	return nil | ||||
|   | ||||
| @@ -239,7 +239,7 @@ func (s *projectedVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterA | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = volume.SetVolumeOwnership(s, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/) | ||||
| 	err = volume.SetVolumeOwnership(s, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/, volumeutil.FSGroupCompleteHook(s.plugin.GetPluginName())) | ||||
| 	if err != nil { | ||||
| 		klog.Errorf("Error applying volume ownership settings for group: %v", mounterArgs.FsGroup) | ||||
| 		return err | ||||
|   | ||||
| @@ -58,7 +58,7 @@ type diskManager interface { | ||||
| } | ||||
|  | ||||
| // utility to mount a disk based filesystem | ||||
| func diskSetUp(manager diskManager, b rbdMounter, volPath string, mounter mount.Interface, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy) error { | ||||
| func diskSetUp(manager diskManager, b rbdMounter, volPath string, mounter mount.Interface, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy, plugin volume.VolumePlugin) error { | ||||
| 	globalPDPath := manager.MakeGlobalPDName(*b.rbd) | ||||
| 	notMnt, err := mounter.IsLikelyNotMountPoint(globalPDPath) | ||||
| 	if err != nil && !os.IsNotExist(err) { | ||||
| @@ -96,7 +96,7 @@ func diskSetUp(manager diskManager, b rbdMounter, volPath string, mounter mount. | ||||
| 	klog.V(3).Infof("rbd: successfully bind mount %s to %s with options %v", globalPDPath, volPath, mountOptions) | ||||
|  | ||||
| 	if !b.ReadOnly { | ||||
| 		volume.SetVolumeOwnership(&b, fsGroup, fsGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(&b, fsGroup, fsGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
| @@ -837,7 +837,7 @@ func (b *rbdMounter) SetUp(mounterArgs volume.MounterArgs) error { | ||||
| func (b *rbdMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { | ||||
| 	// diskSetUp checks mountpoints and prevent repeated calls | ||||
| 	klog.V(4).Infof("rbd: attempting to setup at %s", dir) | ||||
| 	err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 	err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, b.plugin) | ||||
| 	if err != nil { | ||||
| 		klog.Errorf("rbd: failed to setup at %s %v", dir, err) | ||||
| 	} | ||||
|   | ||||
| @@ -161,7 +161,7 @@ func (v *sioVolume) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { | ||||
|  | ||||
| 	if !v.readOnly && mounterArgs.FsGroup != nil { | ||||
| 		klog.V(4).Info(log("applying  value FSGroup ownership")) | ||||
| 		volume.SetVolumeOwnership(v, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(v, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(v.plugin.GetPluginName())) | ||||
| 	} | ||||
|  | ||||
| 	klog.V(4).Info(log("successfully setup PV %s: volume %s mapped as %s mounted at %s", v.volSpecName, v.volName, devicePath, dir)) | ||||
|   | ||||
| @@ -251,7 +251,7 @@ func (b *secretVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = volume.SetVolumeOwnership(b, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/) | ||||
| 	err = volume.SetVolumeOwnership(b, mounterArgs.FsGroup, nil /*fsGroupChangePolicy*/, volumeutil.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	if err != nil { | ||||
| 		klog.Errorf("Error applying volume ownership settings for group: %v", mounterArgs.FsGroup) | ||||
| 		return err | ||||
|   | ||||
| @@ -430,7 +430,7 @@ func (b *storageosMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) e | ||||
| 	} | ||||
|  | ||||
| 	if !b.readOnly { | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 		volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	} | ||||
| 	klog.V(4).Infof("StorageOS volume setup complete on %s", dir) | ||||
| 	return nil | ||||
|   | ||||
| @@ -109,6 +109,11 @@ func OperationCompleteHook(plugin, operationName string) func(*error) { | ||||
| 	return opComplete | ||||
| } | ||||
|  | ||||
| // FSGroupCompleteHook returns a hook to call when volume recursive permission is changed | ||||
| func FSGroupCompleteHook(pluginName string) func(*error) { | ||||
| 	return OperationCompleteHook(pluginName, "volume_fsgroup_recursive_apply") | ||||
| } | ||||
|  | ||||
| // GetFullQualifiedPluginNameForVolume returns full qualified plugin name for | ||||
| // given volume. For CSI plugin, it appends plugin driver name at the end of | ||||
| // plugin name, e.g. kubernetes.io/csi:csi-hostpath. It helps to distinguish | ||||
|   | ||||
| @@ -40,7 +40,7 @@ const ( | ||||
| // SetVolumeOwnership modifies the given volume to be owned by | ||||
| // fsGroup, and sets SetGid so that newly created files are owned by | ||||
| // fsGroup. If fsGroup is nil nothing is done. | ||||
| func SetVolumeOwnership(mounter Mounter, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy) error { | ||||
| func SetVolumeOwnership(mounter Mounter, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy, completeFunc func(*error)) error { | ||||
| 	if fsGroup == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| @@ -55,7 +55,11 @@ func SetVolumeOwnership(mounter Mounter, fsGroup *int64, fsGroupChangePolicy *v1 | ||||
| 	// This code exists for legacy purposes, so as old behaviour is entirely preserved when feature gate is disabled | ||||
| 	// TODO: remove this when ConfigurableFSGroupPolicy turns GA. | ||||
| 	if !fsGroupPolicyEnabled { | ||||
| 		return legacyOwnershipChange(mounter, fsGroup) | ||||
| 		err := legacyOwnershipChange(mounter, fsGroup) | ||||
| 		if completeFunc != nil { | ||||
| 			completeFunc(&err) | ||||
| 		} | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	if skipPermissionChange(mounter, fsGroup, fsGroupChangePolicy) { | ||||
| @@ -63,13 +67,16 @@ func SetVolumeOwnership(mounter Mounter, fsGroup *int64, fsGroupChangePolicy *v1 | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	return walkDeep(mounter.GetPath(), func(path string, info os.FileInfo, err error) error { | ||||
| 	err := walkDeep(mounter.GetPath(), func(path string, info os.FileInfo, err error) error { | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		return changeFilePermission(path, fsGroup, mounter.GetAttributes().ReadOnly, info) | ||||
| 	}) | ||||
|  | ||||
| 	if completeFunc != nil { | ||||
| 		completeFunc(&err) | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| func legacyOwnershipChange(mounter Mounter, fsGroup *int64) error { | ||||
|   | ||||
| @@ -314,7 +314,7 @@ func TestSetVolumeOwnership(t *testing.T) { | ||||
| 			} | ||||
|  | ||||
| 			mounter := &localFakeMounter{path: tmpDir} | ||||
| 			err = SetVolumeOwnership(mounter, &expectedGid, test.fsGroupChangePolicy) | ||||
| 			err = SetVolumeOwnership(mounter, &expectedGid, test.fsGroupChangePolicy, nil) | ||||
| 			if err != nil { | ||||
| 				t.Errorf("for %s error changing ownership with: %v", test.description, err) | ||||
| 			} | ||||
|   | ||||
| @@ -22,6 +22,6 @@ import ( | ||||
| 	v1 "k8s.io/api/core/v1" | ||||
| ) | ||||
|  | ||||
| func SetVolumeOwnership(mounter Mounter, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy) error { | ||||
| func SetVolumeOwnership(mounter Mounter, fsGroup *int64, fsGroupChangePolicy *v1.PodFSGroupChangePolicy, completeFunc func(*error)) error { | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
| @@ -278,7 +278,7 @@ func (b *vsphereVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArg | ||||
| 		os.Remove(dir) | ||||
| 		return err | ||||
| 	} | ||||
| 	volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) | ||||
| 	volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(b.plugin.GetPluginName())) | ||||
| 	klog.V(3).Infof("vSphere volume %s mounted to %s", b.volPath, dir) | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot