From 23d8c6fc0c3b031aa081ee1a245f9b0792514fd3 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 28 Nov 2017 16:41:33 +0100 Subject: [statistics] Introduce state column to get rid of complicated state determination This also adds support for the STANDBY state --- .../locationinfo/inc/infopanel.inc.php | 4 +- .../locationinfo/inc/locationinfo.inc.php | 12 +- .../locationinfo/templates/frontend-default.html | 4 +- .../rebootcontrol/inc/rebootqueries.inc.php | 10 +- .../runmode/templates/machine-selector.html | 15 +- modules-available/statistics/api.inc.php | 190 +++++++++++++++------ modules-available/statistics/hooks/cron.inc.php | 18 +- modules-available/statistics/inc/filter.inc.php | 20 +-- modules-available/statistics/install.inc.php | 20 ++- modules-available/statistics/page.inc.php | 30 +--- .../statistics/templates/clientlist.html | 17 +- .../statistics/templates/machine-main.html | 15 +- 12 files changed, 226 insertions(+), 129 deletions(-) diff --git a/modules-available/locationinfo/inc/infopanel.inc.php b/modules-available/locationinfo/inc/infopanel.inc.php index 66ee0ae7..c612e518 100644 --- a/modules-available/locationinfo/inc/infopanel.inc.php +++ b/modules-available/locationinfo/inc/infopanel.inc.php @@ -81,7 +81,7 @@ class InfoPanel } $positionCol = $withPosition ? 'm.position,' : ''; - $query = "SELECT m.locationid, m.machineuuid, $positionCol m.logintime, m.lastseen, m.lastboot FROM machine m + $query = "SELECT m.locationid, m.machineuuid, $positionCol m.logintime, m.lastseen, m.lastboot, m.state FROM machine m WHERE m.locationid IN (:idlist)"; $dbquery = Database::simpleQuery($query, array('idlist' => $idList)); @@ -107,7 +107,7 @@ class InfoPanel } } $pc['pcState'] = LocationInfo::getPcState($row); - //$pc['pcState'] = ['BROKEN', 'OFF', 'IDLE', 'OCCUPIED'][mt_rand(0,3)]; // XXX + //$pc['pcState'] = ['BROKEN', 'OFFLINE', 'IDLE', 'OCCUPIED', 'STANDBY'][mt_rand(0,4)]; // XXX // Add the array to the machines list. $array[$row['locationid']]['machines'][] = $pc; diff --git a/modules-available/locationinfo/inc/locationinfo.inc.php b/modules-available/locationinfo/inc/locationinfo.inc.php index 830fb050..933eaf4d 100644 --- a/modules-available/locationinfo/inc/locationinfo.inc.php +++ b/modules-available/locationinfo/inc/locationinfo.inc.php @@ -6,7 +6,7 @@ class LocationInfo /** * Gets the pc data and returns it's state. * - * @param array $pc The pc data from the db. Array('logintime' =>, 'lastseen' =>, 'lastboot' =>) + * @param array $pc The pc data from the db. Array('state' => xx, 'lastseen' => xxx) * @return int pc state */ public static function getPcState($pc) @@ -16,16 +16,10 @@ class LocationInfo $lastboot = (int)$pc['lastboot']; $NOW = time(); - if ($NOW - $lastseen > 14 * 86400) { + if ($pc['state'] === 'OFFLINE' && $NOW - $lastseen > 21 * 86400) { return "BROKEN"; - } elseif (($NOW - $lastseen > 610) || $lastboot === 0) { - return "OFF"; - } elseif ($logintime === 0) { - return "IDLE"; - } elseif ($logintime > 0) { - return "OCCUPIED"; } - return -1; + return $pc['state']; } /** diff --git a/modules-available/locationinfo/templates/frontend-default.html b/modules-available/locationinfo/templates/frontend-default.html index fc9c3eac..e199fc36 100755 --- a/modules-available/locationinfo/templates/frontend-default.html +++ b/modules-available/locationinfo/templates/frontend-default.html @@ -29,7 +29,7 @@ optional: -