1
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