1/* 2Copyright 2015 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 cm 18 19import ( 20 v1 "k8s.io/api/core/v1" 21 "k8s.io/klog/v2" 22 23 "k8s.io/apimachinery/pkg/api/resource" 24 internalapi "k8s.io/cri-api/pkg/apis" 25 podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" 26 "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" 27 "k8s.io/kubernetes/pkg/kubelet/cm/memorymanager" 28 "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" 29 "k8s.io/kubernetes/pkg/kubelet/config" 30 kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" 31 "k8s.io/kubernetes/pkg/kubelet/lifecycle" 32 "k8s.io/kubernetes/pkg/kubelet/pluginmanager/cache" 33 "k8s.io/kubernetes/pkg/kubelet/status" 34 schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework" 35) 36 37type containerManagerStub struct { 38 shouldResetExtendedResourceCapacity bool 39 extendedPluginResources v1.ResourceList 40} 41 42var _ ContainerManager = &containerManagerStub{} 43 44func (cm *containerManagerStub) Start(_ *v1.Node, _ ActivePodsFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService) error { 45 klog.V(2).InfoS("Starting stub container manager") 46 return nil 47} 48 49func (cm *containerManagerStub) SystemCgroupsLimit() v1.ResourceList { 50 return v1.ResourceList{} 51} 52 53func (cm *containerManagerStub) GetNodeConfig() NodeConfig { 54 return NodeConfig{} 55} 56 57func (cm *containerManagerStub) GetMountedSubsystems() *CgroupSubsystems { 58 return &CgroupSubsystems{} 59} 60 61func (cm *containerManagerStub) GetQOSContainersInfo() QOSContainersInfo { 62 return QOSContainersInfo{} 63} 64 65func (cm *containerManagerStub) UpdateQOSCgroups() error { 66 return nil 67} 68 69func (cm *containerManagerStub) Status() Status { 70 return Status{} 71} 72 73func (cm *containerManagerStub) GetNodeAllocatableReservation() v1.ResourceList { 74 return nil 75} 76 77func (cm *containerManagerStub) GetCapacity() v1.ResourceList { 78 c := v1.ResourceList{ 79 v1.ResourceEphemeralStorage: *resource.NewQuantity( 80 int64(0), 81 resource.BinarySI), 82 } 83 return c 84} 85 86func (cm *containerManagerStub) GetPluginRegistrationHandler() cache.PluginHandler { 87 return nil 88} 89 90func (cm *containerManagerStub) GetDevicePluginResourceCapacity() (v1.ResourceList, v1.ResourceList, []string) { 91 return cm.extendedPluginResources, cm.extendedPluginResources, []string{} 92} 93 94func (cm *containerManagerStub) NewPodContainerManager() PodContainerManager { 95 return &podContainerManagerStub{} 96} 97 98func (cm *containerManagerStub) GetResources(pod *v1.Pod, container *v1.Container) (*kubecontainer.RunContainerOptions, error) { 99 return &kubecontainer.RunContainerOptions{}, nil 100} 101 102func (cm *containerManagerStub) UpdatePluginResources(*schedulerframework.NodeInfo, *lifecycle.PodAdmitAttributes) error { 103 return nil 104} 105 106func (cm *containerManagerStub) InternalContainerLifecycle() InternalContainerLifecycle { 107 return &internalContainerLifecycleImpl{cpumanager.NewFakeManager(), memorymanager.NewFakeManager(), topologymanager.NewFakeManager()} 108} 109 110func (cm *containerManagerStub) GetPodCgroupRoot() string { 111 return "" 112} 113 114func (cm *containerManagerStub) GetDevices(_, _ string) []*podresourcesapi.ContainerDevices { 115 return nil 116} 117 118func (cm *containerManagerStub) GetAllocatableDevices() []*podresourcesapi.ContainerDevices { 119 return nil 120} 121 122func (cm *containerManagerStub) ShouldResetExtendedResourceCapacity() bool { 123 return cm.shouldResetExtendedResourceCapacity 124} 125 126func (cm *containerManagerStub) GetAllocateResourcesPodAdmitHandler() lifecycle.PodAdmitHandler { 127 return topologymanager.NewFakeManager() 128} 129 130func (cm *containerManagerStub) UpdateAllocatedDevices() { 131 return 132} 133 134func (cm *containerManagerStub) GetCPUs(_, _ string) []int64 { 135 return nil 136} 137 138func (cm *containerManagerStub) GetAllocatableCPUs() []int64 { 139 return nil 140} 141 142func (cm *containerManagerStub) GetMemory(_, _ string) []*podresourcesapi.ContainerMemory { 143 return nil 144} 145 146func (cm *containerManagerStub) GetAllocatableMemory() []*podresourcesapi.ContainerMemory { 147 return nil 148} 149 150func (cm *containerManagerStub) GetNodeAllocatableAbsolute() v1.ResourceList { 151 return nil 152} 153 154func NewStubContainerManager() ContainerManager { 155 return &containerManagerStub{shouldResetExtendedResourceCapacity: false} 156} 157 158func NewStubContainerManagerWithExtendedResource(shouldResetExtendedResourceCapacity bool) ContainerManager { 159 return &containerManagerStub{shouldResetExtendedResourceCapacity: shouldResetExtendedResourceCapacity} 160} 161 162func NewStubContainerManagerWithDevicePluginResource(extendedPluginResources v1.ResourceList) ContainerManager { 163 return &containerManagerStub{ 164 shouldResetExtendedResourceCapacity: false, 165 extendedPluginResources: extendedPluginResources, 166 } 167} 168