git: 682af9601aeb - main - nuageinit: more package related functions
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 06 Jun 2025 16:27:02 UTC
The branch main has been updated by bapt:
URL: https://cgit.FreeBSD.org/src/commit/?id=682af9601aebb71357d05bb9ffbc137958a437cf
commit 682af9601aebb71357d05bb9ffbc137958a437cf
Author: Sebastien Baylocq <sebastien.baylocq@ovhcloud.com>
AuthorDate: 2025-06-06 16:24:48 +0000
Commit: Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2025-06-06 16:26:41 +0000
nuageinit: more package related functions
Implement package_update and package_upgrade, which allows to launch
an update of the metadata and an upgrade of the packages.
Sponsored by: OVHCloud
---
libexec/nuageinit/nuage.lua | 20 +++++++++++++++++++-
libexec/nuageinit/nuageinit | 7 +++++++
libexec/nuageinit/tests/nuageinit.sh | 33 +++++++++++++++++++++++++++++++++
3 files changed, 59 insertions(+), 1 deletion(-)
diff --git a/libexec/nuageinit/nuage.lua b/libexec/nuageinit/nuage.lua
index 0fe7400c2bbc..76f2d24ac178 100644
--- a/libexec/nuageinit/nuage.lua
+++ b/libexec/nuageinit/nuage.lua
@@ -389,6 +389,22 @@ local function install_package(package)
return os.execute(install_cmd)
end
+local function run_pkg_cmd(subcmd)
+ local cmd = "pkg " .. subcmd .. " -y"
+ if os.getenv("NUAGE_RUN_TESTS") then
+ print(cmd)
+ return true
+ end
+ return os.execute(cmd)
+end
+local function update_packages()
+ return run_pkg_cmd("update")
+end
+
+local function upgrade_packages()
+ return run_pkg_cmd("upgrade")
+end
+
local n = {
warn = warnmsg,
err = errmsg,
@@ -401,7 +417,9 @@ local n = {
update_sshd_config = update_sshd_config,
chpasswd = chpasswd,
pkg_bootstrap = pkg_bootstrap,
- install_package = install_package
+ install_package = install_package,
+ update_packages = update_packages,
+ upgrade_packages = upgrade_packages
}
return n
diff --git a/libexec/nuageinit/nuageinit b/libexec/nuageinit/nuageinit
index ef5726960978..dda3ae482859 100755
--- a/libexec/nuageinit/nuageinit
+++ b/libexec/nuageinit/nuageinit
@@ -389,6 +389,13 @@ if line == "#cloud-config" then
if obj.packages then
install_packages(obj.packages)
end
+
+ if obj.package_update then
+ nuage.update_packages()
+ end
+ if obj.package_upgrade then
+ nuage.upgrade_packages()
+ end
else
local res, err = os.execute(path .. "/" .. ud)
if not res then
diff --git a/libexec/nuageinit/tests/nuageinit.sh b/libexec/nuageinit/tests/nuageinit.sh
index e8742be3ba51..5fc811f1dcb5 100644
--- a/libexec/nuageinit/tests/nuageinit.sh
+++ b/libexec/nuageinit/tests/nuageinit.sh
@@ -25,6 +25,8 @@ atf_test_case nocloud_userdata_cloudconfig_chpasswd_list_string
atf_test_case nocloud_userdata_cloudconfig_chpasswd_list_list
atf_test_case config2_userdata_runcmd
atf_test_case config2_userdata_packages
+atf_test_case config2_userdata_update_packages
+atf_test_case config2_userdata_upgrade_packages
setup_test_adduser()
{
@@ -741,6 +743,7 @@ config2_userdata_packages_head()
{
atf_set "require.user" root
}
+
config2_userdata_packages_body()
{
mkdir -p media/nuageinit
@@ -779,6 +782,34 @@ EOF
atf_check -o inline:"pkg install -y curl\npkg info -q curl\n" -e inline:"nuageinit: Invalid type : table for packages entry number 2\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2
}
+config2_userdata_update_packages_body()
+{
+ mkdir -p media/nuageinit
+ setup_test_adduser
+ export NUAGE_RUN_TESTS=1
+ printf "{}" > media/nuageinit/meta_data.json
+ cat > media/nuageinit/user_data << 'EOF'
+#cloud-config
+package_update: true
+EOF
+ chmod 755 "${PWD}"/media/nuageinit/user_data
+ atf_check -o inline:"pkg update -y\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2
+}
+
+config2_userdata_upgrade_packages_body()
+{
+ mkdir -p media/nuageinit
+ setup_test_adduser
+ export NUAGE_RUN_TESTS=1
+ printf "{}" > media/nuageinit/meta_data.json
+ cat > media/nuageinit/user_data << 'EOF'
+#cloud-config
+package_upgrade: true
+EOF
+ chmod 755 "${PWD}"/media/nuageinit/user_data
+ atf_check -o inline:"pkg upgrade -y\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2
+}
+
atf_init_test_cases()
{
atf_add_test_case args
@@ -800,4 +831,6 @@ atf_init_test_cases()
atf_add_test_case nocloud_userdata_cloudconfig_chpasswd_list_list
atf_add_test_case config2_userdata_runcmd
atf_add_test_case config2_userdata_packages
+ atf_add_test_case config2_userdata_update_packages
+ atf_add_test_case config2_userdata_upgrade_packages
}