k8s.io/kubernetes@v1.29.3/pkg/kubelet/cm/fake_container_manager.go (about) 1 /* 2 Copyright 2021 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 "sync" 21 22 v1 "k8s.io/api/core/v1" 23 24 "k8s.io/apimachinery/pkg/api/resource" 25 "k8s.io/apimachinery/pkg/types" 26 internalapi "k8s.io/cri-api/pkg/apis" 27 podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" 28 "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" 29 "k8s.io/kubernetes/pkg/kubelet/cm/memorymanager" 30 "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" 31 "k8s.io/kubernetes/pkg/kubelet/config" 32 kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" 33 "k8s.io/kubernetes/pkg/kubelet/lifecycle" 34 "k8s.io/kubernetes/pkg/kubelet/pluginmanager/cache" 35 "k8s.io/kubernetes/pkg/kubelet/status" 36 schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework" 37 ) 38 39 type FakeContainerManager struct { 40 sync.Mutex 41 CalledFunctions []string 42 PodContainerManager *FakePodContainerManager 43 shouldResetExtendedResourceCapacity bool 44 } 45 46 var _ ContainerManager = &FakeContainerManager{} 47 48 func NewFakeContainerManager() *FakeContainerManager { 49 return &FakeContainerManager{ 50 PodContainerManager: NewFakePodContainerManager(), 51 } 52 } 53 54 func (cm *FakeContainerManager) Start(_ *v1.Node, _ ActivePodsFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService, _ bool) error { 55 cm.Lock() 56 defer cm.Unlock() 57 cm.CalledFunctions = append(cm.CalledFunctions, "Start") 58 return nil 59 } 60 61 func (cm *FakeContainerManager) SystemCgroupsLimit() v1.ResourceList { 62 cm.Lock() 63 defer cm.Unlock() 64 cm.CalledFunctions = append(cm.CalledFunctions, "SystemCgroupsLimit") 65 return v1.ResourceList{} 66 } 67 68 func (cm *FakeContainerManager) GetNodeConfig() NodeConfig { 69 cm.Lock() 70 defer cm.Unlock() 71 cm.CalledFunctions = append(cm.CalledFunctions, "GetNodeConfig") 72 return NodeConfig{} 73 } 74 75 func (cm *FakeContainerManager) GetMountedSubsystems() *CgroupSubsystems { 76 cm.Lock() 77 defer cm.Unlock() 78 cm.CalledFunctions = append(cm.CalledFunctions, "GetMountedSubsystems") 79 return &CgroupSubsystems{} 80 } 81 82 func (cm *FakeContainerManager) GetQOSContainersInfo() QOSContainersInfo { 83 cm.Lock() 84 defer cm.Unlock() 85 cm.CalledFunctions = append(cm.CalledFunctions, "QOSContainersInfo") 86 return QOSContainersInfo{} 87 } 88 89 func (cm *FakeContainerManager) UpdateQOSCgroups() error { 90 cm.Lock() 91 defer cm.Unlock() 92 cm.CalledFunctions = append(cm.CalledFunctions, "UpdateQOSCgroups") 93 return nil 94 } 95 96 func (cm *FakeContainerManager) Status() Status { 97 cm.Lock() 98 defer cm.Unlock() 99 cm.CalledFunctions = append(cm.CalledFunctions, "Status") 100 return Status{} 101 } 102 103 func (cm *FakeContainerManager) GetNodeAllocatableReservation() v1.ResourceList { 104 cm.Lock() 105 defer cm.Unlock() 106 cm.CalledFunctions = append(cm.CalledFunctions, "GetNodeAllocatableReservation") 107 return nil 108 } 109 110 func (cm *FakeContainerManager) GetCapacity(localStorageCapacityIsolation bool) v1.ResourceList { 111 cm.Lock() 112 defer cm.Unlock() 113 cm.CalledFunctions = append(cm.CalledFunctions, "GetCapacity") 114 if !localStorageCapacityIsolation { 115 return v1.ResourceList{} 116 } 117 c := v1.ResourceList{ 118 v1.ResourceEphemeralStorage: *resource.NewQuantity( 119 int64(0), 120 resource.BinarySI), 121 } 122 return c 123 } 124 125 func (cm *FakeContainerManager) GetPluginRegistrationHandler() cache.PluginHandler { 126 cm.Lock() 127 defer cm.Unlock() 128 cm.CalledFunctions = append(cm.CalledFunctions, "GetPluginRegistrationHandler") 129 return nil 130 } 131 132 func (cm *FakeContainerManager) GetDevicePluginResourceCapacity() (v1.ResourceList, v1.ResourceList, []string) { 133 cm.Lock() 134 defer cm.Unlock() 135 cm.CalledFunctions = append(cm.CalledFunctions, "GetDevicePluginResourceCapacity") 136 return nil, nil, []string{} 137 } 138 139 func (cm *FakeContainerManager) NewPodContainerManager() PodContainerManager { 140 cm.Lock() 141 defer cm.Unlock() 142 cm.CalledFunctions = append(cm.CalledFunctions, "PodContainerManager") 143 return cm.PodContainerManager 144 } 145 146 func (cm *FakeContainerManager) GetResources(pod *v1.Pod, container *v1.Container) (*kubecontainer.RunContainerOptions, error) { 147 cm.Lock() 148 defer cm.Unlock() 149 cm.CalledFunctions = append(cm.CalledFunctions, "GetResources") 150 return &kubecontainer.RunContainerOptions{}, nil 151 } 152 153 func (cm *FakeContainerManager) UpdatePluginResources(*schedulerframework.NodeInfo, *lifecycle.PodAdmitAttributes) error { 154 cm.Lock() 155 defer cm.Unlock() 156 cm.CalledFunctions = append(cm.CalledFunctions, "UpdatePluginResources") 157 return nil 158 } 159 160 func (cm *FakeContainerManager) InternalContainerLifecycle() InternalContainerLifecycle { 161 cm.Lock() 162 defer cm.Unlock() 163 cm.CalledFunctions = append(cm.CalledFunctions, "InternalContainerLifecycle") 164 return &internalContainerLifecycleImpl{cpumanager.NewFakeManager(), memorymanager.NewFakeManager(), topologymanager.NewFakeManager()} 165 } 166 167 func (cm *FakeContainerManager) GetPodCgroupRoot() string { 168 cm.Lock() 169 defer cm.Unlock() 170 cm.CalledFunctions = append(cm.CalledFunctions, "GetPodCgroupRoot") 171 return "" 172 } 173 174 func (cm *FakeContainerManager) GetDevices(_, _ string) []*podresourcesapi.ContainerDevices { 175 cm.Lock() 176 defer cm.Unlock() 177 cm.CalledFunctions = append(cm.CalledFunctions, "GetDevices") 178 return nil 179 } 180 181 func (cm *FakeContainerManager) GetAllocatableDevices() []*podresourcesapi.ContainerDevices { 182 cm.Lock() 183 defer cm.Unlock() 184 cm.CalledFunctions = append(cm.CalledFunctions, "GetAllocatableDevices") 185 return nil 186 } 187 188 func (cm *FakeContainerManager) ShouldResetExtendedResourceCapacity() bool { 189 cm.Lock() 190 defer cm.Unlock() 191 cm.CalledFunctions = append(cm.CalledFunctions, "ShouldResetExtendedResourceCapacity") 192 return cm.shouldResetExtendedResourceCapacity 193 } 194 195 func (cm *FakeContainerManager) GetAllocateResourcesPodAdmitHandler() lifecycle.PodAdmitHandler { 196 cm.Lock() 197 defer cm.Unlock() 198 cm.CalledFunctions = append(cm.CalledFunctions, "GetAllocateResourcesPodAdmitHandler") 199 return topologymanager.NewFakeManager() 200 } 201 202 func (cm *FakeContainerManager) UpdateAllocatedDevices() { 203 cm.Lock() 204 defer cm.Unlock() 205 cm.CalledFunctions = append(cm.CalledFunctions, "UpdateAllocatedDevices") 206 return 207 } 208 209 func (cm *FakeContainerManager) GetCPUs(_, _ string) []int64 { 210 cm.Lock() 211 defer cm.Unlock() 212 cm.CalledFunctions = append(cm.CalledFunctions, "GetCPUs") 213 return nil 214 } 215 216 func (cm *FakeContainerManager) GetAllocatableCPUs() []int64 { 217 cm.Lock() 218 defer cm.Unlock() 219 return nil 220 } 221 222 func (cm *FakeContainerManager) GetMemory(_, _ string) []*podresourcesapi.ContainerMemory { 223 cm.Lock() 224 defer cm.Unlock() 225 cm.CalledFunctions = append(cm.CalledFunctions, "GetMemory") 226 return nil 227 } 228 229 func (cm *FakeContainerManager) GetAllocatableMemory() []*podresourcesapi.ContainerMemory { 230 cm.Lock() 231 defer cm.Unlock() 232 return nil 233 } 234 235 func (cm *FakeContainerManager) GetDynamicResources(pod *v1.Pod, container *v1.Container) []*podresourcesapi.DynamicResource { 236 return nil 237 } 238 239 func (cm *FakeContainerManager) GetNodeAllocatableAbsolute() v1.ResourceList { 240 cm.Lock() 241 defer cm.Unlock() 242 return nil 243 } 244 245 func (cm *FakeContainerManager) PrepareDynamicResources(pod *v1.Pod) error { 246 return nil 247 } 248 249 func (cm *FakeContainerManager) UnprepareDynamicResources(*v1.Pod) error { 250 return nil 251 } 252 253 func (cm *FakeContainerManager) PodMightNeedToUnprepareResources(UID types.UID) bool { 254 return false 255 }