/** * @param DBServer $dbServer * @param bool $cached check only cached information * @param int $timeout * @return array|null */ public function getServerStatus(DBServer $dbServer, $cached = true, $timeout = 0) { if ($dbServer->status == SERVER_STATUS::RUNNING && ($dbServer->IsSupported('0.8') && $dbServer->osType == 'linux' || $dbServer->IsSupported('0.19') && $dbServer->osType == 'windows')) { if ($cached && !$dbServer->IsSupported('2.7.7')) { return ['status' => 'statusNoCache', 'error' => "<span style='color:gray;'>Scalarizr is checking actual status</span>"]; } try { $scalarizr = $dbServer->scalarizrUpdateClient->getStatus($cached); try { if ($dbServer->farmRoleId != 0) { $scheduledOn = $dbServer->GetFarmRoleObject()->GetSetting('scheduled_on'); } } catch (Exception $e) { } $nextUpdate = null; if ($scalarizr->candidate && $scalarizr->installed != $scalarizr->candidate) { $nextUpdate = ['candidate' => htmlspecialchars($scalarizr->candidate), 'scheduledOn' => $scheduledOn ? Scalr_Util_DateTime::convertTzFromUTC($scheduledOn) : null]; } return ['status' => htmlspecialchars($scalarizr->service_status), 'version' => htmlspecialchars($scalarizr->installed), 'candidate' => htmlspecialchars($scalarizr->candidate), 'repository' => Scalr::isHostedScalr() ? Utils::getScalarizrUpdateRepoTitle($scalarizr->repository) : ucfirst(htmlspecialchars($scalarizr->repository)), 'lastUpdate' => ['date' => $scalarizr->executed_at ? Scalr_Util_DateTime::convertTzFromUTC($scalarizr->executed_at) : "", 'error' => nl2br(htmlspecialchars($scalarizr->error))], 'nextUpdate' => $nextUpdate, 'fullInfo' => $scalarizr]; } catch (Exception $e) { if (stristr($e->getMessage(), "Method not found")) { return ['status' => 'statusNotAvailable', 'error' => "<span style='color:red;'>Scalarizr status is not available, because scalr-upd-client installed on this server is too old.</span>"]; } else { return ['status' => 'statusNotAvailable', 'error' => "<span style='color:red;'>Scalarizr status is not available: {$e->getMessage()}</span>"]; } } } }