k8s.io/kubernetes@v1.29.3/pkg/kubelet/cm/container_manager_stub.go (about) 1 /* 2 Copyright 2015 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package cm 18 19 import ( 20 "fmt" 21 22 v1 "k8s.io/api/core/v1" 23 "k8s.io/klog/v2" 24 25 "k8s.io/apimachinery/pkg/api/resource" 26 "k8s.io/apimachinery/pkg/types" 27 internalapi "k8s.io/cri-api/pkg/apis" 28 podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" 29 "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" 30 "k8s.io/kubernetes/pkg/kubelet/cm/memorymanager" 31 "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" 32 "k8s.io/kubernetes/pkg/kubelet/config" 33 kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" 34 "k8s.io/kubernetes/pkg/kubelet/lifecycle" 35 "k8s.io/kubernetes/pkg/kubelet/pluginmanager/cache" 36 "k8s.io/kubernetes/pkg/kubelet/status" 37 schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework" 38 ) 39 40 type containerManagerStub struct { 41 shouldResetExtendedResourceCapacity bool 42 extendedPluginResources v1.ResourceList 43 } 44 45 var _ ContainerManager = &containerManagerStub{} 46 47 func (cm *containerManagerStub) Start(_ *v1.Node, _ ActivePodsFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService, _ bool) error { 48 klog.V(2).InfoS("Starting stub container manager") 49 return nil 50 } 51 52 func (cm *containerManagerStub) SystemCgroupsLimit() v1.ResourceList { 53 return v1.ResourceList{} 54 } 55 56 func (cm *containerManagerStub) GetNodeConfig() NodeConfig { 57 return NodeConfig{} 58 } 59 60 func (cm *containerManagerStub) GetMountedSubsystems() *CgroupSubsystems { 61 return &CgroupSubsystems{} 62 } 63 64 func (cm *containerManagerStub) GetQOSContainersInfo() QOSContainersInfo { 65 return QOSContainersInfo{} 66 } 67 68 func (cm *containerManagerStub) UpdateQOSCgroups() error { 69 return nil 70 } 71 72 func (cm *containerManagerStub) Status() Status { 73 return Status{} 74 } 75 76 func (cm *containerManagerStub) GetNodeAllocatableReservation() v1.ResourceList { 77 return nil 78 } 79 80 func (cm *containerManagerStub) GetCapacity(localStorageCapacityIsolation bool) v1.ResourceList { 81 if !localStorageCapacityIsolation { 82 return v1.ResourceList{} 83 } 84 c := v1.ResourceList{ 85 v1.ResourceEphemeralStorage: *resource.NewQuantity( 86 int64(0), 87 resource.BinarySI), 88 } 89 return c 90 } 91 92 func (cm *containerManagerStub) GetPluginRegistrationHandler() cache.PluginHandler { 93 return nil 94 } 95 96 func (cm *containerManagerStub) GetDevicePluginResourceCapacity() (v1.ResourceList, v1.ResourceList, []string) { 97 return cm.extendedPluginResources, cm.extendedPluginResources, []string{} 98 } 99 100 func (m *podContainerManagerStub) GetPodCgroupConfig(_ *v1.Pod, _ v1.ResourceName) (*ResourceConfig, error) { 101 return nil, fmt.Errorf("not implemented") 102 } 103 104 func (m *podContainerManagerStub) SetPodCgroupConfig(_ *v1.Pod, _ v1.ResourceName, _ *ResourceConfig) error { 105 return fmt.Errorf("not implemented") 106 } 107 108 func (cm *containerManagerStub) NewPodContainerManager() PodContainerManager { 109 return &podContainerManagerStub{} 110 } 111 112 func (cm *containerManagerStub) GetResources(pod *v1.Pod, container *v1.Container) (*kubecontainer.RunContainerOptions, error) { 113 return &kubecontainer.RunContainerOptions{}, nil 114 } 115 116 func (cm *containerManagerStub) UpdatePluginResources(*schedulerframework.NodeInfo, *lifecycle.PodAdmitAttributes) error { 117 return nil 118 } 119 120 func (cm *containerManagerStub) InternalContainerLifecycle() InternalContainerLifecycle { 121 return &internalContainerLifecycleImpl{cpumanager.NewFakeManager(), memorymanager.NewFakeManager(), topologymanager.NewFakeManager()} 122 } 123 124 func (cm *containerManagerStub) GetPodCgroupRoot() string { 125 return "" 126 } 127 128 func (cm *containerManagerStub) GetDevices(_, _ string) []*podresourcesapi.ContainerDevices { 129 return nil 130 } 131 132 func (cm *containerManagerStub) GetAllocatableDevices() []*podresourcesapi.ContainerDevices { 133 return nil 134 } 135 136 func (cm *containerManagerStub) ShouldResetExtendedResourceCapacity() bool { 137 return cm.shouldResetExtendedResourceCapacity 138 } 139 140 func (cm *containerManagerStub) GetAllocateResourcesPodAdmitHandler() lifecycle.PodAdmitHandler { 141 return topologymanager.NewFakeManager() 142 } 143 144 func (cm *containerManagerStub) UpdateAllocatedDevices() { 145 return 146 } 147 148 func (cm *containerManagerStub) GetCPUs(_, _ string) []int64 { 149 return nil 150 } 151 152 func (cm *containerManagerStub) GetAllocatableCPUs() []int64 { 153 return nil 154 } 155 156 func (cm *containerManagerStub) GetMemory(_, _ string) []*podresourcesapi.ContainerMemory { 157 return nil 158 } 159 160 func (cm *containerManagerStub) GetAllocatableMemory() []*podresourcesapi.ContainerMemory { 161 return nil 162 } 163 164 func (cm *containerManagerStub) GetDynamicResources(pod *v1.Pod, container *v1.Container) []*podresourcesapi.DynamicResource { 165 return nil 166 } 167 168 func (cm *containerManagerStub) GetNodeAllocatableAbsolute() v1.ResourceList { 169 return nil 170 } 171 172 func (cm *containerManagerStub) PrepareDynamicResources(pod *v1.Pod) error { 173 return nil 174 } 175 176 func (cm *containerManagerStub) UnprepareDynamicResources(*v1.Pod) error { 177 return nil 178 } 179 180 func (cm *containerManagerStub) PodMightNeedToUnprepareResources(UID types.UID) bool { 181 return false 182 } 183 184 func NewStubContainerManager() ContainerManager { 185 return &containerManagerStub{shouldResetExtendedResourceCapacity: false} 186 } 187 188 func NewStubContainerManagerWithExtendedResource(shouldResetExtendedResourceCapacity bool) ContainerManager { 189 return &containerManagerStub{shouldResetExtendedResourceCapacity: shouldResetExtendedResourceCapacity} 190 } 191 192 func NewStubContainerManagerWithDevicePluginResource(extendedPluginResources v1.ResourceList) ContainerManager { 193 return &containerManagerStub{ 194 shouldResetExtendedResourceCapacity: false, 195 extendedPluginResources: extendedPluginResources, 196 } 197 }