...

Source file src/k8s.io/kubernetes/pkg/kubelet/cm/fake_container_manager.go

Documentation: k8s.io/kubernetes/pkg/kubelet/cm

     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  }
   256  

View as plain text