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
This commit is contained in:
committed by
Baptiste Daroussin
parent
076fec1b88
commit
682af9601a
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user