From c4195b5e8b3e8fb9836154f29a90045cf76c5dea Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 19 May 2023 17:50:33 +0200 Subject: [PATCH] Add package_update / package_upgrade Allows system to be upgraded before installing new. ref: https://cloudinit.readthedocs.io/en/latest/reference/modules.html#package-update-upgrade-install --- lib/tiny-cloud/user-data/alpine-config | 16 +++++++++++++++- tests/tiny-cloud-alpine.test | 26 ++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/tiny-cloud/user-data/alpine-config b/lib/tiny-cloud/user-data/alpine-config index fb83532..f0de44b 100644 --- a/lib/tiny-cloud/user-data/alpine-config +++ b/lib/tiny-cloud/user-data/alpine-config @@ -3,7 +3,7 @@ # shellcheck shell=sh INIT_ACTIONS_MAIN="$(insert_after set_hostname \ - "userdata_bootcmd userdata_write_files userdata_ntp userdata_apk_cache userdata_apk_repositories userdata_packages" \ + "userdata_bootcmd userdata_write_files userdata_ntp userdata_apk_cache userdata_apk_repositories userdata_package_update userdata_package_upgrade userdata_packages" \ $INIT_ACTIONS_MAIN)" INIT_ACTIONS_FINAL="$INIT_ACTIONS_FINAL userdata_runcmd" @@ -163,6 +163,20 @@ init__userdata_apk_repositories() { done } +init__userdata_package_update() { + local update="$(get_userdata package_update)" + if [ "$update" = "true" ]; then + $MOCK apk update + fi +} + +init__userdata_package_upgrade() { + local upgrade="$(get_userdata package_upgrade)" + if [ "$upgrade" = "true" ]; then + $MOCK apk upgrade + fi +} + init__userdata_packages() { local packages="$(get_userdata packages)" local pkgs= diff --git a/tests/tiny-cloud-alpine.test b/tests/tiny-cloud-alpine.test index 3ab8700..12523d5 100755 --- a/tests/tiny-cloud-alpine.test +++ b/tests/tiny-cloud-alpine.test @@ -21,6 +21,8 @@ init_tests \ userdata_apk_repositories \ userdata_apk_repositories_version \ userdata_apk_repositories_version_auto_edge \ + userdata_package_update \ + userdata_package_upgrade \ userdata_packages \ userdata_runcmd @@ -213,6 +215,30 @@ userdata_apk_repositories_version_auto_edge_body() { cat etc/apk/repositories } +userdata_package_update_body() { + fake_userdata_nocloud <<-EOF + #alpine-config + package_update: true + EOF + atf_check -e ignore -o ignore tiny-cloud net + atf_check \ + -e match:"userdata_package_update: done" \ + -o match:"apk update" \ + tiny-cloud main +} + +userdata_package_upgrade_body() { + fake_userdata_nocloud <<-EOF + #alpine-config + package_upgrade: true + EOF + atf_check -e ignore -o ignore tiny-cloud net + atf_check \ + -e match:"userdata_package_upgrade: done" \ + -o match:"apk upgrade" \ + tiny-cloud main +} + userdata_packages_body() { fake_userdata_nocloud <<-EOF #alpine-config