Skip to content

Commit 7bb97f0

Browse files
committed
feat: only contribute defined resources to merge target
Fix #1056 Signed-off-by: Andrew Obuchowicz <[email protected]>
1 parent 61bd5d1 commit 7bb97f0

File tree

1 file changed

+46
-49
lines changed

1 file changed

+46
-49
lines changed

pkg/library/flatten/helper.go

Lines changed: 46 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -75,50 +75,49 @@ func parseResourcesFromComponent(component *dw.Component) (*corev1.ResourceRequi
7575
if component.Container == nil {
7676
return nil, fmt.Errorf("attemped to parse resource requirements from a non-container component")
7777
}
78+
79+
resources := &corev1.ResourceRequirements{
80+
Limits: corev1.ResourceList{},
81+
Requests: corev1.ResourceList{},
82+
}
83+
7884
memLimitStr := component.Container.MemoryLimit
79-
if memLimitStr == "" {
80-
memLimitStr = "0Mi"
85+
if memLimitStr != "" {
86+
memoryLimit, err := resource.ParseQuantity(memLimitStr)
87+
if err != nil {
88+
return nil, fmt.Errorf("failed to parse memory limit for container component %s: %w", component.Name, err)
89+
}
90+
resources.Limits[corev1.ResourceMemory] = memoryLimit
8191
}
92+
8293
memRequestStr := component.Container.MemoryRequest
83-
if memRequestStr == "" {
84-
memRequestStr = "0Mi"
94+
if memRequestStr != "" {
95+
memoryRequest, err := resource.ParseQuantity(memRequestStr)
96+
if err != nil {
97+
return nil, fmt.Errorf("failed to parse memory request for container component %s: %w", component.Name, err)
98+
}
99+
resources.Requests[corev1.ResourceMemory] = memoryRequest
85100
}
101+
86102
cpuLimitStr := component.Container.CpuLimit
87-
if cpuLimitStr == "" {
88-
cpuLimitStr = "0m"
103+
if cpuLimitStr != "" {
104+
cpuLimit, err := resource.ParseQuantity(cpuLimitStr)
105+
if err != nil {
106+
return nil, fmt.Errorf("failed to parse CPU limit for container component %s: %w", component.Name, err)
107+
}
108+
resources.Limits[corev1.ResourceCPU] = cpuLimit
89109
}
110+
90111
cpuRequestStr := component.Container.CpuRequest
91-
if cpuRequestStr == "" {
92-
cpuRequestStr = "0m"
112+
if cpuRequestStr != "" {
113+
cpuRequest, err := resource.ParseQuantity(cpuRequestStr)
114+
if err != nil {
115+
return nil, fmt.Errorf("failed to parse CPU request for container component %s: %w", component.Name, err)
116+
}
117+
resources.Requests[corev1.ResourceCPU] = cpuRequest
93118
}
94119

95-
memoryLimit, err := resource.ParseQuantity(memLimitStr)
96-
if err != nil {
97-
return nil, fmt.Errorf("failed to parse memory limit for container component %s: %w", component.Name, err)
98-
}
99-
memoryRequest, err := resource.ParseQuantity(memRequestStr)
100-
if err != nil {
101-
return nil, fmt.Errorf("failed to parse memory request for container component %s: %w", component.Name, err)
102-
}
103-
cpuLimit, err := resource.ParseQuantity(cpuLimitStr)
104-
if err != nil {
105-
return nil, fmt.Errorf("failed to parse CPU limit for container component %s: %w", component.Name, err)
106-
}
107-
cpuRequest, err := resource.ParseQuantity(cpuRequestStr)
108-
if err != nil {
109-
return nil, fmt.Errorf("failed to parse CPU request for container component %s: %w", component.Name, err)
110-
}
111-
112-
return &corev1.ResourceRequirements{
113-
Limits: corev1.ResourceList{
114-
corev1.ResourceMemory: memoryLimit,
115-
corev1.ResourceCPU: cpuLimit,
116-
},
117-
Requests: corev1.ResourceList{
118-
corev1.ResourceMemory: memoryRequest,
119-
corev1.ResourceCPU: cpuRequest,
120-
},
121-
}, nil
120+
return resources, nil
122121
}
123122

124123
func addResourceRequirements(resources *corev1.ResourceRequirements, toAdd *dw.Component) error {
@@ -127,21 +126,19 @@ func addResourceRequirements(resources *corev1.ResourceRequirements, toAdd *dw.C
127126
return err
128127
}
129128

130-
memoryLimit := resources.Limits[corev1.ResourceMemory]
131-
memoryLimit.Add(componentResources.Limits[corev1.ResourceMemory])
132-
resources.Limits[corev1.ResourceMemory] = memoryLimit
133-
134-
cpuLimit := resources.Limits[corev1.ResourceCPU]
135-
cpuLimit.Add(componentResources.Limits[corev1.ResourceCPU])
136-
resources.Limits[corev1.ResourceCPU] = cpuLimit
137-
138-
memoryRequest := resources.Requests[corev1.ResourceMemory]
139-
memoryRequest.Add(componentResources.Requests[corev1.ResourceMemory])
140-
resources.Requests[corev1.ResourceMemory] = memoryRequest
129+
for resourceName, limit := range resources.Limits {
130+
if componentLimit, ok := componentResources.Limits[resourceName]; ok {
131+
limit.Add(componentLimit)
132+
resources.Limits[resourceName] = limit
133+
}
134+
}
141135

142-
cpuRequest := resources.Requests[corev1.ResourceCPU]
143-
cpuRequest.Add(componentResources.Requests[corev1.ResourceCPU])
144-
resources.Requests[corev1.ResourceCPU] = cpuRequest
136+
for resourceName, request := range resources.Requests {
137+
if componentRequest, ok := componentResources.Requests[resourceName]; ok {
138+
request.Add(componentRequest)
139+
resources.Requests[resourceName] = request
140+
}
141+
}
145142

146143
return nil
147144
}

0 commit comments

Comments
 (0)