1/* 2Copyright 2016 The Kubernetes Authors. 3 4Licensed under the Apache License, Version 2.0 (the "License"); 5you may not use this file except in compliance with the License. 6You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10Unless required by applicable law or agreed to in writing, software 11distributed under the License is distributed on an "AS IS" BASIS, 12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13See the License for the specific language governing permissions and 14limitations under the License. 15*/ 16 17package persistentvolume 18 19import ( 20 "fmt" 21 "net" 22 23 "k8s.io/klog/v2" 24 "k8s.io/mount-utils" 25 utilexec "k8s.io/utils/exec" 26 27 authenticationv1 "k8s.io/api/authentication/v1" 28 v1 "k8s.io/api/core/v1" 29 "k8s.io/apimachinery/pkg/types" 30 clientset "k8s.io/client-go/kubernetes" 31 "k8s.io/client-go/tools/record" 32 cloudprovider "k8s.io/cloud-provider" 33 proxyutil "k8s.io/kubernetes/pkg/proxy/util" 34 vol "k8s.io/kubernetes/pkg/volume" 35 "k8s.io/kubernetes/pkg/volume/util/subpath" 36) 37 38// VolumeHost interface implementation for PersistentVolumeController. 39 40var _ vol.VolumeHost = &PersistentVolumeController{} 41 42func (ctrl *PersistentVolumeController) GetPluginDir(pluginName string) string { 43 return "" 44} 45 46func (ctrl *PersistentVolumeController) GetVolumeDevicePluginDir(pluginName string) string { 47 return "" 48} 49 50func (ctrl *PersistentVolumeController) GetPodsDir() string { 51 return "" 52} 53 54func (ctrl *PersistentVolumeController) GetPodVolumeDir(podUID types.UID, pluginName string, volumeName string) string { 55 return "" 56} 57 58func (ctrl *PersistentVolumeController) GetPodPluginDir(podUID types.UID, pluginName string) string { 59 return "" 60} 61 62func (ctrl *PersistentVolumeController) GetPodVolumeDeviceDir(ppodUID types.UID, pluginName string) string { 63 return "" 64} 65 66func (ctrl *PersistentVolumeController) GetKubeClient() clientset.Interface { 67 return ctrl.kubeClient 68} 69 70func (ctrl *PersistentVolumeController) NewWrapperMounter(volName string, spec vol.Spec, pod *v1.Pod, opts vol.VolumeOptions) (vol.Mounter, error) { 71 return nil, fmt.Errorf("PersistentVolumeController.NewWrapperMounter is not implemented") 72} 73 74func (ctrl *PersistentVolumeController) NewWrapperUnmounter(volName string, spec vol.Spec, podUID types.UID) (vol.Unmounter, error) { 75 return nil, fmt.Errorf("PersistentVolumeController.NewWrapperMounter is not implemented") 76} 77 78func (ctrl *PersistentVolumeController) GetCloudProvider() cloudprovider.Interface { 79 return ctrl.cloud 80} 81 82func (ctrl *PersistentVolumeController) GetMounter(pluginName string) mount.Interface { 83 return nil 84} 85 86func (ctrl *PersistentVolumeController) GetHostName() string { 87 return "" 88} 89 90func (ctrl *PersistentVolumeController) GetHostIP() (net.IP, error) { 91 return nil, fmt.Errorf("PersistentVolumeController.GetHostIP() is not implemented") 92} 93 94func (ctrl *PersistentVolumeController) GetNodeAllocatable() (v1.ResourceList, error) { 95 return v1.ResourceList{}, nil 96} 97 98func (ctrl *PersistentVolumeController) GetSecretFunc() func(namespace, name string) (*v1.Secret, error) { 99 return func(_, _ string) (*v1.Secret, error) { 100 return nil, fmt.Errorf("GetSecret unsupported in PersistentVolumeController") 101 } 102} 103 104func (ctrl *PersistentVolumeController) GetConfigMapFunc() func(namespace, name string) (*v1.ConfigMap, error) { 105 return func(_, _ string) (*v1.ConfigMap, error) { 106 return nil, fmt.Errorf("GetConfigMap unsupported in PersistentVolumeController") 107 } 108} 109 110func (ctrl *PersistentVolumeController) GetServiceAccountTokenFunc() func(_, _ string, _ *authenticationv1.TokenRequest) (*authenticationv1.TokenRequest, error) { 111 return func(_, _ string, _ *authenticationv1.TokenRequest) (*authenticationv1.TokenRequest, error) { 112 return nil, fmt.Errorf("GetServiceAccountToken unsupported in PersistentVolumeController") 113 } 114} 115 116func (ctrl *PersistentVolumeController) DeleteServiceAccountTokenFunc() func(types.UID) { 117 return func(types.UID) { 118 klog.Errorf("DeleteServiceAccountToken unsupported in PersistentVolumeController") 119 } 120} 121 122func (adc *PersistentVolumeController) GetExec(pluginName string) utilexec.Interface { 123 return utilexec.New() 124} 125 126func (ctrl *PersistentVolumeController) GetNodeLabels() (map[string]string, error) { 127 return nil, fmt.Errorf("GetNodeLabels() unsupported in PersistentVolumeController") 128} 129 130func (ctrl *PersistentVolumeController) GetNodeName() types.NodeName { 131 return "" 132} 133 134func (ctrl *PersistentVolumeController) GetEventRecorder() record.EventRecorder { 135 return ctrl.eventRecorder 136} 137 138func (ctrl *PersistentVolumeController) GetSubpather() subpath.Interface { 139 // No volume plugin needs Subpaths in PV controller. 140 return nil 141} 142 143func (ctrl *PersistentVolumeController) GetFilteredDialOptions() *proxyutil.FilteredDialOptions { 144 return ctrl.filteredDialOptions 145} 146