diff options
author | Simon Rettberg | 2024-02-07 15:03:22 +0100 |
---|---|---|
committer | Simon Rettberg | 2024-02-07 15:03:22 +0100 |
commit | d2f6f0b3f88713e988590d833b2738edd6a4bbf1 (patch) | |
tree | a8688f1e436709b41672562885f018a6e1cefac4 /modules-available/minilinux/inc/minilinux.inc.php | |
parent | [statistics_reporting] Consider all machines in DB (diff) | |
download | slx-admin-d2f6f0b3f88713e988590d833b2738edd6a4bbf1.tar.gz slx-admin-d2f6f0b3f88713e988590d833b2738edd6a4bbf1.tar.xz slx-admin-d2f6f0b3f88713e988590d833b2738edd6a4bbf1.zip |
[minilinux] Introduce new "installed" state: broken
Avoid marking broken (i.e. missing/corrupted files) versions as "not
installed", which could in turn lead to complete deletions of versions
from the database without removing the according (broken) files from the
filesystem. Instead, properly mark them as broken in the DB so we keep
them but can handle them differently (UI: to be done).
Diffstat (limited to 'modules-available/minilinux/inc/minilinux.inc.php')
-rw-r--r-- | modules-available/minilinux/inc/minilinux.inc.php | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/modules-available/minilinux/inc/minilinux.inc.php b/modules-available/minilinux/inc/minilinux.inc.php index 88c50995..cbc797f2 100644 --- a/modules-available/minilinux/inc/minilinux.inc.php +++ b/modules-available/minilinux/inc/minilinux.inc.php @@ -11,6 +11,12 @@ class MiniLinux const INVALID = 'invalid'; + const INSTALL_MISSING = 0; + + const INSTALL_OK = 1; + + const INSTALL_BROKEN = 2; + /* * Update of available versions by querying sources */ @@ -73,7 +79,8 @@ class MiniLinux WHERE sourceid = :sourceid AND taskid = :taskid", ['sourceid' => $sourceid, 'taskid' => $taskId]); // Clean up -- delete orphaned versions that are not installed - Database::exec('DELETE FROM minilinux_version WHERE orphan > 4 AND installed = 0'); + Database::exec('DELETE FROM minilinux_version WHERE orphan > 4 AND installed = :missing', + ['missing' => self::INSTALL_MISSING]); // FKC makes sure we only delete orphaned ones Database::exec('DELETE IGNORE FROM minilinux_branch WHERE 1', [], true); } @@ -336,7 +343,7 @@ class MiniLinux } elseif ($slashes === 1) { // Latest from branch $ver = Database::queryFirst('SELECT versionid, installed FROM minilinux_version - WHERE branchid = :branchid AND installed = 1 ORDER BY dateline DESC', ['branchid' => $default]); + WHERE branchid = :branchid AND installed = :ok ORDER BY dateline DESC', ['branchid' => $default, 'ok' => self::INSTALL_OK]); } else { // Unknown return false; @@ -347,22 +354,23 @@ class MiniLinux return false; } Property::set(self::PROPERTY_DEFAULT_BOOT_EFFECTIVE, $ver['versionid']); - return $ver['installed'] != 0; + return $ver['installed'] != self::INSTALL_MISSING; } public static function linuxDownloadCallback($task, $versionid) { - self::setInstalledState($versionid, $task['statusCode'] === 'TASK_FINISHED'); + self::setInstalledState($versionid, $task['statusCode'] === 'TASK_FINISHED' ? self::INSTALL_OK : self::INSTALL_BROKEN); } - public static function setInstalledState($versionid, bool $installed): void + public static function setInstalledState($versionid, int $installed): void { Database::exec('UPDATE minilinux_version SET installed = :installed WHERE versionid = :versionid', [ 'versionid' => $versionid, - 'installed' => (int)$installed, + 'installed' => $installed, ]); - if ($installed) { - $res = Database::queryFirst('SELECT Count(*) AS cnt FROM minilinux_version WHERE installed <> 0'); + if ($installed === self::INSTALL_OK) { + $res = Database::queryFirst('SELECT Count(*) AS cnt FROM minilinux_version WHERE installed = :ok', + ['ok' => self::INSTALL_OK]); if ($res['cnt'] == 1) { self::setDefaultVersion($versionid); } @@ -550,9 +558,9 @@ class MiniLinux } if (substr_count($id, '/') < 2) { // Maybe this is a branchid, which means latest from according branch (installed only) - $res = Database::queryFirst('SELECT versionid FROM minilinux_version WHERE branchid = :id AND installed = 1 + $res = Database::queryFirst('SELECT versionid FROM minilinux_version WHERE branchid = :id AND installed = :ok ORDER BY dateline DESC LIMIT 1', - ['id' => $id]); + ['id' => $id, 'ok' => self::INSTALL_OK]); if ($res !== false) { $id = $res['versionid']; } @@ -560,4 +568,4 @@ class MiniLinux return $id; } -}
\ No newline at end of file +} |