2016-02-05 04:56:36 -05:00
/ *
Copyright 2016 The Kubernetes Authors All rights reserved .
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
package options
import (
"time"
"github.com/spf13/pflag"
)
// VolumeConfigFlags is used to bind CLI flags to variables. This top-level struct contains *all* enumerated
// CLI flags meant to configure all volume plugins. From this config, the binary will create many instances
// of volume.VolumeConfig which are then passed to the appropriate plugin. The ControllerManager binary is the only
// part of the code which knows what plugins are supported and which CLI flags correspond to each plugin.
type VolumeConfigFlags struct {
2016-02-05 11:02:13 -05:00
PersistentVolumeRecyclerMaximumRetry int
2016-02-05 04:56:36 -05:00
PersistentVolumeRecyclerMinimumTimeoutNFS int
PersistentVolumeRecyclerPodTemplateFilePathNFS string
PersistentVolumeRecyclerIncrementTimeoutNFS int
PersistentVolumeRecyclerPodTemplateFilePathHostPath string
PersistentVolumeRecyclerMinimumTimeoutHostPath int
PersistentVolumeRecyclerIncrementTimeoutHostPath int
EnableHostPathProvisioning bool
}
type PersistentVolumeControllerOptions struct {
PVClaimBinderSyncPeriod time . Duration
VolumeConfigFlags VolumeConfigFlags
}
func NewPersistentVolumeControllerOptions ( ) PersistentVolumeControllerOptions {
return PersistentVolumeControllerOptions {
PVClaimBinderSyncPeriod : 10 * time . Minute ,
VolumeConfigFlags : VolumeConfigFlags {
// default values here
2016-02-05 11:02:13 -05:00
PersistentVolumeRecyclerMaximumRetry : 3 ,
2016-02-05 04:56:36 -05:00
PersistentVolumeRecyclerMinimumTimeoutNFS : 300 ,
PersistentVolumeRecyclerIncrementTimeoutNFS : 30 ,
PersistentVolumeRecyclerMinimumTimeoutHostPath : 60 ,
PersistentVolumeRecyclerIncrementTimeoutHostPath : 30 ,
EnableHostPathProvisioning : false ,
} ,
}
}
func ( o * PersistentVolumeControllerOptions ) AddFlags ( fs * pflag . FlagSet ) {
fs . DurationVar ( & o . PVClaimBinderSyncPeriod , "pvclaimbinder-sync-period" , o . PVClaimBinderSyncPeriod ,
"The period for syncing persistent volumes and persistent volume claims" )
fs . StringVar ( & o . VolumeConfigFlags . PersistentVolumeRecyclerPodTemplateFilePathNFS ,
"pv-recycler-pod-template-filepath-nfs" , o . VolumeConfigFlags . PersistentVolumeRecyclerPodTemplateFilePathNFS ,
"The file path to a pod definition used as a template for NFS persistent volume recycling" )
fs . IntVar ( & o . VolumeConfigFlags . PersistentVolumeRecyclerMinimumTimeoutNFS , "pv-recycler-minimum-timeout-nfs" ,
o . VolumeConfigFlags . PersistentVolumeRecyclerMinimumTimeoutNFS , "The minimum ActiveDeadlineSeconds to use for an NFS Recycler pod" )
fs . IntVar ( & o . VolumeConfigFlags . PersistentVolumeRecyclerIncrementTimeoutNFS , "pv-recycler-increment-timeout-nfs" ,
o . VolumeConfigFlags . PersistentVolumeRecyclerIncrementTimeoutNFS , "the increment of time added per Gi to ActiveDeadlineSeconds for an NFS scrubber pod" )
fs . StringVar ( & o . VolumeConfigFlags . PersistentVolumeRecyclerPodTemplateFilePathHostPath , "pv-recycler-pod-template-filepath-hostpath" ,
o . VolumeConfigFlags . PersistentVolumeRecyclerPodTemplateFilePathHostPath ,
"The file path to a pod definition used as a template for HostPath persistent volume recycling. " +
"This is for development and testing only and will not work in a multi-node cluster." )
fs . IntVar ( & o . VolumeConfigFlags . PersistentVolumeRecyclerMinimumTimeoutHostPath , "pv-recycler-minimum-timeout-hostpath" ,
o . VolumeConfigFlags . PersistentVolumeRecyclerMinimumTimeoutHostPath ,
"The minimum ActiveDeadlineSeconds to use for a HostPath Recycler pod. This is for development and testing only and will not work in a multi-node cluster." )
fs . IntVar ( & o . VolumeConfigFlags . PersistentVolumeRecyclerIncrementTimeoutHostPath , "pv-recycler-timeout-increment-hostpath" ,
o . VolumeConfigFlags . PersistentVolumeRecyclerIncrementTimeoutHostPath ,
"the increment of time added per Gi to ActiveDeadlineSeconds for a HostPath scrubber pod. " +
"This is for development and testing only and will not work in a multi-node cluster." )
2016-02-05 11:02:13 -05:00
fs . IntVar ( & o . VolumeConfigFlags . PersistentVolumeRecyclerMaximumRetry , "pv-recycler-maximum-retry" ,
o . VolumeConfigFlags . PersistentVolumeRecyclerMaximumRetry ,
"Maximum number of attempts to recycle or delete a persistent volume" )
2016-02-05 04:56:36 -05:00
fs . BoolVar ( & o . VolumeConfigFlags . EnableHostPathProvisioning , "enable-hostpath-provisioner" , o . VolumeConfigFlags . EnableHostPathProvisioning ,
"Enable HostPath PV provisioning when running without a cloud provider. This allows testing and development of provisioning features. " +
"HostPath provisioning is not supported in any way, won't work in a multi-node cluster, and should not be used for anything other than testing or development." )
}