Skip to content

Commit 428fe26

Browse files
committed
Avoid redundant call DescribeMountTargets in dir-mode Provision()
1 parent ad2a406 commit 428fe26

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

pkg/driver/provisioner_dir.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ func (d DirectoryProvisioner) Provision(ctx context.Context, req *csi.CreateVolu
4242
return nil, err
4343
}
4444

45-
mountOptions, err := getMountOptions(ctx, localCloud, fileSystemId, roleArn, crossAccountDNSEnabled)
45+
var azName string
46+
if value, ok := volumeParams[AzName]; ok {
47+
azName = value
48+
}
49+
50+
mountOptions, mountTargetAddress, err := getMountOptions(ctx, localCloud, fileSystemId, roleArn, crossAccountDNSEnabled, azName)
4651
if err != nil {
4752
return nil, err
4853
}
@@ -108,15 +113,8 @@ func (d DirectoryProvisioner) Provision(ctx context.Context, req *csi.CreateVolu
108113
// not be used as a mount option in this case.
109114
volContext[CrossAccount] = strconv.FormatBool(true)
110115
} else {
111-
var azName string
112-
if value, ok := volumeParams[AzName]; ok {
113-
azName = value
114-
}
115-
mountTarget, err := localCloud.DescribeMountTargets(ctx, fileSystemId, azName)
116-
if err != nil {
117-
klog.Warningf("Failed to describe mount targets for file system %v. Skip using `mounttargetip` mount option: %v", fileSystemId, err)
118-
} else {
119-
volContext[MountTargetIp] = mountTarget.IPAddress
116+
if mountTargetAddress != "" {
117+
volContext[MountTargetIp] = mountTargetAddress
120118
}
121119

122120
}
@@ -141,7 +139,7 @@ func (d DirectoryProvisioner) Delete(ctx context.Context, req *csi.DeleteVolumeR
141139
return err
142140
}
143141

144-
mountOptions, err := getMountOptions(ctx, localCloud, fileSystemId, roleArn, crossAccountDNSEnabled)
142+
mountOptions, _, err := getMountOptions(ctx, localCloud, fileSystemId, roleArn, crossAccountDNSEnabled, "")
145143
if err != nil {
146144
return err
147145
}
@@ -186,20 +184,22 @@ func (d DirectoryProvisioner) Delete(ctx context.Context, req *csi.DeleteVolumeR
186184
return nil
187185
}
188186

189-
func getMountOptions(ctx context.Context, cloud cloud.Cloud, fileSystemId string, roleArn string, crossAccountDNSEnabled bool) ([]string, error) {
187+
func getMountOptions(ctx context.Context, cloud cloud.Cloud, fileSystemId string, roleArn string, crossAccountDNSEnabled bool, azName string) ([]string, string, error) {
190188
mountOptions := []string{"tls", "iam"}
189+
mountTargetAddress := ""
191190
if roleArn != "" {
192191
if crossAccountDNSEnabled {
193192
// Connect via dns rather than mounttargetip
194193
mountOptions = append(mountOptions, CrossAccount)
195194
} else {
196-
mountTarget, err := cloud.DescribeMountTargets(ctx, fileSystemId, "")
195+
mountTarget, err := cloud.DescribeMountTargets(ctx, fileSystemId, azName)
197196
if err == nil {
198-
mountOptions = append(mountOptions, MountTargetIp+"="+mountTarget.IPAddress)
197+
mountTargetAddress = mountTarget.IPAddress
198+
mountOptions = append(mountOptions, MountTargetIp+"="+mountTargetAddress)
199199
} else {
200200
klog.Warningf("Failed to describe mount targets for file system %v. Skip using `mounttargetip` mount option: %v", fileSystemId, err)
201201
}
202202
}
203203
}
204-
return mountOptions, nil
204+
return mountOptions, mountTargetAddress, nil
205205
}

pkg/driver/provisioner_dir_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ func TestDirectoryProvisioner_GetMountOptions_NoRoleArnGivesStandardOptions(t *t
572572
ctx := context.Background()
573573
expectedOptions := []string{"tls", "iam"}
574574

575-
options, _ := getMountOptions(ctx, mockCloud, fileSystemId, "", false)
575+
options, _, _ := getMountOptions(ctx, mockCloud, fileSystemId, "", false, "")
576576

577577
if !reflect.DeepEqual(options, expectedOptions) {
578578
t.Fatalf("Expected returned options to be %v but was %v", expectedOptions, options)
@@ -589,15 +589,19 @@ func TestDirectoryProvisioner_GetMountOptions_RoleArnAddsMountTargetIp(t *testin
589589
IPAddress: "8.8.8.8",
590590
}
591591
ctx := context.Background()
592-
mockCloud.EXPECT().DescribeMountTargets(ctx, fileSystemId, "").Return(&fakeMountTarget, nil)
592+
mockCloud.EXPECT().DescribeMountTargets(ctx, fileSystemId, "foo").Return(&fakeMountTarget, nil)
593593

594594
expectedOptions := []string{"tls", "iam", MountTargetIp + "=" + fakeMountTarget.IPAddress}
595595

596-
options, _ := getMountOptions(ctx, mockCloud, fileSystemId, "roleArn", false)
596+
options, mountTargetAddress, _ := getMountOptions(ctx, mockCloud, fileSystemId, "roleArn", false, "foo")
597597

598598
if !reflect.DeepEqual(options, expectedOptions) {
599599
t.Fatalf("Expected returned options to be %v but was %v", expectedOptions, options)
600600
}
601+
602+
if mountTargetAddress != fakeMountTarget.IPAddress {
603+
t.Fatalf("Expected returned mountTargetAddress to be %v but was %v", fakeMountTarget.IPAddress, mountTargetAddress)
604+
}
601605
}
602606

603607
func TestDirectoryProvisioner_GetMountOptions_RoleArnCross(t *testing.T) {
@@ -607,7 +611,7 @@ func TestDirectoryProvisioner_GetMountOptions_RoleArnCross(t *testing.T) {
607611

608612
expectedOptions := []string{"tls", "iam", CrossAccount}
609613

610-
options, _ := getMountOptions(ctx, mockCloud, fileSystemId, "roleArn", true)
614+
options, _, _ := getMountOptions(ctx, mockCloud, fileSystemId, "roleArn", true, "")
611615

612616
if !reflect.DeepEqual(options, expectedOptions) {
613617
t.Fatalf("Expected returned options to be %v but was %v", expectedOptions, options)

0 commit comments

Comments
 (0)