From e1a5e8537a64799731380ec1bceac7937ef092e9 Mon Sep 17 00:00:00 2001 From: demoManito <1430482733@qq.com> Date: Mon, 5 Sep 2022 18:53:52 +0800 Subject: [PATCH 1/3] optimize ifelse --- pkg/volume/awsebs/attacher.go | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/pkg/volume/awsebs/attacher.go b/pkg/volume/awsebs/attacher.go index 2e560bc7a6a..31b66d89e9e 100644 --- a/pkg/volume/awsebs/attacher.go +++ b/pkg/volume/awsebs/attacher.go @@ -211,23 +211,22 @@ func (attacher *awsElasticBlockStoreAttacher) MountDevice(spec *volume.Spec, dev mounter := attacher.host.GetMounter(awsElasticBlockStorePluginName) notMnt, err := mounter.IsLikelyNotMountPoint(deviceMountPath) if err != nil { - if os.IsNotExist(err) { - dir := deviceMountPath - if runtime.GOOS == "windows" { - // On Windows, FormatAndMount will mklink (create a symbolic link) at deviceMountPath later, so don't create a - // directory at deviceMountPath now. Otherwise mklink will error: "Cannot create a file when that file already exists". - // Instead, create the parent of deviceMountPath. For example when deviceMountPath is: - // C:\var\lib\kubelet\plugins\kubernetes.io\aws-ebs\mounts\aws\us-west-2b\vol-xxx - // create us-west-2b. FormatAndMount will make vol-xxx a symlink to the drive (e.g. D:\) - dir = filepath.Dir(deviceMountPath) - } - if err := os.MkdirAll(dir, 0750); err != nil { - return fmt.Errorf("making dir %s failed with %s", dir, err) - } - notMnt = true - } else { + if !os.IsNotExist(err) { return err } + dir := deviceMountPath + if runtime.GOOS == "windows" { + // On Windows, FormatAndMount will mklink (create a symbolic link) at deviceMountPath later, so don't create a + // directory at deviceMountPath now. Otherwise mklink will error: "Cannot create a file when that file already exists". + // Instead, create the parent of deviceMountPath. For example when deviceMountPath is: + // C:\var\lib\kubelet\plugins\kubernetes.io\aws-ebs\mounts\aws\us-west-2b\vol-xxx + // create us-west-2b. FormatAndMount will make vol-xxx a symlink to the drive (e.g. D:\) + dir = filepath.Dir(deviceMountPath) + } + if err := os.MkdirAll(dir, 0750); err != nil { + return fmt.Errorf("making dir %s failed with %s", dir, err) + } + notMnt = true } volumeSource, readOnly, err := getVolumeSource(spec) From bf9c829e34fefc55084191769951d63234b5945b Mon Sep 17 00:00:00 2001 From: demoManito <1430482733@qq.com> Date: Sat, 10 Sep 2022 23:22:40 +0800 Subject: [PATCH 2/3] fix add code style --- pkg/volume/awsebs/attacher.go | 14 +++++++------- pkg/volume/awsebs/aws_ebs.go | 22 +++++++++++----------- pkg/volume/awsebs/aws_ebs_block.go | 6 +++--- pkg/volume/awsebs/aws_util.go | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/pkg/volume/awsebs/attacher.go b/pkg/volume/awsebs/attacher.go index 31b66d89e9e..c466af6826d 100644 --- a/pkg/volume/awsebs/attacher.go +++ b/pkg/volume/awsebs/attacher.go @@ -43,13 +43,13 @@ type awsElasticBlockStoreAttacher struct { awsVolumes aws.Volumes } -var _ volume.Attacher = &awsElasticBlockStoreAttacher{} +var _ volume.Attacher = (*awsElasticBlockStoreAttacher)(nil) -var _ volume.DeviceMounter = &awsElasticBlockStoreAttacher{} +var _ volume.DeviceMounter = (*awsElasticBlockStoreAttacher)(nil) -var _ volume.AttachableVolumePlugin = &awsElasticBlockStorePlugin{} +var _ volume.AttachableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) -var _ volume.DeviceMountableVolumePlugin = &awsElasticBlockStorePlugin{} +var _ volume.DeviceMountableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) func (plugin *awsElasticBlockStorePlugin) NewAttacher() (volume.Attacher, error) { awsCloud, err := getCloudProvider(plugin.host.GetCloudProvider()) @@ -234,7 +234,7 @@ func (attacher *awsElasticBlockStoreAttacher) MountDevice(spec *volume.Spec, dev return err } - options := []string{} + var options []string if readOnly { options = append(options, "ro") } @@ -255,9 +255,9 @@ type awsElasticBlockStoreDetacher struct { awsVolumes aws.Volumes } -var _ volume.Detacher = &awsElasticBlockStoreDetacher{} +var _ volume.Detacher = (*awsElasticBlockStoreDetacher)(nil) -var _ volume.DeviceUnmounter = &awsElasticBlockStoreDetacher{} +var _ volume.DeviceUnmounter = (*awsElasticBlockStoreDetacher)(nil) func (plugin *awsElasticBlockStorePlugin) NewDetacher() (volume.Detacher, error) { awsCloud, err := getCloudProvider(plugin.host.GetCloudProvider()) diff --git a/pkg/volume/awsebs/aws_ebs.go b/pkg/volume/awsebs/aws_ebs.go index c50e8e03635..304dbdcca68 100644 --- a/pkg/volume/awsebs/aws_ebs.go +++ b/pkg/volume/awsebs/aws_ebs.go @@ -51,10 +51,10 @@ type awsElasticBlockStorePlugin struct { host volume.VolumeHost } -var _ volume.VolumePlugin = &awsElasticBlockStorePlugin{} -var _ volume.PersistentVolumePlugin = &awsElasticBlockStorePlugin{} -var _ volume.DeletableVolumePlugin = &awsElasticBlockStorePlugin{} -var _ volume.ProvisionableVolumePlugin = &awsElasticBlockStorePlugin{} +var _ volume.VolumePlugin = (*awsElasticBlockStorePlugin)(nil) +var _ volume.PersistentVolumePlugin = (*awsElasticBlockStorePlugin)(nil) +var _ volume.DeletableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) +var _ volume.ProvisionableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) const ( awsElasticBlockStorePluginName = "kubernetes.io/aws-ebs" @@ -311,9 +311,9 @@ func (plugin *awsElasticBlockStorePlugin) NodeExpand(resizeOptions volume.NodeRe return true, nil } -var _ volume.NodeExpandableVolumePlugin = &awsElasticBlockStorePlugin{} -var _ volume.ExpandableVolumePlugin = &awsElasticBlockStorePlugin{} -var _ volume.VolumePluginWithAttachLimits = &awsElasticBlockStorePlugin{} +var _ volume.NodeExpandableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) +var _ volume.ExpandableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) +var _ volume.VolumePluginWithAttachLimits = (*awsElasticBlockStorePlugin)(nil) // Abstract interface to PD operations. type ebsManager interface { @@ -350,7 +350,7 @@ type awsElasticBlockStoreMounter struct { mountOptions []string } -var _ volume.Mounter = &awsElasticBlockStoreMounter{} +var _ volume.Mounter = (*awsElasticBlockStoreMounter)(nil) func (b *awsElasticBlockStoreMounter) GetAttributes() volume.Attributes { return volume.Attributes{ @@ -448,7 +448,7 @@ type awsElasticBlockStoreUnmounter struct { *awsElasticBlockStore } -var _ volume.Unmounter = &awsElasticBlockStoreUnmounter{} +var _ volume.Unmounter = (*awsElasticBlockStoreUnmounter)(nil) // Unmounts the bind mount, and detaches the disk only if the PD // resource was the last reference to that disk on the kubelet. @@ -465,7 +465,7 @@ type awsElasticBlockStoreDeleter struct { *awsElasticBlockStore } -var _ volume.Deleter = &awsElasticBlockStoreDeleter{} +var _ volume.Deleter = (*awsElasticBlockStoreDeleter)(nil) func (d *awsElasticBlockStoreDeleter) GetPath() string { return getPath(d.podUID, d.volName, d.plugin.host) @@ -480,7 +480,7 @@ type awsElasticBlockStoreProvisioner struct { options volume.VolumeOptions } -var _ volume.Provisioner = &awsElasticBlockStoreProvisioner{} +var _ volume.Provisioner = (*awsElasticBlockStoreProvisioner)(nil) func (c *awsElasticBlockStoreProvisioner) Provision(selectedNode *v1.Node, allowedTopologies []v1.TopologySelectorTerm) (*v1.PersistentVolume, error) { if !util.ContainsAllAccessModes(c.plugin.GetAccessModes(), c.options.PVC.Spec.AccessModes) { diff --git a/pkg/volume/awsebs/aws_ebs_block.go b/pkg/volume/awsebs/aws_ebs_block.go index 2eaab4e46f2..eb46d7320fe 100644 --- a/pkg/volume/awsebs/aws_ebs_block.go +++ b/pkg/volume/awsebs/aws_ebs_block.go @@ -37,7 +37,7 @@ import ( "k8s.io/legacy-cloud-providers/aws" ) -var _ volume.BlockVolumePlugin = &awsElasticBlockStorePlugin{} +var _ volume.BlockVolumePlugin = (*awsElasticBlockStorePlugin)(nil) func (plugin *awsElasticBlockStorePlugin) ConstructBlockVolumeSpec(podUID types.UID, volumeName, mapPath string) (*volume.Spec, error) { pluginDir := plugin.host.GetVolumeDevicePluginDir(awsElasticBlockStorePluginName) @@ -145,14 +145,14 @@ type awsElasticBlockStoreUnmapper struct { *awsElasticBlockStore } -var _ volume.BlockVolumeUnmapper = &awsElasticBlockStoreUnmapper{} +var _ volume.BlockVolumeUnmapper = (*awsElasticBlockStoreUnmapper)(nil) type awsElasticBlockStoreMapper struct { *awsElasticBlockStore readOnly bool } -var _ volume.BlockVolumeMapper = &awsElasticBlockStoreMapper{} +var _ volume.BlockVolumeMapper = (*awsElasticBlockStoreMapper)(nil) // GetGlobalMapPath returns global map path and error // path: plugins/kubernetes.io/{PluginName}/volumeDevices/volumeID diff --git a/pkg/volume/awsebs/aws_util.go b/pkg/volume/awsebs/aws_util.go index d7804f1f581..61429e325e3 100644 --- a/pkg/volume/awsebs/aws_util.go +++ b/pkg/volume/awsebs/aws_util.go @@ -218,7 +218,7 @@ func verifyDevicePath(devicePaths []string) (string, error) { // This is more interesting on GCE (where we are able to identify volumes under /dev/disk-by-id) // Here it is mostly about applying the partition path func getDiskByIDPaths(volumeID aws.KubernetesVolumeID, partition string, devicePath string) []string { - devicePaths := []string{} + var devicePaths []string if devicePath != "" { devicePaths = append(devicePaths, devicePath) } From 7a7c8d1ec977d4d0ba3052adde0fc35f695f10f5 Mon Sep 17 00:00:00 2001 From: demoManito <1430482733@qq.com> Date: Tue, 13 Sep 2022 22:26:06 +0800 Subject: [PATCH 3/3] revert interface check --- pkg/volume/awsebs/attacher.go | 12 ++++++------ pkg/volume/awsebs/aws_ebs.go | 26 +++++++++++++------------- pkg/volume/awsebs/aws_ebs_block.go | 6 +++--- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/pkg/volume/awsebs/attacher.go b/pkg/volume/awsebs/attacher.go index c466af6826d..aa729933910 100644 --- a/pkg/volume/awsebs/attacher.go +++ b/pkg/volume/awsebs/attacher.go @@ -43,13 +43,13 @@ type awsElasticBlockStoreAttacher struct { awsVolumes aws.Volumes } -var _ volume.Attacher = (*awsElasticBlockStoreAttacher)(nil) +var _ volume.Attacher = &awsElasticBlockStoreAttacher{} -var _ volume.DeviceMounter = (*awsElasticBlockStoreAttacher)(nil) +var _ volume.DeviceMounter = &awsElasticBlockStoreAttacher{} -var _ volume.AttachableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) +var _ volume.AttachableVolumePlugin = &awsElasticBlockStorePlugin{} -var _ volume.DeviceMountableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) +var _ volume.DeviceMountableVolumePlugin = &awsElasticBlockStorePlugin{} func (plugin *awsElasticBlockStorePlugin) NewAttacher() (volume.Attacher, error) { awsCloud, err := getCloudProvider(plugin.host.GetCloudProvider()) @@ -255,9 +255,9 @@ type awsElasticBlockStoreDetacher struct { awsVolumes aws.Volumes } -var _ volume.Detacher = (*awsElasticBlockStoreDetacher)(nil) +var _ volume.Detacher = &awsElasticBlockStoreDetacher{} -var _ volume.DeviceUnmounter = (*awsElasticBlockStoreDetacher)(nil) +var _ volume.DeviceUnmounter = &awsElasticBlockStoreDetacher{} func (plugin *awsElasticBlockStorePlugin) NewDetacher() (volume.Detacher, error) { awsCloud, err := getCloudProvider(plugin.host.GetCloudProvider()) diff --git a/pkg/volume/awsebs/aws_ebs.go b/pkg/volume/awsebs/aws_ebs.go index 304dbdcca68..0f135179e3d 100644 --- a/pkg/volume/awsebs/aws_ebs.go +++ b/pkg/volume/awsebs/aws_ebs.go @@ -51,10 +51,10 @@ type awsElasticBlockStorePlugin struct { host volume.VolumeHost } -var _ volume.VolumePlugin = (*awsElasticBlockStorePlugin)(nil) -var _ volume.PersistentVolumePlugin = (*awsElasticBlockStorePlugin)(nil) -var _ volume.DeletableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) -var _ volume.ProvisionableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) +var _ volume.VolumePlugin = &awsElasticBlockStorePlugin{} +var _ volume.PersistentVolumePlugin = &awsElasticBlockStorePlugin{} +var _ volume.DeletableVolumePlugin = &awsElasticBlockStorePlugin{} +var _ volume.ProvisionableVolumePlugin = &awsElasticBlockStorePlugin{} const ( awsElasticBlockStorePluginName = "kubernetes.io/aws-ebs" @@ -311,9 +311,9 @@ func (plugin *awsElasticBlockStorePlugin) NodeExpand(resizeOptions volume.NodeRe return true, nil } -var _ volume.NodeExpandableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) -var _ volume.ExpandableVolumePlugin = (*awsElasticBlockStorePlugin)(nil) -var _ volume.VolumePluginWithAttachLimits = (*awsElasticBlockStorePlugin)(nil) +var _ volume.NodeExpandableVolumePlugin = &awsElasticBlockStorePlugin{} +var _ volume.ExpandableVolumePlugin = &awsElasticBlockStorePlugin{} +var _ volume.VolumePluginWithAttachLimits = &awsElasticBlockStorePlugin{} // Abstract interface to PD operations. type ebsManager interface { @@ -350,7 +350,7 @@ type awsElasticBlockStoreMounter struct { mountOptions []string } -var _ volume.Mounter = (*awsElasticBlockStoreMounter)(nil) +var _ volume.Mounter = &awsElasticBlockStoreMounter{} func (b *awsElasticBlockStoreMounter) GetAttributes() volume.Attributes { return volume.Attributes{ @@ -448,7 +448,7 @@ type awsElasticBlockStoreUnmounter struct { *awsElasticBlockStore } -var _ volume.Unmounter = (*awsElasticBlockStoreUnmounter)(nil) +var _ volume.Unmounter = &awsElasticBlockStoreUnmounter{} // Unmounts the bind mount, and detaches the disk only if the PD // resource was the last reference to that disk on the kubelet. @@ -465,7 +465,7 @@ type awsElasticBlockStoreDeleter struct { *awsElasticBlockStore } -var _ volume.Deleter = (*awsElasticBlockStoreDeleter)(nil) +var _ volume.Deleter = &awsElasticBlockStoreDeleter{} func (d *awsElasticBlockStoreDeleter) GetPath() string { return getPath(d.podUID, d.volName, d.plugin.host) @@ -480,7 +480,7 @@ type awsElasticBlockStoreProvisioner struct { options volume.VolumeOptions } -var _ volume.Provisioner = (*awsElasticBlockStoreProvisioner)(nil) +var _ volume.Provisioner = &awsElasticBlockStoreProvisioner{} func (c *awsElasticBlockStoreProvisioner) Provision(selectedNode *v1.Node, allowedTopologies []v1.TopologySelectorTerm) (*v1.PersistentVolume, error) { if !util.ContainsAllAccessModes(c.plugin.GetAccessModes(), c.options.PVC.Spec.AccessModes) { @@ -534,10 +534,10 @@ func (c *awsElasticBlockStoreProvisioner) Provision(selectedNode *v1.Node, allow pv.Spec.AccessModes = c.plugin.GetAccessModes() } - requirements := make([]v1.NodeSelectorRequirement, 0) + requirements := make([]v1.NodeSelectorRequirement, 0, len(labels)) if len(labels) != 0 { if pv.Labels == nil { - pv.Labels = make(map[string]string) + pv.Labels = make(map[string]string, len(labels)) } for k, v := range labels { pv.Labels[k] = v diff --git a/pkg/volume/awsebs/aws_ebs_block.go b/pkg/volume/awsebs/aws_ebs_block.go index eb46d7320fe..2eaab4e46f2 100644 --- a/pkg/volume/awsebs/aws_ebs_block.go +++ b/pkg/volume/awsebs/aws_ebs_block.go @@ -37,7 +37,7 @@ import ( "k8s.io/legacy-cloud-providers/aws" ) -var _ volume.BlockVolumePlugin = (*awsElasticBlockStorePlugin)(nil) +var _ volume.BlockVolumePlugin = &awsElasticBlockStorePlugin{} func (plugin *awsElasticBlockStorePlugin) ConstructBlockVolumeSpec(podUID types.UID, volumeName, mapPath string) (*volume.Spec, error) { pluginDir := plugin.host.GetVolumeDevicePluginDir(awsElasticBlockStorePluginName) @@ -145,14 +145,14 @@ type awsElasticBlockStoreUnmapper struct { *awsElasticBlockStore } -var _ volume.BlockVolumeUnmapper = (*awsElasticBlockStoreUnmapper)(nil) +var _ volume.BlockVolumeUnmapper = &awsElasticBlockStoreUnmapper{} type awsElasticBlockStoreMapper struct { *awsElasticBlockStore readOnly bool } -var _ volume.BlockVolumeMapper = (*awsElasticBlockStoreMapper)(nil) +var _ volume.BlockVolumeMapper = &awsElasticBlockStoreMapper{} // GetGlobalMapPath returns global map path and error // path: plugins/kubernetes.io/{PluginName}/volumeDevices/volumeID