The branch main has been updated by bapt:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=682af9601aebb71357d05bb9ffbc137958a437cf

commit 682af9601aebb71357d05bb9ffbc137958a437cf
Author:     Sebastien Baylocq <sebastien.bayl...@ovhcloud.com>
AuthorDate: 2025-06-06 16:24:48 +0000
Commit:     Baptiste Daroussin <b...@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
 }

Reply via email to