in pkg/common/resource.go [164:196]
func checkInitContainerRequest(pod *v1.Pod, containersResources *si.Resource, containerStatuses map[string]*v1.ContainerStatus) *si.Resource {
updatedRes := containersResources
// update total pod resource usage with sidecar containers
for _, c := range pod.Spec.InitContainers {
if isSideCarContainer(&c) {
sideCarResources := computeContainerResource(pod, &c, containerStatuses)
updatedRes = Add(updatedRes, sideCarResources)
}
}
var sideCarRequests *si.Resource // cumulative value of sidecar requests so far
for _, c := range pod.Spec.InitContainers {
ICResource := computeContainerResource(pod, &c, containerStatuses)
if isSideCarContainer(&c) {
sideCarRequests = Add(sideCarRequests, ICResource)
}
ICResource = Add(ICResource, sideCarRequests)
for resourceName, ICRequest := range ICResource.Resources {
containersRequests, exist := updatedRes.Resources[resourceName]
// additional resource request from init cont, add it to request.
if !exist {
updatedRes.Resources[resourceName] = ICRequest
continue
}
if ICRequest.GetValue() > containersRequests.GetValue() {
updatedRes.Resources[resourceName] = ICRequest
}
}
}
return updatedRes
}