Skip to content

Commit 84d5071

Browse files
committed
controllers: Validates kata version with version.json
For the s390x case, the addon image will include a version json which contains the kata version Signed-off-by: ANJANA-A-R-K <[email protected]>
1 parent 99eb610 commit 84d5071

File tree

4 files changed

+53
-48
lines changed

4 files changed

+53
-48
lines changed

config/baremetal/kata-addon-artifacts.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,3 @@ data:
88

99
# Path within the container image where kernel is located
1010
kernelPath: "/artifacts/kernel/vmlinuz"
11-
12-
# Kata version
13-
kataVersion: "3.21.0"

controllers/daemonset_reconcile.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,6 @@ func (r *KataConfigOpenShiftReconciler) getAddonEnvVars() []corev1.EnvVar {
704704
}{
705705
{"addonImage", "ADDON_IMAGE"},
706706
{"kernelPath", "ADDON_KERNEL_PATH"},
707-
{"kataVersion", "KATA_VERSION"},
708707
}
709708

710709
var envs []corev1.EnvVar
@@ -719,7 +718,6 @@ func (r *KataConfigOpenShiftReconciler) getAddonEnvVars() []corev1.EnvVar {
719718
r.Log.Info("Addon artifacts configured",
720719
"image", data["addonImage"],
721720
"kernelPath", data["kernelPath"],
722-
"kataVersion", data["kataVersion"],
723721
)
724722

725723
return envs

scripts/kata-install/osc-kata-addons-install.sh

Lines changed: 14 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -47,51 +47,29 @@ update_config() {
4747
# 0 on success
4848
#######################################
4949
install_addons() {
50-
local addon_image="${ADDON_IMAGE:?}"
51-
52-
echo "Installing addon artifacts from: $addon_image"
53-
5450
local kernel_src="${ADDON_KERNEL_PATH:?}"
51+
local kernel_file
52+
kernel_file="$(basename "$kernel_src")"
5553

56-
if [ -z "$kernel_src" ]; then
57-
echo "ERROR: ADDON_KERNEL_PATH is mandatory but was not provided." >&2
54+
local staged_dir="/host/var/lib/kata/addons"
55+
local staged_kernel="${staged_dir}/${kernel_src}"
56+
57+
if [[ ! -f "$staged_kernel" ]]; then
58+
echo "ERROR: Staged kernel not found: $staged_kernel" >&2
5859
exit 1
5960
fi
6061

61-
# Standard installation directory
6262
local install_dir="/host/etc/kata-containers"
63-
local temp_dir="/tmp/kata-addons-$$"
64-
local auth_file="/tmp/regauth/auth.json"
65-
66-
mkdir -p "$install_dir"
67-
mkdir -p "$temp_dir"
68-
69-
local kernel_installed=""
70-
local kernel_path=""
71-
72-
# Extract and install kernel
73-
echo "Extracting kernel from: $kernel_src"
74-
75-
# Reuse extract_container_image from lib.sh
76-
if extract_container_image "$addon_image" "$kernel_src" "$temp_dir" "$auth_file"; then
77-
local kernel_file=$(basename "$kernel_src")
78-
if [ -f "$temp_dir/$kernel_file" ]; then
79-
kernel_installed="$install_dir/$kernel_file"
80-
kernel_path="/etc/kata-containers/$kernel_file"
81-
cp "$temp_dir/$kernel_file" "$kernel_installed"
82-
chmod 644 "$kernel_installed"
83-
echo "Kernel installed: $kernel_installed"
63+
local kernel_installed="${install_dir}/${kernel_file}"
64+
local kernel_path="/etc/kata-containers/${kernel_file}"
8465

85-
# Print checksum of the installed kernel
86-
echo "Kernel image $kernel_file checksum (sha256):"
87-
sha256sum "$kernel_installed"
88-
fi
89-
fi
66+
cp "$staged_kernel" "$kernel_installed"
9067

68+
echo "Kernel installed: $kernel_installed"
69+
echo "Kernel image $kernel_file checksum (sha256):"
70+
sha256sum "$kernel_installed"
9171

92-
# Cleanup
93-
rm -rf "$temp_dir"
94-
72+
# Update kata configuration
9573
update_config "$kernel_path"
9674

9775
echo "Addon installation completed"

scripts/kata-install/osc-kata-install.sh

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,37 @@ extract_kata_version_from_rpm() {
8888
basename "$rpm" | sed -E 's/^kata-containers-([0-9]+\.[0-9]+(\.[0-9]+)?).*/\1/'
8989
}
9090

91+
extract_kata_addon_image() {
92+
local addon_image="$1"
93+
local addon_stage_dir="/host/var/lib/kata/addons"
94+
95+
mkdir -p $addon_stage_dir
96+
97+
extract_container_image \
98+
"$addon_image" \
99+
"/artifacts" \
100+
"$addon_stage_dir" \
101+
"/tmp/regauth/auth.json" >/dev/null
102+
103+
104+
if [[ ! -f "$addon_stage_dir/artifacts/version.json" ]]; then
105+
echo "ERROR: version.json not found in addon image"
106+
exit 1
107+
fi
108+
109+
dnf install -y jq >/dev/null 2>&1
110+
111+
local kata_version
112+
kata_version=$(jq -r '.kata_version' "$addon_stage_dir/artifacts/version.json")
113+
114+
if [[ -z "$kata_version" || "$kata_version" == "null" ]]; then
115+
echo "ERROR: kata_version missing in version.json"
116+
exit 1
117+
fi
118+
119+
echo "$kata_version"
120+
}
121+
91122
install() {
92123
# Initial wait: avoid doing anything if a previous staged update is pending
93124
wait_for_reboot_clear
@@ -109,17 +140,18 @@ install() {
109140
continue
110141
fi
111142

112-
if [[ "$package" == "kata-containers" && -n "${KATA_VERSION:-}" ]]; then
113-
rpm_kata_version=$(extract_kata_version_from_rpm "$rpm_path")
143+
if [[ "$package" == "kata-containers" && -n "${ADDON_IMAGE:-}" ]]; then
144+
rpm_kata_version=$(extract_kata_version_from_rpm "$rpm_path")
145+
addon_kata_version=$(extract_kata_addon_image "$ADDON_IMAGE")
114146

115-
if [[ "$rpm_kata_version" != "$KATA_VERSION" ]]; then
116-
echo "ERROR: Kata version mismatch for OSC"
117-
echo "Expected: ${KATA_VERSION}"
118-
echo "Found: ${rpm_kata_version}"
147+
if [[ "$addon_kata_version" != "$rpm_kata_version" ]]; then
148+
echo "ERROR: Kata version mismatch between addon image and host RPM"
149+
echo "Addon image kata version: $addon_kata_version"
150+
echo "Host kata RPM version: $rpm_kata_version"
119151
exit 1
120152
fi
121153

122-
echo "Kata version validation passed: ${rpm_kata_version}"
154+
echo "Addon image kata version validated: $addon_kata_version"
123155
fi
124156

125157
# Get available version

0 commit comments

Comments
 (0)