diff --git a/pkg/volume/glusterfs/glusterfs.go b/pkg/volume/glusterfs/glusterfs.go index cd30036645..df4fc694cf 100644 --- a/pkg/volume/glusterfs/glusterfs.go +++ b/pkg/volume/glusterfs/glusterfs.go @@ -73,7 +73,12 @@ const ( gciGlusterMountBinariesPath = "/sbin/mount.glusterfs" defaultGidMin = 2000 defaultGidMax = math.MaxInt32 - absoluteGidMax = math.MaxInt32 + // absoluteGidMin/Max are currently the same as the + // default values, but they play a different role and + // could take a different value. Only thing we need is: + // absGidMin <= defGidMin <= defGidMax <= absGidMax + absoluteGidMin = 2000 + absoluteGidMax = math.MaxInt32 ) func (plugin *glusterfsPlugin) Init(host volume.VolumeHost) error { @@ -849,6 +854,9 @@ func parseClassParameters(params map[string]string, kubeClient clientset.Interfa var cfg provisioningConfig var err error + cfg.gidMin = defaultGidMin + cfg.gidMax = defaultGidMax + authEnabled := true for k, v := range params { switch dstrings.ToLower(k) { @@ -873,12 +881,24 @@ func parseClassParameters(params map[string]string, kubeClient clientset.Interfa if err != nil { return nil, fmt.Errorf("glusterfs: invalid value %q for volume plugin %s", k, glusterfsPluginName) } + if parseGidMin < absoluteGidMin { + return nil, fmt.Errorf("glusterfs: gidMin must be >= %v", absoluteGidMin) + } + if parseGidMin > absoluteGidMax { + return nil, fmt.Errorf("glusterfs: gidMin must be <= %v", absoluteGidMax) + } cfg.gidMin = parseGidMin case "gidmax": parseGidMax, err := convertGid(v) if err != nil { return nil, fmt.Errorf("glusterfs: invalid value %q for volume plugin %s", k, glusterfsPluginName) } + if parseGidMax < absoluteGidMin { + return nil, fmt.Errorf("glusterfs: gidMax must be >= %v", absoluteGidMin) + } + if parseGidMax > absoluteGidMax { + return nil, fmt.Errorf("glusterfs: gidMax must be <= %v", absoluteGidMax) + } cfg.gidMax = parseGidMax default: return nil, fmt.Errorf("glusterfs: invalid option %q for volume plugin %s", k, glusterfsPluginName) @@ -911,14 +931,6 @@ func parseClassParameters(params map[string]string, kubeClient clientset.Interfa cfg.secretValue = cfg.userKey } - if cfg.gidMin == 0 { - cfg.gidMin = defaultGidMin - } - - if cfg.gidMax == 0 { - cfg.gidMax = defaultGidMax - } - if cfg.gidMin > cfg.gidMax { return nil, fmt.Errorf("StorageClass for provisioner %q must have gidMax value >= gidMin", glusterfsPluginName) }