From 0855f6a08995c17a6449387323d8af5a83521fde Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Wed, 23 Aug 2017 13:36:07 -0400 Subject: [PATCH] Add MountOptions field to PV spec --- pkg/api/types.go | 4 ++++ pkg/volume/util.go | 5 +++++ staging/src/k8s.io/api/core/v1/types.go | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/pkg/api/types.go b/pkg/api/types.go index 7359453dafc..f6bf10f5b66 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -455,6 +455,10 @@ type PersistentVolumeSpec struct { // means that this volume does not belong to any StorageClass. // +optional StorageClassName string + // A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will + // simply fail if one is invalid. + // +optional + MountOptions []string } // PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes diff --git a/pkg/volume/util.go b/pkg/volume/util.go index 0d2ee3bed2c..6999b91beca 100644 --- a/pkg/volume/util.go +++ b/pkg/volume/util.go @@ -389,12 +389,17 @@ func MountOptionFromSpec(spec *Spec, options ...string) []string { pv := spec.PersistentVolume if pv != nil { + // Use beta annotation first if mo, ok := pv.Annotations[v1.MountOptionAnnotation]; ok { moList := strings.Split(mo, ",") return JoinMountOptions(moList, options) } + if len(pv.Spec.MountOptions) > 0 { + return JoinMountOptions(pv.Spec.MountOptions, options) + } } + return options } diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go index e5e58c0d84f..fa5eedfd089 100644 --- a/staging/src/k8s.io/api/core/v1/types.go +++ b/staging/src/k8s.io/api/core/v1/types.go @@ -519,6 +519,11 @@ type PersistentVolumeSpec struct { // means that this volume does not belong to any StorageClass. // +optional StorageClassName string `json:"storageClassName,omitempty" protobuf:"bytes,6,opt,name=storageClassName"` + // A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will + // simply fail if one is invalid. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options + // +optional + MountOptions []string `json:"mountOptions,omitempty" protobuf:"bytes,7,opt,name=mountOptions"` } // PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes.