@@ -201,6 +201,12 @@ func mutatePod(w http.ResponseWriter, r *http.Request) {
201
201
}
202
202
}
203
203
204
+ if podClass == PodClassBuilds &&
205
+ strings .HasPrefix (podName , "hypershift" ) &&
206
+ strings .HasSuffix (podName , "amd64-build" ) {
207
+ podClass = PodClassBuildsTmpfs
208
+ }
209
+
204
210
if podClass != PodClassNone {
205
211
profile ("classified request" )
206
212
@@ -347,6 +353,23 @@ func mutatePod(w http.ResponseWriter, r *http.Request) {
347
353
addPatchEntry ("add" , "/spec/affinity" , unstructuredAffinity )
348
354
}
349
355
356
+ if podClass == PodClassBuildsTmpfs {
357
+ // Iterate over pod volumes and set medium to memory for container-storage-root and container-storage-run volumes
358
+ for i , volume := range pod .Spec .Volumes {
359
+ if volume .Name == "container-storage-root" || volume .Name == "container-storage-run" {
360
+ if volume .EmptyDir != nil {
361
+ volume .EmptyDir .Medium = corev1 .StorageMediumMemory
362
+ unstructuredEmptyDir , err := runtime .DefaultUnstructuredConverter .ToUnstructured (volume .EmptyDir )
363
+ if err != nil {
364
+ writeHttpError (500 , fmt .Errorf ("error decoding emptydir to unstructured data: %w" , err ))
365
+ return
366
+ }
367
+ addPatchEntry ("replace" , fmt .Sprintf ("/spec/volumes/%v/emptydir" , i ), unstructuredEmptyDir )
368
+ }
369
+ }
370
+ }
371
+ }
372
+
350
373
// There is currently an issue with cluster scale up where pods are stacked up, unschedulable.
351
374
// A machine is provisioned. As soon as the machine is provisioned, pods are scheduled to the
352
375
// node and they begin to run before DNS daemonset pods can successfully configure the pod.
0 commit comments