Skip to content

Commit 4b9b98f

Browse files
authored
Merge pull request #740 from buildkite/cherry-pick-hugepages-2
v0.32.x: Cherry pick hugepages for podSpecPatches too
2 parents 67b3300 + d3876d1 commit 4b9b98f

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

cmd/controller/controller.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,8 @@ func ParseAndValidateConfig(v *viper.Viper) (*config.Config, error) {
153153
}
154154

155155
if cfg.PodSpecPatch != nil {
156-
for _, c := range cfg.PodSpecPatch.Containers {
157-
if c.Image != strings.ToLower(c.Image) {
158-
return nil, fmt.Errorf("container image contains uppercase letters: %s", c.Image)
159-
}
160-
if len(c.Command) != 0 || len(c.Args) != 0 {
161-
return nil, scheduler.ErrNoCommandModification
162-
}
156+
if err := processPodSpecPatch(cfg.PodSpecPatch); err != nil {
157+
return nil, fmt.Errorf("invalid pod spec patch: %w", err)
163158
}
164159
}
165160

@@ -181,6 +176,29 @@ func ParseAndValidateConfig(v *viper.Viper) (*config.Config, error) {
181176
return cfg, nil
182177
}
183178

179+
func processPodSpecPatch(podSpec *corev1.PodSpec) error {
180+
for idx, c := range podSpec.Containers {
181+
if c.Image != strings.ToLower(c.Image) {
182+
return fmt.Errorf("container image for container at index %d contains uppercase letters: %s", idx, c.Image)
183+
}
184+
185+
if len(c.Command) != 0 || len(c.Args) != 0 {
186+
return fmt.Errorf("container at index %d (image: %s): %w", idx, c.Image, scheduler.ErrNoCommandModification)
187+
}
188+
189+
var err error
190+
if podSpec.Containers[idx].Resources.Requests, err = recapitalizeHugePagesResourceMap(c.Resources.Requests); err != nil {
191+
return fmt.Errorf("processing resource requests for container at index %d (image: %s): %w", idx, c.Image, err)
192+
}
193+
194+
if podSpec.Containers[idx].Resources.Limits, err = recapitalizeHugePagesResourceMap(c.Resources.Limits); err != nil {
195+
return fmt.Errorf("processing resource limits for container at index %d (image: %s): %w", idx, c.Image, err)
196+
}
197+
}
198+
199+
return nil
200+
}
201+
184202
// Viper downcases keys in maps used in inputs, but in the case of resource classes where hugepages are used, it
185203
// gets downcased to "hugepages-2mi". This function fixes that by recapitlizing the "Mi" part for any hugepages resource
186204
// claims. This is important because the hugepages resource name must be capitalized as "hugepages-2Mi" (or similar),

cmd/controller/controller_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,9 @@ func TestReadAndParseConfig(t *testing.T) {
149149
},
150150
Resources: corev1.ResourceRequirements{
151151
Requests: corev1.ResourceList{
152-
"cpu": resource.MustParse("1000m"),
153-
"mem": resource.MustParse("4Gi"),
152+
"cpu": resource.MustParse("1000m"),
153+
"mem": resource.MustParse("4Gi"),
154+
"hugepages-2Mi": resource.MustParse("2Mi"),
154155
},
155156
},
156157
},

examples/config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,4 @@ pod-spec-patch:
116116
requests:
117117
cpu: 1
118118
mem: 4Gi
119+
hugepages-2Mi: 2Mi

0 commit comments

Comments
 (0)