diff --git a/pkg/controller/persistentvolume/persistentvolume_controller.go b/pkg/controller/persistentvolume/persistentvolume_controller.go index 3259fbad1af..988cce6b27a 100644 --- a/pkg/controller/persistentvolume/persistentvolume_controller.go +++ b/pkg/controller/persistentvolume/persistentvolume_controller.go @@ -92,6 +92,7 @@ type PersistentVolumeController struct { claimControllerStopCh chan struct{} kubeClient clientset.Interface eventRecorder record.EventRecorder + cloud cloudprovider.Interface } // NewPersistentVolumeController creates a new PersistentVolumeController @@ -109,6 +110,7 @@ func NewPersistentVolumeController( controller := &PersistentVolumeController{ kubeClient: kubeClient, eventRecorder: recorder, + cloud: cloud, } volumeSource := &cache.ListWatch{ @@ -996,6 +998,8 @@ func (ctrl *PersistentVolumeController) reclaimVolume(volume *api.PersistentVolu return nil } +// Stateless functions + func hasAnnotation(obj api.ObjectMeta, ann string) bool { _, found := obj.Annotations[ann] return found diff --git a/pkg/controller/persistentvolume/persistentvolume_host.go b/pkg/controller/persistentvolume/persistentvolume_host.go new file mode 100644 index 00000000000..f38ad0da4ee --- /dev/null +++ b/pkg/controller/persistentvolume/persistentvolume_host.go @@ -0,0 +1,73 @@ +/* +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 persistentvolume + +import ( + "fmt" + + "k8s.io/kubernetes/pkg/api" + clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" + "k8s.io/kubernetes/pkg/cloudprovider" + "k8s.io/kubernetes/pkg/types" + "k8s.io/kubernetes/pkg/util/io" + "k8s.io/kubernetes/pkg/util/mount" + vol "k8s.io/kubernetes/pkg/volume" +) + +// VolumeHost interface implementation for PersistentVolumeController. + +var _ vol.VolumeHost = &PersistentVolumeController{} + +func (ctrl *PersistentVolumeController) GetPluginDir(pluginName string) string { + return "" +} + +func (ctrl *PersistentVolumeController) GetPodVolumeDir(podUID types.UID, pluginName string, volumeName string) string { + return "" +} + +func (ctrl *PersistentVolumeController) GetPodPluginDir(podUID types.UID, pluginName string) string { + return "" +} + +func (ctrl *PersistentVolumeController) GetKubeClient() clientset.Interface { + return ctrl.kubeClient +} + +func (ctrl *PersistentVolumeController) NewWrapperMounter(volName string, spec vol.Spec, pod *api.Pod, opts vol.VolumeOptions) (vol.Mounter, error) { + return nil, fmt.Errorf("PersistentVolumeController.NewWrapperMounter is not implemented") +} + +func (ctrl *PersistentVolumeController) NewWrapperUnmounter(volName string, spec vol.Spec, podUID types.UID) (vol.Unmounter, error) { + return nil, fmt.Errorf("PersistentVolumeController.NewWrapperMounter is not implemented") +} + +func (ctrl *PersistentVolumeController) GetCloudProvider() cloudprovider.Interface { + return ctrl.cloud +} + +func (ctrl *PersistentVolumeController) GetMounter() mount.Interface { + return nil +} + +func (ctrl *PersistentVolumeController) GetWriter() io.Writer { + return nil +} + +func (ctrl *PersistentVolumeController) GetHostName() string { + return "" +}