Skip to content

Commit 15a6cc2

Browse files
committed
feat: add accessMode in storageClassMap
fix
1 parent 69126cd commit 15a6cc2

File tree

6 files changed

+22
-3
lines changed

6 files changed

+22
-3
lines changed

Diff for: deployment/kubernetes/example/default_example_provisioner_generated.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ data:
1515
- "/scripts/shred.sh"
1616
- "2"
1717
volumeMode: Filesystem
18+
accessMode: ReadWriteOnce
1819
fsType: ext4
1920
namePattern: "*"
2021
---

Diff for: docs/provisioner.md

+2
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ data:
128128
# # intended to use as a formatted filesystem volume or to remain in block
129129
# # state. Value of Filesystem is implied when omitted.
130130
# volumeMode: Filesystem
131+
# # Access mode of the volume. default to ReadWriteOnce if not specified.
132+
# accessMode: ReadWriteOnce
131133
# # The filesystem to format before mounting on the node. This applies
132134
# # only when the volume source is a device and mode is Filesystem.
133135
# # The default value is to auto-select a filesystem in Kubernetes if unspecified.

Diff for: helm/examples/baremetal-default-storage.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ classes:
22
- name: local-storage
33
hostDir: /mnt/disks
44
volumeMode: Filesystem
5+
accessMode: ReadWriteOnce
56
storageClass:
67
# create and set storage class as default
78
isDefaultClass: true

Diff for: helm/provisioner/values.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ classes:
6262
# The volume mode of created PersistentVolume object. Default to Filesystem
6363
# if not specified.
6464
volumeMode: Filesystem
65+
# Access mode of the volume. default to ReadWriteOnce if not specified.
66+
accessMode: ReadWriteOnce
6567
# Filesystem type to mount.
6668
# It applies only when the source path is a block device,
6769
# and desire volume mode is Filesystem.

Diff for: pkg/common/common.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@ type MountConfig struct {
132132
// The volume mode of created PersistentVolume object,
133133
// default to Filesystem if not specified.
134134
VolumeMode string `json:"volumeMode" yaml:"volumeMode"`
135+
// The access mode of created PersistentVolume object
136+
// default to ReadWriteOnce if not specified.
137+
AccessMode string `json:"accessMode" yaml:"accessMode"`
135138
// Filesystem type to mount.
136139
// It applies only when the source path is a block device,
137140
// and desire volume mode is Filesystem.
@@ -180,6 +183,7 @@ type LocalPVConfig struct {
180183
AffinityAnn string
181184
NodeAffinity *v1.VolumeNodeAffinity
182185
VolumeMode v1.PersistentVolumeMode
186+
AccessMode v1.PersistentVolumeAccessMode
183187
MountOptions []string
184188
FsType *string
185189
Labels map[string]string
@@ -248,14 +252,18 @@ func CreateLocalPVSpec(config *LocalPVConfig) *v1.PersistentVolume {
248252
},
249253
},
250254
AccessModes: []v1.PersistentVolumeAccessMode{
251-
v1.ReadWriteOnce,
255+
config.AccessMode,
252256
},
253257
StorageClassName: config.StorageClass,
254258
VolumeMode: &config.VolumeMode,
255259
MountOptions: config.MountOptions,
256260
},
257261
}
258262

263+
if config.AccessMode == "" {
264+
pv.Spec.AccessModes = []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}
265+
}
266+
259267
if config.UseAlphaAPI {
260268
pv.ObjectMeta.Annotations[AlphaStorageNodeAffinityAnnotation] = config.AffinityAnn
261269
} else {

Diff for: pkg/discovery/discovery.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,10 @@ func (d *Discoverer) discoverVolumesAtPath(class string, config common.MountConf
305305
}
306306

307307
var capacityByte int64
308+
desiredAccessMode := v1.ReadWriteOnce
309+
if config.AccessMode != "" {
310+
desiredAccessMode = v1.PersistentVolumeAccessMode(config.AccessMode)
311+
}
308312
desireVolumeMode := v1.PersistentVolumeMode(config.VolumeMode)
309313
switch volMode {
310314
case v1.PersistentVolumeBlock:
@@ -345,7 +349,7 @@ func (d *Discoverer) discoverVolumesAtPath(class string, config common.MountConf
345349
continue
346350
}
347351

348-
err = d.createPV(file, class, reclaimPolicy, mountOptions, config, capacityByte, desireVolumeMode, startTime)
352+
err = d.createPV(file, class, reclaimPolicy, mountOptions, config, capacityByte, desireVolumeMode, desiredAccessMode, startTime)
349353
if err != nil {
350354
discoErrors = append(discoErrors, err)
351355
}
@@ -367,7 +371,7 @@ func generatePVName(file, node, class string) string {
367371
return fmt.Sprintf("local-pv-%x", h.Sum32())
368372
}
369373

370-
func (d *Discoverer) createPV(file, class string, reclaimPolicy v1.PersistentVolumeReclaimPolicy, mountOptions []string, config common.MountConfig, capacityByte int64, volMode v1.PersistentVolumeMode, startTime time.Time) error {
374+
func (d *Discoverer) createPV(file, class string, reclaimPolicy v1.PersistentVolumeReclaimPolicy, mountOptions []string, config common.MountConfig, capacityByte int64, volMode v1.PersistentVolumeMode, accessMode v1.PersistentVolumeAccessMode, startTime time.Time) error {
371375
pvName := generatePVName(file, d.Node.Name, class)
372376
outsidePath := filepath.Join(config.HostDir, file)
373377

@@ -382,6 +386,7 @@ func (d *Discoverer) createPV(file, class string, reclaimPolicy v1.PersistentVol
382386
ReclaimPolicy: reclaimPolicy,
383387
ProvisionerName: d.Name,
384388
VolumeMode: volMode,
389+
AccessMode: accessMode,
385390
Labels: d.Labels,
386391
MountOptions: mountOptions,
387392
SetPVOwnerRef: d.SetPVOwnerRef,

0 commit comments

Comments
 (0)