1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- Copyright 2016 The Kubernetes Authors.
- 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 {
- PersistentVolumeRecyclerMaximumRetry int
- PersistentVolumeRecyclerMinimumTimeoutNFS int
- PersistentVolumeRecyclerPodTemplateFilePathNFS string
- PersistentVolumeRecyclerIncrementTimeoutNFS int
- PersistentVolumeRecyclerPodTemplateFilePathHostPath string
- PersistentVolumeRecyclerMinimumTimeoutHostPath int
- PersistentVolumeRecyclerIncrementTimeoutHostPath int
- EnableHostPathProvisioning bool
- EnableDynamicProvisioning bool
- }
- type PersistentVolumeControllerOptions struct {
- PVClaimBinderSyncPeriod time.Duration
- VolumeConfigFlags VolumeConfigFlags
- }
- func NewPersistentVolumeControllerOptions() PersistentVolumeControllerOptions {
- return PersistentVolumeControllerOptions{
- PVClaimBinderSyncPeriod: 15 * time.Second,
- VolumeConfigFlags: VolumeConfigFlags{
- // default values here
- PersistentVolumeRecyclerMaximumRetry: 3,
- PersistentVolumeRecyclerMinimumTimeoutNFS: 300,
- PersistentVolumeRecyclerIncrementTimeoutNFS: 30,
- PersistentVolumeRecyclerMinimumTimeoutHostPath: 60,
- PersistentVolumeRecyclerIncrementTimeoutHostPath: 30,
- EnableHostPathProvisioning: false,
- EnableDynamicProvisioning: true,
- },
- }
- }
- 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.")
- fs.IntVar(&o.VolumeConfigFlags.PersistentVolumeRecyclerMaximumRetry, "pv-recycler-maximum-retry",
- o.VolumeConfigFlags.PersistentVolumeRecyclerMaximumRetry,
- "Maximum number of attempts to recycle or delete a persistent volume")
- 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.")
- fs.BoolVar(&o.VolumeConfigFlags.EnableDynamicProvisioning, "enable-dynamic-provisioning", o.VolumeConfigFlags.EnableDynamicProvisioning,
- "Enable dynamic provisioning for environments that support it.")
- }
|