public function xSaveSzrUpdSettingsAction() { $dbFarm = DBFarm::LoadByID($this->getParam('farmId')); $this->user->getPermissions()->validate($dbFarm); $schedule = implode(" ", array($this->getParam("hh"), $this->getParam("dd"), $this->getParam("dw"))); $repo = $this->getParam("szrRepository"); $dbFarm->SetSetting(DBFarm::SETTING_SZR_UPD_REPOSITORY, $repo); $dbFarm->SetSetting(DBFarm::SETTING_SZR_UPD_SCHEDULE, $schedule); $servers = $dbFarm->GetServersByFilter(array('status' => array(SERVER_STATUS::INIT, SERVER_STATUS::RUNNING))); foreach ($servers as $dbServer) { try { $port = $dbServer->GetProperty(SERVER_PROPERTIES::SZR_UPDC_PORT); if (!$port) { $port = 8008; } $updClient = new Scalr_Net_Scalarizr_UpdateClient($dbServer, $port); $updClient->configure($repo, $schedule); } catch (Exception $e) { Logger::getLogger('Farm')->error(new FarmLogMessage($dbFarm->ID, sprintf("Unable to update scalarizr update settings on server %s: %s", $dbServer->serverId, $e->getMessage()))); $err = true; } } if (!$err) { $this->response->success('Scalarizr auto-update settings successfully saved'); } else { $this->response->warning('Scalarizr auto-update settings successfully saved, but some servers were not updated. Please check "Logs -> System log" for more details.'); } }
private function onHostInit($message, DBServer $dbserver) { if ($dbserver->status == SERVER_STATUS::PENDING) { // Update server crypto key $srv_props = array(); if ($message->cryptoKey) { $srv_props[SERVER_PROPERTIES::SZR_KEY] = trim($message->cryptoKey); $srv_props[SERVER_PROPERTIES::SZR_KEY_TYPE] = SZR_KEY_TYPE::PERMANENT; } if ($dbserver->platform != SERVER_PLATFORMS::CLOUDSTACK) { $srv_props[SERVER_PROPERTIES::SZR_SNMP_PORT] = $message->snmpPort; $remoteIp = $message->remoteIp; } else { if ($dbserver->farmRoleId) { $dbFarmRole = $dbserver->GetFarmRoleObject(); $networkType = $dbFarmRole->GetSetting(DBFarmRole::SETTING_CLOUDSTACK_NETWORK_TYPE); if ($networkType == 'Direct') { $remoteIp = $message->localIp; $srv_props[SERVER_PROPERTIES::SZR_SNMP_PORT] = $message->snmpPort; } else { $env = $dbserver->GetEnvironmentObject(); $remoteIp = $env->getPlatformConfigValue(Modules_Platforms_Cloudstack::SHARED_IP . "." . $dbserver->GetProperty(CLOUDSTACK_SERVER_PROPERTIES::CLOUD_LOCATION), false); } } else { $remoteIp = $message->localIp; $srv_props[SERVER_PROPERTIES::SZR_SNMP_PORT] = $message->snmpPort; } } //Update auto-update settings //TODO: Check auto-update client version if ($dbserver->IsSupported('0.7.225')) { $dbserver->SetProperties($srv_props); try { $repo = $dbserver->GetFarmObject()->GetSetting(DBFarm::SETTING_SZR_UPD_REPOSITORY); $schedule = $dbserver->GetFarmObject()->GetSetting(DBFarm::SETTING_SZR_UPD_SCHEDULE); if ($repo && $schedule) { $updateClient = new Scalr_Net_Scalarizr_UpdateClient($dbserver); $updateClient->configure($repo, $schedule); } } catch (Exception $e) { } } // MySQL specific $dbFarmRole = $dbserver->GetFarmRoleObject(); if ($dbFarmRole->GetRoleObject()->hasBehavior(ROLE_BEHAVIORS::MYSQL)) { $master = $dbFarmRole->GetFarmObject()->GetMySQLInstances(true); // If no masters in role this server becomes it if (!$master[0] && !(int) $dbFarmRole->GetSetting(DbFarmRole::SETTING_MYSQL_SLAVE_TO_MASTER)) { $srv_props[SERVER_PROPERTIES::DB_MYSQL_MASTER] = 1; } } //MSR Replication Master //TODO: MySQL if ($dbFarmRole->GetRoleObject()->getDbMsrBehavior()) { $servers = $dbFarmRole->GetServersByFilter(array('status' => array(SERVER_STATUS::INIT, SERVER_STATUS::RUNNING))); if (!$dbFarmRole->GetSetting(Scalr_Db_Msr::SLAVE_TO_MASTER)) { $masterFound = false; foreach ($servers as $server) { if ($server->GetProperty(Scalr_Db_Msr::REPLICATION_MASTER)) { $masterFound = true; } } if (!$masterFound) { $srv_props[Scalr_Db_Msr::REPLICATION_MASTER] = 1; } } elseif ($dbFarmRole->GetSetting(Scalr_Db_Msr::SLAVE_TO_MASTER) && count($servers) == 0) { $dbFarmRole->SetSetting(Scalr_Db_Msr::SLAVE_TO_MASTER, 0); $srv_props[Scalr_Db_Msr::REPLICATION_MASTER] = 1; } } $dbserver->SetProperties($srv_props); return new HostInitEvent($dbserver, $message->localIp, $remoteIp, $message->sshPubKey); } else { $this->logger->error("Strange situation. Received HostInit message" . " from server '{$dbserver->serverId}' ({$message->remoteIp})" . " with state {$dbserver->status}!"); } }
private function onHostInit($message, DBServer $dbserver) { if ($dbserver->status == SERVER_STATUS::PENDING) { $platform = PlatformFactory::NewPlatform($dbserver->platform); // Update server crypto key $srv_props = array(); if ($message->cryptoKey) { $srv_props[SERVER_PROPERTIES::SZR_KEY] = trim($message->cryptoKey); $srv_props[SERVER_PROPERTIES::SZR_KEY_TYPE] = SZR_KEY_TYPE::PERMANENT; } $srv_props[SERVER_PROPERTIES::SZR_SNMP_PORT] = $message->snmpPort; if ($dbserver->isCloudstack()) { $ips = $platform->GetServerIPAddresses($dbserver); if ($ips['remoteIp']) { $remoteIp = $ips['remoteIp']; $dbserver->GetFarmRoleObject()->SetSetting(DBFarmRole::SETTING_CLOUDSTACK_NETWORK_TYPE, 'Direct', DBFarmRole::TYPE_LCL); } else { if ($dbserver->farmRoleId) { $dbFarmRole = $dbserver->GetFarmRoleObject(); $networkType = $dbFarmRole->GetSetting(DBFarmRole::SETTING_CLOUDSTACK_NETWORK_TYPE); if ($networkType == 'Direct') { $remoteIp = $message->localIp; } else { $useStaticNat = $dbFarmRole->GetSetting(DBFarmRole::SETIING_CLOUDSTACK_USE_STATIC_NAT); if (!$useStaticNat) { $sharedIp = $dbFarmRole->GetSetting(DBFarmRole::SETTING_CLOUDSTACK_SHARED_IP_ADDRESS); if (!$sharedIp) { $env = $dbserver->GetEnvironmentObject(); $remoteIp = $platform->getConfigVariable(CloudstackPlatformModule::SHARED_IP . "." . $dbserver->GetProperty(CLOUDSTACK_SERVER_PROPERTIES::CLOUD_LOCATION), $env, false); } else { $remoteIp = $sharedIp; } } } } } } if ($dbserver->isOpenstack()) { if ($dbserver->farmRoleId) { $ipPool = $dbserver->GetFarmRoleObject()->GetSetting(DBFarmRole::SETTING_OPENSTACK_IP_POOL); if ($ipPool && empty($dbserver->remoteIp)) { return false; } else { $remoteIp = $dbserver->remoteIp; } } } if (!$remoteIp) { $ips = $platform->GetServerIPAddresses($dbserver); if ($ips['remoteIp']) { $remoteIp = $ips['remoteIp']; } else { $remoteIp = $message->remoteIp ? $ips['remoteIp'] : ''; } } $dbserver->remoteIp = $remoteIp; $dbserver->Save(); //Update auto-update settings //TODO: Check auto-update client version if ($dbserver->IsSupported('0.7.225') && !$dbserver->IsSupported('2.7.10')) { $dbserver->SetProperties($srv_props); try { $repo = $dbserver->GetFarmRoleObject()->GetSetting(Scalr_Role_Behavior::ROLE_BASE_SZR_UPD_REPOSITORY); if (!$repo) { $repo = $dbserver->GetFarmObject()->GetSetting(DBFarm::SETTING_SZR_UPD_REPOSITORY); } $schedule = $dbserver->GetFarmObject()->GetSetting(DBFarm::SETTING_SZR_UPD_SCHEDULE); if ($repo && $schedule) { $updateClient = new Scalr_Net_Scalarizr_UpdateClient($dbserver); $updateClient->configure($repo, $schedule); } } catch (Exception $e) { } } // MySQL specific $dbFarmRole = $dbserver->GetFarmRoleObject(); if ($dbFarmRole->GetRoleObject()->hasBehavior(ROLE_BEHAVIORS::MYSQL)) { $master = $dbFarmRole->GetFarmObject()->GetMySQLInstances(true); // If no masters in role this server becomes it if (!$master[0] && !(int) $dbFarmRole->GetSetting(DBFarmRole::SETTING_MYSQL_SLAVE_TO_MASTER)) { $srv_props[SERVER_PROPERTIES::DB_MYSQL_MASTER] = 1; } } //MSR Replication Master //TODO: MySQL if ($dbFarmRole->GetRoleObject()->getDbMsrBehavior()) { $servers = $dbFarmRole->GetServersByFilter(array('status' => array(SERVER_STATUS::INIT, SERVER_STATUS::RUNNING))); if (!$dbFarmRole->GetSetting(Scalr_Db_Msr::SLAVE_TO_MASTER)) { $masterFound = false; foreach ($servers as $server) { if ($server->GetProperty(Scalr_Db_Msr::REPLICATION_MASTER)) { $masterFound = true; } } if (!$masterFound) { $srv_props[Scalr_Db_Msr::REPLICATION_MASTER] = 1; } } elseif ($dbFarmRole->GetSetting(Scalr_Db_Msr::SLAVE_TO_MASTER) && count($servers) == 0) { $dbFarmRole->SetSetting(Scalr_Db_Msr::SLAVE_TO_MASTER, 0, DBFarmRole::TYPE_LCL); $srv_props[Scalr_Db_Msr::REPLICATION_MASTER] = 1; } } $dbserver->SetProperties($srv_props); return new HostInitEvent($dbserver, $message->localIp, $remoteIp, $message->sshPubKey); } else { /* $this->logger->error("Strange situation. Received HostInit message" . " from server '{$dbserver->serverId}' ({$message->remoteIp})" . " with state {$dbserver->status}!"); */ //TOOD: Check if instance terminating we probably can cancel termination and continue initialization } }
public function extendedInfoAction() { if (!$this->getParam('serverId')) { throw new Exception(_('Server not found')); } $dbServer = DBServer::LoadByID($this->getParam('serverId')); $this->user->getPermissions()->validate($dbServer); $info = PlatformFactory::NewPlatform($dbServer->platform)->GetServerExtendedInformation($dbServer); $form = array(array('xtype' => 'fieldcontainer', 'layout' => 'hbox', 'hideLabel' => true, 'items' => array(array('xtype' => 'fieldset', 'title' => 'General', 'height' => 218, 'flex' => 1, 'margin' => '0 3 0 0', 'labelWidth' => 240, 'items' => array(array('xtype' => 'displayfield', 'fieldLabel' => 'Server ID', 'width' => 380, 'value' => $dbServer->serverId), array('xtype' => 'displayfield', 'fieldLabel' => 'Platform', 'value' => $dbServer->platform), array('xtype' => 'displayfield', 'fieldLabel' => 'Remote IP', 'value' => $dbServer->remoteIp ? $dbServer->remoteIp : ''), array('xtype' => 'displayfield', 'fieldLabel' => 'Local IP', 'value' => $dbServer->localIp ? $dbServer->localIp : ''), array('xtype' => 'displayfield', 'fieldLabel' => 'Status', 'value' => $dbServer->status), array('xtype' => 'displayfield', 'fieldLabel' => 'Index', 'value' => $dbServer->index), array('xtype' => 'displayfield', 'fieldLabel' => 'Added at', 'value' => Scalr_Util_DateTime::convertTz($dbServer->dateAdded))))))); /***** Scalr agent *****/ if ($dbServer->status == SERVER_STATUS::RUNNING) { try { $updateClient = new Scalr_Net_Scalarizr_UpdateClient($dbServer); $status = $updateClient->getStatus(); } catch (Exception $e) { $oldUpdClient = stristr($e->getMessage(), "Method not found"); $error = $e->getMessage(); } if ($status) { $items = array(array('xtype' => 'displayfield', 'fieldLabel' => 'Scalarizr status', 'value' => $status->service_status == 'running' ? "<span style='color:green;'>Running</span>" : "<span style='color:red;'>" . ucfirst($status->service_status) . "</span>"), array('xtype' => 'displayfield', 'fieldLabel' => 'Version', 'value' => $status->installed), array('xtype' => 'displayfield', 'fieldLabel' => 'Repository', 'value' => ucfirst($status->repository)), array('xtype' => 'displayfield', 'fieldLabel' => 'Last update', 'value' => Scalr_Util_DateTime::convertTz($status->executed_at)), array('xtype' => 'displayfield', 'fieldLabel' => 'Last update status', 'value' => $status->error ? "<span style='color:red;'>Error: " . nl2br($status->error) . "</span>" : "<span style='color:green;'>Success</span>"), array('xtype' => 'displayfield', 'fieldLabel' => 'Next update', 'value' => $status->installed != $status->candidate ? "Update to <b>{$status->candidate}</b> scheduled on <b>" . Scalr_Util_DateTime::convertTz($status->scheduled_on) . "</b>" : "Scalarizr is up to date"), array('xtype' => 'displayfield', 'fieldLabel' => 'Schedule', 'value' => $status->schedule), array('xtype' => 'fieldcontainer', 'layout' => 'hbox', 'hideLabel' => true, 'items' => array(array('xtype' => 'button', 'itemId' => 'updateSzrBtn', 'text' => 'Update scalarizr now', 'disabled' => $status->installed == $status->candidate, 'flex' => 1, 'margin' => $this->getParam('beta') == 1 ? '0 3 0 0' : '0 0 0 0'), array('xtype' => 'button', 'itemId' => 'restartSzrBtn', 'text' => 'Restart scalarizr', 'flex' => 1)))); } else { if ($oldUpdClient) { $items = array(array('xtype' => 'button', 'itemId' => 'upgradeUpdClientBtn', 'text' => 'Upgrade scalarizr upd-client', 'flex' => 1)); } else { $items = array(array('xtype' => 'displayfield', 'hideLabel' => true, 'value' => "<span style='color:red;'>Scalarizr status is not available: {$error}</span>")); } } $form[0]['items'][] = array('xtype' => 'fieldset', 'labelWidth' => 240, 'flex' => 1, 'title' => 'Scalr agent status', 'items' => $items); } /***** Scalr agent *****/ $it = array(); if (is_array($info) && count($info)) { foreach ($info as $name => $value) { $it[] = array('xtype' => 'displayfield', 'fieldLabel' => $name, 'value' => $value); } } else { $it[] = array('xtype' => 'displayfield', 'hideLabel' => true, 'value' => 'Platform specific details not available for this server'); } $form[] = array('xtype' => 'fieldset', 'labelWidth' => 240, 'title' => 'Platform specific details', 'collapsible' => true, 'collapsed' => false, 'items' => $it); /* <tr> <td width="20%">CloudWatch monitoring:</td> <td>{if $info->instancesSet->item->monitoring->state == 'enabled'} <a href="/aws_cw_monitor.php?ObjectId={$info->instancesSet->item->instanceId}&Object=InstanceId&NameSpace=AWS/EC2">{$info->instancesSet->item->monitoring->state}</a> (<a href="aws_ec2_cw_manage.php?action=Disable&iid={$info->instancesSet->item->instanceId}®ion={$smarty.request.region}">Disable</a>) {else} {$info->instancesSet->item->monitoring->state} (<a href="aws_ec2_cw_manage.php?action=Enable&iid={$info->instancesSet->item->instanceId}®ion={$smarty.request.region}">Enable</a>) {/if} </td> </tr> --> {include file="inc/intable_footer.tpl" color="Gray"} */ if (count($dbServer->GetAllProperties())) { $it = array(); foreach ($dbServer->GetAllProperties() as $name => $value) { $it[] = array('xtype' => 'displayfield', 'fieldLabel' => $name, 'value' => $value); } $form[] = array('xtype' => 'fieldset', 'title' => 'Scalr internal server properties', 'collapsible' => true, 'collapsed' => true, 'labelWidth' => 220, 'items' => $it); } if (!$dbServer->IsSupported('0.5')) { $authKey = $dbServer->GetKey(); if (!$authKey) { $authKey = Scalr::GenerateRandomKey(40); $dbServer->SetProperty(SERVER_PROPERTIES::SZR_KEY, $authKey); } $dbServer->SetProperty(SERVER_PROPERTIES::SZR_KEY_TYPE, SZR_KEY_TYPE::PERMANENT); $form[] = array('xtype' => 'fieldset', 'title' => 'Upgrade from ami-scripts to scalarizr', 'labelWidth' => 220, 'items' => array('xtype' => 'textarea', 'hideLabel' => true, 'readOnly' => true, 'anchor' => '-20', 'value' => sprintf("wget " . CONFIG::$HTTP_PROTO . "://" . CONFIG::$EVENTHANDLER_URL . "/storage/scripts/amiscripts-to-scalarizr.py && python amiscripts-to-scalarizr.py -s %s -k %s -o queryenv-url=%s -o messaging_p2p.producer_url=%s", $dbServer->serverId, $authKey, CONFIG::$HTTP_PROTO . "://" . CONFIG::$EVENTHANDLER_URL . "/query-env", CONFIG::$HTTP_PROTO . "://" . CONFIG::$EVENTHANDLER_URL . "/messaging"))); } $this->response->page('ui/servers/extendedinfo.js', $form); }
/** * @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 { $port = $dbServer->GetProperty(SERVER_PROPERTIES::SZR_UPDC_PORT); if (!$port) { $port = 8008; } if (!$timeout) { $timeout = \Scalr::config('scalr.system.instances_connection_timeout'); } $updateClient = new Scalr_Net_Scalarizr_UpdateClient($dbServer, $port, $timeout); $scalarizr = $updateClient->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' => 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>"]; } } } }
public function dashboardAction() { if (!$this->request->isAllowed(Acl::RESOURCE_FARMS_SERVERS) && !$this->request->isAllowed(Acl::RESOURCE_FARMS_ROLES, Acl::PERM_FARMS_ROLES_CREATE)) { throw new Scalr_Exception_InsufficientPermissions(); } if (!$this->getParam('serverId')) { throw new Exception(_('Server not found')); } $dbServer = DBServer::LoadByID($this->getParam('serverId')); $this->user->getPermissions()->validate($dbServer); $data = array(); $info = PlatformFactory::NewPlatform($dbServer->platform)->GetServerExtendedInformation($dbServer); if (is_array($info) && count($info)) { $data['cloudProperties'] = $info; } try { $dbRole = $dbServer->GetFarmRoleObject()->GetRoleObject(); } catch (Exception $e) { } $r_dns = $this->db->GetOne("SELECT value FROM farm_role_settings WHERE farm_roleid=? AND `name`=? LIMIT 1", array($dbServer->farmRoleId, DBFarmRole::SETTING_EXCLUDE_FROM_DNS)); $data['general'] = array('server_id' => $dbServer->serverId, 'farm_id' => $dbServer->farmId, 'farm_role_id' => $dbServer->farmRoleId, 'role_id' => isset($dbRole) ? $dbRole->id : null, 'platform' => $dbServer->platform, 'cloud_location' => $dbServer->GetCloudLocation(), 'role' => array('name' => isset($dbRole) ? $dbRole->name : 'unknown', 'platform' => $dbServer->platform), 'os' => array('title' => isset($dbRole) ? $dbRole->os : 'unknown', 'family' => isset($dbRole) ? $dbRole->osFamily : 'unknown'), 'behaviors' => isset($dbRole) ? $dbRole->getBehaviors() : array(), 'status' => $dbServer->status, 'index' => $dbServer->index, 'local_ip' => $dbServer->localIp, 'remote_ip' => $dbServer->remoteIp, 'instType' => PlatformFactory::NewPlatform($dbServer->platform)->GetServerFlavor($dbServer), 'addedDate' => Scalr_Util_DateTime::convertTz($dbServer->dateAdded), 'excluded_from_dns' => !$dbServer->GetProperty(SERVER_PROPERTIES::EXCLUDE_FROM_DNS) && !$r_dns ? false : true, 'is_locked' => $dbServer->GetProperty(EC2_SERVER_PROPERTIES::IS_LOCKED) ? 1 : 0, 'cloud_server_id' => $dbServer->GetCloudServerID()); if ($dbServer->status == SERVER_STATUS::RUNNING) { $rebooting = $this->db->GetOne("SELECT value FROM server_properties WHERE server_id=? AND `name`=? LIMIT 1", array($dbServer->serverId, SERVER_PROPERTIES::REBOOTING)); if ($rebooting) { $data['general']['status'] = "Rebooting"; } $subStatus = $dbServer->GetProperty(SERVER_PROPERTIES::SUB_STATUS); if ($subStatus) { $data['general']['status'] = ucfirst($subStatus); } } if ($dbServer->status == SERVER_STATUS::RUNNING && $dbServer->GetProperty(SERVER_PROPERTIES::SUB_STATUS) != 'stopped' && ($dbServer->IsSupported('0.8') && $dbServer->osType == 'linux' || $dbServer->IsSupported('0.19') && $dbServer->osType == 'windows')) { try { $port = $dbServer->GetProperty(SERVER_PROPERTIES::SZR_UPDC_PORT); if (!$port) { $port = 8008; } $updateClient = new Scalr_Net_Scalarizr_UpdateClient($dbServer, $port, \Scalr::config('scalr.system.instances_connection_timeout')); $scalarizr = $updateClient->getStatus(); } catch (Exception $e) { $oldUpdClient = stristr($e->getMessage(), "Method not found"); $error = $e->getMessage(); } if ($scalarizr) { $data['scalarizr'] = array('status' => $scalarizr->service_status, 'version' => $scalarizr->installed, 'candidate' => $scalarizr->candidate, 'repository' => ucfirst($scalarizr->repository), 'lastUpdate' => array('date' => $scalarizr->executed_at ? Scalr_Util_DateTime::convertTz($scalarizr->executed_at) : "", 'error' => nl2br($scalarizr->error)), 'nextUpdate' => $scalarizr->installed != $scalarizr->candidate ? "Update to <b>{$scalarizr->candidate}</b> scheduled on <b>" . Scalr_Util_DateTime::convertTz($scalarizr->scheduled_on) . "</b>" : "Scalarizr is up to date", 'fullInfo' => $scalarizr); } else { if ($oldUpdClient) { $data['scalarizr'] = array('status' => 'upgradeUpdClient'); } else { $data['scalarizr'] = array('status' => 'statusNotAvailable', 'error' => "<span style='color:red;'>Scalarizr status is not available: {$error}</span>"); } } } $internalProperties = $dbServer->GetAllProperties(); if (!empty($internalProperties)) { $data['internalProperties'] = $internalProperties; } if (!$dbServer->IsSupported('0.5')) { $baseurl = $this->getContainer()->config('scalr.endpoint.scheme') . "://" . $this->getContainer()->config('scalr.endpoint.host'); $authKey = $dbServer->GetKey(); if (!$authKey) { $authKey = Scalr::GenerateRandomKey(40); $dbServer->SetProperty(SERVER_PROPERTIES::SZR_KEY, $authKey); } $dbServer->SetProperty(SERVER_PROPERTIES::SZR_KEY_TYPE, SZR_KEY_TYPE::PERMANENT); $data['updateAmiToScalarizr'] = sprintf("wget " . $baseurl . "/storage/scripts/amiscripts-to-scalarizr.py && python amiscripts-to-scalarizr.py -s %s -k %s -o queryenv-url=%s -o messaging_p2p.producer_url=%s", $dbServer->serverId, $authKey, $baseurl . "/query-env", $baseurl . "/messaging"); } $this->response->page('ui/servers/dashboard.js', $data, array('ui/servers/actionsmenu.js', 'ui/monitoring/window.js')); }