Skip to content

Commit eb5af1a

Browse files
committed
scheduling-webhook: hypershift image builds in memory-based storage
1 parent dc25f3d commit eb5af1a

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

cmd/ci-scheduling-webhook/mutation.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,11 @@ func mutatePod(w http.ResponseWriter, r *http.Request) {
201201
}
202202
}
203203

204+
if podClass == PodClassBuilds &&
205+
labels["ci.openshift.io/metadata.repo"] == "hypershift" {
206+
podClass = PodClassBuildsTmpfs
207+
}
208+
204209
if podClass != PodClassNone {
205210
profile("classified request")
206211

@@ -347,6 +352,22 @@ func mutatePod(w http.ResponseWriter, r *http.Request) {
347352
addPatchEntry("add", "/spec/affinity", unstructuredAffinity)
348353
}
349354

355+
if podClass == PodClassBuildsTmpfs {
356+
// Iterate over pod volumes and set medium to memory for container-storage-root and container-storage-run volumes
357+
for i, volume := range pod.Spec.Volumes {
358+
if volume.Name == "container-storage-root" || volume.Name == "container-storage-run" {
359+
addPatchEntry("add", fmt.Sprintf("/spec/volumes/%v/emptyDir/medium", i), "Memory")
360+
}
361+
}
362+
363+
// Find the docker-build container and remove its memory request
364+
for i, container := range pod.Spec.Containers {
365+
if container.Name == "docker-build" {
366+
addPatchEntry("remove", fmt.Sprintf("/spec/containers/%v/resources/requests/memory", i), nil)
367+
}
368+
}
369+
}
370+
350371
// There is currently an issue with cluster scale up where pods are stacked up, unschedulable.
351372
// A machine is provisioned. As soon as the machine is provisioned, pods are scheduled to the
352373
// node and they begin to run before DNS daemonset pods can successfully configure the pod.

cmd/ci-scheduling-webhook/prioritization.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@ import (
3030
type PodClass string
3131

3232
const (
33-
PodClassBuilds PodClass = "builds"
34-
PodClassTests PodClass = "tests"
35-
PodClassLongTests PodClass = "longtests"
36-
PodClassProwJobs PodClass = "prowjobs"
37-
PodClassNone PodClass = ""
33+
PodClassBuilds PodClass = "builds"
34+
PodClassBuildsTmpfs PodClass = "builds-tmpfs"
35+
PodClassTests PodClass = "tests"
36+
PodClassLongTests PodClass = "longtests"
37+
PodClassProwJobs PodClass = "prowjobs"
38+
PodClassNone PodClass = ""
3839

3940
// MachineDeleteAnnotationKey When a machine is annotated with this and the machineset is scaled down,
4041
// it will target machines with this annotation to satisfy the change.

0 commit comments

Comments
 (0)