Skip to content

Commit 2bf7ece

Browse files
weiwei
authored andcommitted
fix(kafka): resolve memory refs per action container
1 parent 2067c10 commit 2bf7ece

6 files changed

Lines changed: 72 additions & 4 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# frozen_string_literal: true
2+
3+
require "yaml"
4+
5+
documents = YAML.load_stream(File.read(ARGV.fetch(0))).compact
6+
definitions = documents.select { |doc| doc["kind"] == "ComponentDefinition" }
7+
8+
expected = %w[
9+
kafka27-broker-1.1.0-alpha.2
10+
kafka-broker-1.1.0-alpha.2
11+
kafka-combine-1.1.0-alpha.2
12+
kafka-controller-1.1.0-alpha.2
13+
]
14+
15+
actual = []
16+
definitions.each do |definition|
17+
kafka = Array(definition.dig("spec", "runtime", "containers")).find do |container|
18+
container["name"] == "kafka"
19+
end
20+
next unless kafka
21+
22+
memory_env = Array(kafka["env"]).select do |entry|
23+
entry["name"] == "KB_KAFKA_CONTAINER_MEMORY_LIMIT_MIB"
24+
end
25+
next if memory_env.empty?
26+
27+
name = definition.dig("metadata", "name")
28+
abort "#{name}: expected exactly one container memory env" unless memory_env.length == 1
29+
30+
resource_ref = memory_env.fetch(0).dig("valueFrom", "resourceFieldRef")
31+
abort "#{name}: container memory ref must resolve against the executing container" unless resource_ref == {
32+
"resource" => "limits.memory",
33+
"divisor" => "1Mi"
34+
}
35+
actual << name
36+
end
37+
38+
abort "unexpected ComponentDefinition container memory ref set" unless actual.sort == expected.sort
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# shellcheck shell=sh
2+
3+
validate_rendered_container_memory_refs() {
4+
chart_dir=$(cd .. && pwd)
5+
addons_dir=$(cd ../.. && pwd)
6+
render_root=$(mktemp -d)
7+
render_chart="$render_root/kafka"
8+
render_kblib="$render_root/kblib"
9+
rendered="$render_root/rendered.yaml"
10+
status=0
11+
12+
cp -R "$chart_dir" "$render_chart" || status=1
13+
cp -R "$addons_dir/kblib" "$render_kblib" || status=1
14+
if [ "$status" -eq 0 ]; then
15+
rm -rf "$render_chart/charts"
16+
helm dependency build "$render_chart" >/dev/null 2>&1 || status=1
17+
fi
18+
if [ "$status" -eq 0 ]; then
19+
helm template kafka "$render_chart" >"$rendered" || status=1
20+
fi
21+
if [ "$status" -eq 0 ]; then
22+
ruby ./container_memory_ref_render_check.rb "$rendered" || status=1
23+
fi
24+
rm -rf "$render_root"
25+
return "$status"
26+
}
27+
28+
Describe "Kafka container memory resource reference"
29+
It "resolves against whichever container executes the action"
30+
When call validate_rendered_container_memory_refs
31+
The status should be success
32+
The output should be blank
33+
End
34+
End

addons/kafka/templates/cmpd-broker-27.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,6 @@ spec:
231231
- name: KB_KAFKA_CONTAINER_MEMORY_LIMIT_MIB
232232
valueFrom:
233233
resourceFieldRef:
234-
containerName: kafka
235234
resource: limits.memory
236235
divisor: 1Mi
237236
- name: SERVER_PROP_FILE

addons/kafka/templates/cmpd-broker.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,6 @@ spec:
203203
- name: KB_KAFKA_CONTAINER_MEMORY_LIMIT_MIB
204204
valueFrom:
205205
resourceFieldRef:
206-
containerName: kafka
207206
resource: limits.memory
208207
divisor: 1Mi
209208
- name: SERVER_PROP_FILE

addons/kafka/templates/cmpd-combine.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@ spec:
200200
- name: KB_KAFKA_CONTAINER_MEMORY_LIMIT_MIB
201201
valueFrom:
202202
resourceFieldRef:
203-
containerName: kafka
204203
resource: limits.memory
205204
divisor: 1Mi
206205
- name: SERVER_PROP_FILE

addons/kafka/templates/cmpd-controller.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ spec:
122122
- name: KB_KAFKA_CONTAINER_MEMORY_LIMIT_MIB
123123
valueFrom:
124124
resourceFieldRef:
125-
containerName: kafka
126125
resource: limits.memory
127126
divisor: 1Mi
128127
- name: SERVER_PROP_FILE

0 commit comments

Comments
 (0)