From 3e44e4160300168fab051fa5ba3e0c3eb4c0b483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jake=20Buchholz=20G=C3=B6kt=C3=BCrk?= Date: Sun, 30 Nov 2025 19:56:46 +0000 Subject: [PATCH] properly detect empty userdata --- CHANGELOG.md | 4 ++++ TODO.md | 4 ++++ lib/tiny-cloud/init | 3 +++ lib/tiny-cloud/user-data/empty | 9 +++++++++ tests/init.test | 5 +++++ 5 files changed, 25 insertions(+) create mode 100644 lib/tiny-cloud/user-data/empty diff --git a/CHANGELOG.md b/CHANGELOG.md index adac0d8..d9f2952 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## YYYY-MM-DD - Tiny Cloud vX.Y.Z + +* Correctly identify empty `user-data` content instead of flagging it as "unknown". + ## 2025-06-11 - Tiny Cloud v3.2.2 * Fix `Makefile` to dynamically generate the list of clouds, allowing the new diff --git a/TODO.md b/TODO.md index 2345a0c..ad8487c 100644 --- a/TODO.md +++ b/TODO.md @@ -18,6 +18,10 @@ * Support additional features of `#cloud-config` as needed +* Support for multipart `user-data` payload? + +* Support for `#network-config`? + * Support LVM partitioning and non-`ext[234]` filesystems? * Support other cloud providers... diff --git a/lib/tiny-cloud/init b/lib/tiny-cloud/init index f633777..30efbfb 100644 --- a/lib/tiny-cloud/init +++ b/lib/tiny-cloud/init @@ -294,6 +294,9 @@ userdata_type() { if [ ! -f "$TINY_CLOUD_VAR/user-data" ]; then echo missing return + elif [ ! -s "$TINY_CLOUD_VAR/user-data" ]; then + echo empty + return fi header=$(head -n1 "$TINY_CLOUD_VAR/user-data" | sed -e 's/[[:space:]].*//g') case "$header" in diff --git a/lib/tiny-cloud/user-data/empty b/lib/tiny-cloud/user-data/empty new file mode 100644 index 0000000..3ea1da3 --- /dev/null +++ b/lib/tiny-cloud/user-data/empty @@ -0,0 +1,9 @@ +# Empty UserData Functions +# vim:set filetype=sh: +# shellcheck shell=sh + +init__empty_userdata() { + log -i -t "$phase" notice "$ACTION: empty user-data found" +} + +INIT_ACTIONS_MAIN="empty_userdata ${INIT_ACTIONS_MAIN}" diff --git a/tests/init.test b/tests/init.test index 3421b38..258f2fa 100755 --- a/tests/init.test +++ b/tests/init.test @@ -197,6 +197,11 @@ userdata_type_body() { -o match:"missing" \ sh -c ". \"$lib\"; userdata_type" + touch var/lib/cloud/user-data + CLOUD="$c" atf_check \ + -o match:"empty" \ + sh -c ". \"$lib\"; userdata_type" + echo "#tiny-cloud-config" > var/lib/cloud/user-data CLOUD="$c" atf_check \ -o match:"tiny-cloud-config" \