Skip to content

Commit 51e0bd2

Browse files
committed
feat: add azure shared disk support
fix comment
1 parent 295b53f commit 51e0bd2

File tree

1 file changed

+24
-15
lines changed

1 file changed

+24
-15
lines changed

pkg/volume/azure_dd/azure_provision.go

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -93,26 +93,11 @@ func parseZoned(zonedString string, kind v1.AzureDataDiskKind) (bool, error) {
9393
}
9494

9595
func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologies []v1.TopologySelectorTerm) (*v1.PersistentVolume, error) {
96-
if !util.AccessModesContainedInAll(p.plugin.GetAccessModes(), p.options.PVC.Spec.AccessModes) {
97-
return nil, fmt.Errorf("invalid AccessModes %v: only AccessModes %v are supported", p.options.PVC.Spec.AccessModes, p.plugin.GetAccessModes())
98-
}
99-
supportedModes := p.plugin.GetAccessModes()
100-
10196
// perform static validation first
10297
if p.options.PVC.Spec.Selector != nil {
10398
return nil, fmt.Errorf("azureDisk - claim.Spec.Selector is not supported for dynamic provisioning on Azure disk")
10499
}
105100

106-
if len(p.options.PVC.Spec.AccessModes) > 1 {
107-
return nil, fmt.Errorf("AzureDisk - multiple access modes are not supported on AzureDisk plugin")
108-
}
109-
110-
if len(p.options.PVC.Spec.AccessModes) == 1 {
111-
if p.options.PVC.Spec.AccessModes[0] != supportedModes[0] {
112-
return nil, fmt.Errorf("AzureDisk - mode %s is not supported by AzureDisk plugin (supported mode is %s)", p.options.PVC.Spec.AccessModes[0], supportedModes)
113-
}
114-
}
115-
116101
var (
117102
location, account string
118103
storageAccountType, fsType string
@@ -194,6 +179,30 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
194179
}
195180
}
196181

182+
supportedModes := p.plugin.GetAccessModes()
183+
if maxShares < 2 {
184+
// only do AccessModes validation when maxShares < 2
185+
if !util.AccessModesContainedInAll(p.plugin.GetAccessModes(), p.options.PVC.Spec.AccessModes) {
186+
return nil, fmt.Errorf("invalid AccessModes %v: only AccessModes %v are supported with maxShares(%d) < 2", p.options.PVC.Spec.AccessModes, p.plugin.GetAccessModes(), maxShares)
187+
}
188+
189+
if len(p.options.PVC.Spec.AccessModes) > 1 {
190+
return nil, fmt.Errorf("AzureDisk - multiple access modes are not supported on AzureDisk plugin with maxShares(%d) < 2", maxShares)
191+
}
192+
193+
if len(p.options.PVC.Spec.AccessModes) == 1 {
194+
if p.options.PVC.Spec.AccessModes[0] != supportedModes[0] {
195+
return nil, fmt.Errorf("AzureDisk - mode %s is not supported by AzureDisk plugin (supported mode is %s) with maxShares(%d) < 2", p.options.PVC.Spec.AccessModes[0], supportedModes, maxShares)
196+
}
197+
}
198+
} else {
199+
supportedModes = []v1.PersistentVolumeAccessMode{
200+
v1.ReadWriteOnce,
201+
v1.ReadOnlyMany,
202+
v1.ReadWriteMany,
203+
}
204+
}
205+
197206
// normalize values
198207
skuName, err := normalizeStorageAccountType(storageAccountType)
199208
if err != nil {

0 commit comments

Comments
 (0)