From e6fb222af31e3b2412cd1a2a2990214501ca00bb Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 14 Dec 2023 00:00:48 +0000 Subject: [PATCH] nocloud: support set data source via smbios in qemu --- lib/tiny-cloud/cloud/nocloud/imds | 4 ++-- tests/imds.test | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/tiny-cloud/cloud/nocloud/imds b/lib/tiny-cloud/cloud/nocloud/imds index 30b115c..a69a66c 100644 --- a/lib/tiny-cloud/cloud/nocloud/imds +++ b/lib/tiny-cloud/cloud/nocloud/imds @@ -8,8 +8,8 @@ is_nocloud_loaded() { [ -f "$TINY_CLOUD_VAR/.nocloud_loaded" ]; } _load_nocloud_cmdline() { local kopt kv k v data - - for kopt in $(cat "$ROOT/proc/cmdline" 2>/dev/null); do + for kopt in $(cat "$ROOT/proc/cmdline" 2>/dev/null) \ + $(grep '^ds=nocloud' "$ROOT"/sys/class/dmi/id/product_serial 2>/dev/null) ; do echo "$kopt" | grep -qE '(^|=)ds=nocloud(-net)?;' || continue for kv in $(echo "${kopt#*;}" | tr \; ' '); do k=$(echo "$kv" | cut -d= -f1) diff --git a/tests/imds.test b/tests/imds.test index 025ab10..ec98b6d 100755 --- a/tests/imds.test +++ b/tests/imds.test @@ -32,7 +32,8 @@ init_tests \ imds_ssh_keys_nocloud \ imds_ssh_keys_oci \ \ - imds_nocloud_cmdline_local_hostname + imds_nocloud_cmdline_local_hostname \ + imds_nocloud_smbios_local_hostname imds_help_body() { atf_check -o match:"Usage: imds" imds -h @@ -125,3 +126,14 @@ imds_nocloud_cmdline_local_hostname_body() { imds @local-hostname done } + +imds_nocloud_smbios_local_hostname_body() { + atf_require_prog yx + mkdir -p sys/class/dmi/id + for key in h local-hostname; do + echo "ds=nocloud;$key=myhostname" > sys/class/dmi/id/product_serial + CLOUD=nocloud atf_check \ + -o match:'^myhostname$' \ + imds @local-hostname + done +}