public function xListTasksAction() { $this->request->defineParams(array('sort' => array('type' => 'json', 'default' => array('property' => 'dtadded', 'direction' => 'DESC')))); $sql = "SELECT id FROM dm_deployment_tasks WHERE status !='" . Scalr_Dm_DeploymentTask::STATUS_ARCHIVED . "' AND env_id = '{$this->getEnvironmentId()}'"; $response = $this->buildResponseFromSql($sql, array("id")); foreach ($response["data"] as $k => $row) { $data = false; try { $deploymentTask = Scalr_Dm_DeploymentTask::init()->loadById($row['id']); $application = $deploymentTask->getApplication(); try { $dbServer = DBServer::LoadByID($deploymentTask->serverId); $serverIndex = $dbServer->index; } catch (Exception $e) { } $data = array('id' => $deploymentTask->id, 'application_name' => $application->name, 'application_id' => $deploymentTask->applicationId, 'server_id' => $deploymentTask->serverId, 'server_index' => $serverIndex, 'remote_path' => $deploymentTask->remotePath, 'status' => $deploymentTask->status, 'dtadded' => $deploymentTask->dtAdded ? Scalr_Util_DateTime::convertTz($deploymentTask->dtAdded) : "", 'dtdeployed' => $deploymentTask->dtDeployed ? Scalr_Util_DateTime::convertTz($deploymentTask->dtDeployed) : "Never"); try { $dbFarmRole = DBFarmRole::LoadByID($deploymentTask->farmRoleId); $data['farm_roleid'] = $dbFarmRole->ID; $data['role_name'] = $dbFarmRole->GetRoleObject()->name; $data['farm_id'] = $dbFarmRole->FarmID; $data['farm_name'] = $dbFarmRole->GetFarmObject()->Name; } catch (Exception $e) { } } catch (Exception $e) { } $response["data"][$k] = $data; } $this->response->data($response); }
public function xListEventsAction() { $this->request->defineParams(array('farmId' => array('type' => 'int'), 'eventServerId', 'eventId', 'query' => array('type' => 'string'), 'sort' => array('type' => 'string', 'default' => 'id'), 'dir' => array('type' => 'string', 'default' => 'DESC'))); $sql = "SELECT farmid, message, type, dtadded, event_server_id, event_id FROM events WHERE farmid='{$this->dbFarm->ID}'"; if ($this->getParam('eventServerId')) { $sql .= " AND event_server_id = " . $this->db->qstr($this->getParam('eventServerId')); } if ($this->getParam('eventId')) { $sql .= " AND event_id = " . $this->db->qstr($this->getParam('eventId')); } $response = $this->buildResponseFromSql($sql, array("message", "type", "dtadded", "event_server_id", "event_id")); $cache = array(); foreach ($response['data'] as &$row) { $row['message'] = nl2br($row['message']); $row["dtadded"] = Scalr_Util_DateTime::convertTz($row["dtadded"]); $row['scripts'] = $this->db->GetOne("SELECT COUNT(*) FROM scripting_log WHERE event_id = ?", array($row['event_id'])); if ($row['event_server_id']) { $esInfo = $this->db->GetRow("SELECT role_id, farm_roleid, `index`, farm_id FROM servers WHERE server_id = ? LIMIT 1", array($row['event_server_id'])); if ($esInfo) { if (!$cache['farm_names'][$esInfo['farm_id']]) { $cache['farm_names'][$esInfo['farm_id']] = $this->db->GetOne("SELECT name FROM farms WHERE id=?", array($esInfo['farm_id'])); } $row['event_farm_name'] = $cache['farm_names'][$esInfo['farm_id']]; $row['event_farm_id'] = $esInfo['farm_id']; $row['event_farm_roleid'] = $esInfo['farm_roleid']; if (!$cache['role_names'][$esInfo['role_id']]) { $cache['role_names'][$esInfo['role_id']] = $this->db->GetOne("SELECT name FROM roles WHERE id=?", array($esInfo['role_id'])); } $row['event_role_name'] = $cache['role_names'][$esInfo['role_id']]; $row['event_server_index'] = $esInfo['index']; } } } $this->response->data($response); }
public function getAccountEnvironmentsList() { $environments = $this->user->getEnvironments(); $result = array(); foreach ($environments as &$row) { $env = Scalr_Environment::init()->loadById($row['id']); $row['platforms'] = $env->getEnabledPlatforms(); $row['teams'] = array(); if ($this->getContainer()->config->get('scalr.auth_mode') == 'ldap') { $row['teamIds'] = array(); } foreach ($env->getTeams() as $teamId) { if ($this->getContainer()->config->get('scalr.auth_mode') == 'ldap') { $team = new Scalr_Account_Team(); $team->loadById($teamId); $row['teams'][] = $team->name; $row['teamIds'][] = $teamId; } else { $row['teams'][] = $teamId; } } $row['dtAdded'] = Scalr_Util_DateTime::convertTz($env->dtAdded); $row['status'] = $env->status; if ($this->getContainer()->analytics->enabled) { $row['ccId'] = $env->getPlatformConfigValue(Scalr_Environment::SETTING_CC_ID); } $result[] =& $row; } return $result; }
/** * @test * @dataProvider providerIncrescentTimeInterval */ public function testIncrescentTimeInterval($date, $curDate, $expected) { $this->assertEquals($expected, \Scalr_Util_DateTime::getIncrescentTimeInterval($date, $curDate)); $date = DateTime::createFromFormat('Y-m-d H:i:s', $date); $curDate = DateTime::createFromFormat('Y-m-d H:i:s', $curDate); $this->assertEquals($expected, \Scalr_Util_DateTime::getIncrescentTimeInterval($date, $curDate)); }
public function xListTasksAction() { $this->request->defineParams(array('sort' => array('type' => 'json', 'default' => array('property' => 'dtadded', 'direction' => 'DESC')))); $sql = "\n SELECT\n dt.id, dma.name AS application_name, servers.index AS server_index, farms.name AS farm_name, roles.name AS role_name,\n dt.status AS status, dt.dtadded AS dtadded\n FROM dm_deployment_tasks dt\n LEFT JOIN dm_applications dma ON dt.dm_application_id = dma.id\n LEFT JOIN servers ON servers.id = dt.server_id\n LEFT JOIN farms ON servers.farm_id = farms.id\n LEFT JOIN roles ON servers.farm_roleid = roles.id\n WHERE dt.`status` != ? AND dt.env_id = ?\n "; $args = array(Scalr_Dm_DeploymentTask::STATUS_ARCHIVED, $this->getEnvironmentId()); list($sql, $args) = $this->request->prepareFarmSqlQuery($sql, $args, 'farms'); $response = $this->buildResponseFromSql2($sql, array('id', 'application_name', 'farm_name', 'role_name', 'server_index', 'status', 'dtadded', 'dtdeployed'), array(), $args); foreach ($response["data"] as $k => $row) { $data = false; try { $deploymentTask = Scalr_Dm_DeploymentTask::init()->loadById($row['id']); $application = $deploymentTask->getApplication(); try { $dbServer = DBServer::LoadByID($deploymentTask->serverId); $serverIndex = $dbServer->index; } catch (Exception $e) { } $data = array('id' => $deploymentTask->id, 'application_name' => $application->name, 'application_id' => $deploymentTask->applicationId, 'server_id' => $deploymentTask->serverId, 'server_index' => $serverIndex, 'remote_path' => $deploymentTask->remotePath, 'status' => $deploymentTask->status, 'dtadded' => $deploymentTask->dtAdded ? Scalr_Util_DateTime::convertTz($deploymentTask->dtAdded) : "", 'dtdeployed' => $deploymentTask->dtDeployed ? Scalr_Util_DateTime::convertTz($deploymentTask->dtDeployed) : "Never"); try { $dbFarmRole = DBFarmRole::LoadByID($deploymentTask->farmRoleId); $data['farm_roleid'] = $dbFarmRole->ID; $data['role_name'] = $dbFarmRole->GetRoleObject()->name; $data['farm_id'] = $dbFarmRole->FarmID; $data['farm_name'] = $dbFarmRole->GetFarmObject()->Name; } catch (Exception $e) { } } catch (Exception $e) { } $response["data"][$k] = $data; } $this->response->data($response); }
private function getBackupDetails($backupId) { $links = array(); $backup = Scalr_Db_Backup::init()->loadById($backupId); $this->user->getPermissions()->validate($backup); $data = array('backup_id' => $backup->id, 'farm_id' => $backup->farmId, 'type' => ROLE_BEHAVIORS::GetName($backup->service) ? ROLE_BEHAVIORS::GetName($backup->service) : 'unknown', 'date' => Scalr_Util_DateTime::convertTz($backup->dtCreated), 'size' => $backup->size ? round($backup->size / 1024 / 1024, 2) : 0, 'provider' => $backup->provider, 'cloud_location' => $backup->cloudLocation, 'farmName' => DBFarm::LoadByIDOnlyName($backup->farmId)); $downloadParts = $backup->getParts(); foreach ($downloadParts as $part) { $part['size'] = $part['size'] ? round($part['size'] / 1024 / 1024, 2) : ''; if ($part['size'] == 0) { $part['size'] = 0.01; } if ($data['provider'] == 's3') { $part['link'] = $this->getS3SignedUrl($part['path']); } else { if ($data['provider'] == 'cf') { if ($backup->platform == SERVER_PLATFORMS::RACKSPACE) { $part['link'] = $this->getCfSignedUrl($part['path'], $data['cloud_location'], $backup->platform); } else { $part['link'] = "swift://{$part['path']}"; } } else { continue; } } $part['path'] = pathinfo($part['path']); $links[$part['number']] = $part; } $data['links'] = $links; return $data; }
public function xListTasksAction() { $this->request->defineParams(array('bundleTaskId' => array('type' => 'int'), 'sort' => array('type' => 'string', 'default' => 'id'), 'dir' => array('type' => 'string', 'default' => 'DESC'))); $sql = "SELECT * FROM bundle_tasks WHERE env_id = '" . $this->getEnvironmentId() . "'"; if ($this->getParam('id') > 0) { $sql .= " AND id = " . $this->db->qstr($this->getParam('bundleTaskId')); } $response = $this->buildResponseFromSql($sql, array("server_id", "rolename", "failure_reason", "snapshot_id", "id")); foreach ($response["data"] as &$row) { $row['server_exists'] = DBServer::IsExists($row['server_id']); $row['dtadded'] = Scalr_Util_DateTime::convertTz($row['dtadded']); if (!$row['bundle_type']) { $row['bundle_type'] = "*"; } if ($row['dtfinished'] && $row['dtstarted']) { $row['duration'] = Scalr_Util_DateTime::getDateTimeDiff($row['dtfinished'], $row['dtstarted']); } if ($row['dtfinished']) { $row['dtfinished'] = Scalr_Util_DateTime::convertTz($row['dtfinished']); } if ($row['dtstarted']) { $row['dtstarted'] = Scalr_Util_DateTime::convertTz($row['dtstarted']); } } $this->response->data($response); }
public function xGetListAction() { $this->request->defineParams(array('query', 'sort' => array('type' => 'json'))); $hist = new WebhookHistory(); $sql = "SELECT " . $hist->fields('h') . ", w.name AS webhookName, e.url\n FROM " . $hist->table() . " h\n INNER JOIN webhook_endpoints e ON h.endpoint_id = e.endpoint_id\n INNER JOIN webhook_configs w ON h.webhook_id = w.webhook_id\n WHERE e.env_id = ?\n AND :FILTER:\n "; $args = array($this->getEnvironmentId()); if ($this->getParam('eventId')) { $sql .= ' AND h.event_id = ?'; $args[] = $this->getParam('eventId'); } $response = $this->buildResponseFromSql2($sql, array('created'), array('e.url', 'h.event_type'), $args); foreach ($response['data'] as $index => $row) { $hist = new WebhookHistory(); $hist->load($row); $item = array(); foreach (get_object_vars($hist) as $k => $v) { $item[$k] = $v; } $item['url'] = $row['url']; $item['webhookName'] = $row['webhookName']; $item['created'] = Scalr_Util_DateTime::convertTz($hist->created); unset($hist); $response['data'][$index] = $item; } $this->response->data($response); }
/** * @param string $query * @param string $platform * @param string $cloudLocation * @param JsonData $sort * @param int $start * @param int $limit * @throws Exception */ public function xListAction($query = null, $platform = null, $cloudLocation = null, JsonData $sort, $start = 0, $limit = 20) { $this->request->restrictAccess(Acl::RESOURCE_FARMS_ROLES); $criteria = []; $criteria[] = ['envId' => $this->getEnvironmentId()]; if ($query) { $querySql = '%' . $query . '%'; $criteria[] = ['$or' => [['id' => ['$like' => $querySql]]]]; } if ($platform) { $criteria[] = ['platform' => $platform]; } if ($cloudLocation) { $criteria[] = ['cloudLocation' => $cloudLocation]; } $result = Image::find($criteria, \Scalr\UI\Utils::convertOrder($sort, ['id' => 'ASC'], ['id', 'platform', 'cloudLocation', 'os', 'dtAdded', 'architecture', 'source']), $limit, $start, true); $data = []; foreach ($result as $image) { /* @var Image $image */ $s = get_object_vars($image); $s['dtAdded'] = Scalr_Util_DateTime::convertTz($image->dtAdded); $s['status'] = $image->isUsed() ? 'In use' : 'Not used'; $data[] = $s; } $this->response->data(['total' => $result->totalNumber, 'data' => $data]); }
public function xListTasksAction() { $this->request->defineParams(array('bundleTaskId' => array('type' => 'int'), 'sort' => array('type' => 'json', 'default' => array('property' => 'id', 'direction' => 'DESC')))); $sql = "SELECT * FROM bundle_tasks WHERE env_id = ?"; $args = array($this->getEnvironmentId()); if ($this->getParam('id') > 0) { $sql .= " AND id = ?"; $args[] = $this->getParam('bundleTaskId'); } $response = $this->buildResponseFromSql2($sql, array('id', 'server_id', 'rolename', 'status', 'os_family', 'dtadded', 'dtstarted', 'created_by_email'), array(), $args); foreach ($response["data"] as &$row) { $row['server_exists'] = DBServer::IsExists($row['server_id']); $row['dtadded'] = Scalr_Util_DateTime::convertTz($row['dtadded']); if (!$row['bundle_type']) { $row['bundle_type'] = "*"; } if ($row['dtfinished'] && $row['dtstarted']) { $row['duration'] = Scalr_Util_DateTime::getDateTimeDiff($row['dtfinished'], $row['dtstarted']); } if ($row['dtfinished']) { $row['dtfinished'] = Scalr_Util_DateTime::convertTz($row['dtfinished']); } if ($row['dtstarted']) { $row['dtstarted'] = Scalr_Util_DateTime::convertTz($row['dtstarted']); } } $this->response->data($response); }
/** * @return array */ public function getRevisions() { $revisions = $this->db->GetAll("SELECT id, revision, script, dtcreated as dtCreated, variables FROM script_revisions WHERE scriptid=? ORDER BY revision DESC", array($this->id)); foreach ($revisions as $index => $rev) { $revisions[$index]['dtCreated'] = Scalr_Util_DateTime::convertTz($rev['dtCreated']); $revisions[$index]['variables'] = unserialize($revisions[$index]['variables']); } return $revisions; }
public function xListEventsAction() { $this->request->defineParams(array('farmId' => array('type' => 'int'), 'query' => array('type' => 'string'), 'sort' => array('type' => 'string', 'default' => 'id'), 'dir' => array('type' => 'string', 'default' => 'DESC'))); $sql = "SELECT farmid, message, type, dtadded FROM events WHERE farmid='{$this->dbFarm->ID}'"; $response = $this->buildResponseFromSql($sql, array("message", "type", "dtadded")); foreach ($response['data'] as &$row) { $row['message'] = nl2br($row['message']); $row["dtadded"] = Scalr_Util_DateTime::convertTz($row["dtadded"]); } $this->response->data($response); }
public function xGetClusterLogAction() { $dbFarmRole = $this->getFarmRole(); $sql = "SELECT id, severity, dtadded, message FROM services_mongodb_cluster_log WHERE farm_roleid=" . $this->db->qstr($dbFarmRole->ID); $response = $this->buildResponseFromSql($sql, array("message", "severity"), " ORDER BY id DESC"); foreach ($response["data"] as &$row) { $row['dtadded'] = Scalr_Util_DateTime::convertTz($row['dtadded']); $row['message'] = nl2br(htmlspecialchars($row['message'])); } $this->response->data($response); }
public function xListAccountsAction() { $this->request->defineParams(array('sort' => array('type' => 'json'), 'accountId' => array('type' => 'int'))); $sql = "SELECT id, name, dtadded, status FROM clients WHERE :FILTER:"; $args = array(); if ($this->getParam('serverId')) { $sql .= " AND `id` IN (SELECT `client_id` FROM `servers_history` WHERE `server_id` = ?)"; $args[] = $this->getParam('serverId'); } if ($this->getParam('farmId')) { $sql .= ' AND id IN (SELECT clientid FROM farms WHERE id = ?)'; $args[] = $this->getParam('farmId'); } if ($this->getParam('owner')) { $sql .= ' AND id IN (SELECT account_id FROM account_users WHERE `type` = ? AND email LIKE ?)'; $args[] = Scalr_Account_User::TYPE_ACCOUNT_OWNER; $args[] = '%' . $this->getParam('owner') . '%'; } if ($this->getParam('user')) { $sql .= ' AND id IN (SELECT account_id FROM account_users WHERE email LIKE ?)'; $args[] = '%' . $this->getParam('user') . '%'; } if ($this->getParam('envId')) { $sql .= ' AND id IN (SELECT client_id FROM client_environments WHERE id = ?)'; $args[] = $this->getParam('envId'); } $response = $this->buildResponseFromSql2($sql, array('id', 'name', 'dtadded', 'status'), array('id', 'name'), $args); foreach ($response['data'] as &$row) { $account = Scalr_Account::init()->loadById($row['id']); try { $owner = $account->getOwner(); $row['ownerEmail'] = $owner->getEmail(); $row['ownerLocked'] = $owner->status == User::STATUS_INACTIVE; } catch (Exception $e) { $row['ownerEmail'] = '*No owner*'; } $row['dtadded'] = Scalr_Util_DateTime::convertTz($row['dtadded']); $row['isTrial'] = (int) $account->getSetting(Scalr_Account::SETTING_IS_TRIAL); $limit = Scalr_Limits::init()->Load(Scalr_Limits::ACCOUNT_ENVIRONMENTS, $row['id']); $row['envs'] = $limit->getCurrentUsage(); $row['limitEnvs'] = $limit->getLimitValue() > -1 ? $limit->getLimitValue() : '-'; $limit = Scalr_Limits::init()->Load(Scalr_Limits::ACCOUNT_FARMS, $row['id']); $row['farms'] = $limit->getCurrentUsage(); $row['limitFarms'] = $limit->getLimitValue() > -1 ? $limit->getLimitValue() : '-'; $limit = Scalr_Limits::init()->Load(Scalr_Limits::ACCOUNT_USERS, $row['id']); $row['users'] = $limit->getCurrentUsage(); $row['limitUsers'] = $limit->getLimitValue() > -1 ? $limit->getLimitValue() : '-'; $limit = Scalr_Limits::init()->Load(Scalr_Limits::ACCOUNT_SERVERS, $row['id']); $row['servers'] = $limit->getCurrentUsage(); $row['limitServers'] = $limit->getLimitValue() > -1 ? $limit->getLimitValue() : '-'; $row['dnsZones'] = $this->db->GetOne("SELECT COUNT(*) FROM dns_zones WHERE client_id = ?", array($row['id'])); } $this->response->data($response); }
public function xGetClusterLogAction() { $dbFarmRole = $this->getFarmRole(); $sql = "SELECT id, severity, dtadded, message FROM services_mongodb_cluster_log WHERE farm_roleid = ? AND :FILTER:"; $args = [$dbFarmRole->ID]; $response = $this->buildResponseFromSql2($sql, ['id', 'severity', 'message', 'dtadded'], ['message', 'severity'], $args); foreach ($response["data"] as &$row) { $row['dtadded'] = Scalr_Util_DateTime::convertTz($row['dtadded']); $row['message'] = nl2br(htmlspecialchars($row['message'])); } $this->response->data($response); }
public function xListLimitsAction() { $cloudLocation = $this->getParam('cloudLocation'); $cs = Scalr_Service_Cloud_Rackspace::newRackspaceCS($this->environment->getPlatformConfigValue(Modules_Platforms_Rackspace::USERNAME, true, $cloudLocation), $this->environment->getPlatformConfigValue(Modules_Platforms_Rackspace::API_KEY, true, $cloudLocation), $cloudLocation); $limits = $cs->limits(); $l = array(); foreach ($limits->limits->rate as $limit) { $limit->resetTime = Scalr_Util_DateTime::convertTz(date("c", $limit->resetTime)); $l[] = (array) $limit; } $response = $this->buildResponseFromData($l, array()); $this->response->data($response); }
public function xListUsersAction() { $this->request->defineParams(array('sort' => array('type' => 'json'))); $sql = 'SELECT id, status, email, fullname, dtcreated, dtlastlogin, comments FROM account_users WHERE type = ? AND :FILTER:'; $response = $this->buildResponseFromSql2($sql, array('id', 'status', 'email', 'fullname', 'dtcreated', 'dtlastlogin'), array('email', 'fullname'), array(Scalr_Account_User::TYPE_SCALR_ADMIN)); foreach ($response["data"] as &$row) { $user = Scalr_Account_User::init(); $user->loadById($row['id']); $row['dtcreated'] = Scalr_Util_DateTime::convertTz($row["dtcreated"]); $row['dtlastlogin'] = $row['dtlastlogin'] ? Scalr_Util_DateTime::convertTz($row["dtlastlogin"]) : 'Never'; } $this->response->data($response); }
public function xGetSnapshotsAction() { $aws = $this->getEnvironment()->aws($this->getParam('cloudLocation')); $response = $aws->ec2->snapshot->describe(null, null, array(array('name' => SnapshotFilterNameType::ownerId(), 'value' => $this->getEnvironment()->getPlatformConfigValue(Ec2PlatformModule::ACCOUNT_ID)), array('name' => SnapshotFilterNameType::status(), 'value' => SnapshotData::STATUS_COMPLETED))); $data = array(); /* @var $pv \Scalr\Service\Aws\Ec2\DataType\SnapshotData */ foreach ($response as $pv) { if ($pv->status == SnapshotData::STATUS_COMPLETED) { $data[] = array('snapid' => $pv->snapshotId, 'createdat' => Scalr_Util_DateTime::convertTz($pv->startTime), 'size' => $pv->volumeSize, 'snapshotId' => $pv->snapshotId, 'createdDate' => Scalr_Util_DateTime::convertTz($pv->startTime), 'size' => $pv->volumeSize, 'volumeId' => $pv->volumeId, 'description' => (string) $pv->description, 'encrypted' => $pv->encrypted); } } $this->response->data(array('data' => $data)); }
function handleWork($farmId) { try { $dbFarm = DBFarm::LoadByID($farmId); $governance = new Scalr_Governance($dbFarm->EnvID); $settings = $governance->getValue(Scalr_Governance::CATEGORY_GENERAL, Scalr_Governance::GENERAL_LEASE, 'notifications'); $curDate = new DateTime(); $td = new DateTime($dbFarm->GetSetting(DBFarm::SETTING_LEASE_TERMINATE_DATE)); if ($td > $curDate) { // only inform user $days = $td->diff($curDate)->days; $notifications = json_decode($dbFarm->GetSetting(DBFarm::SETTING_LEASE_NOTIFICATION_SEND), true); if (is_array($settings)) { foreach ($settings as $n) { if (!$notifications[$n['key']] && $n['period'] >= $days) { $mailer = Scalr::getContainer()->mailer; $tdHuman = Scalr_Util_DateTime::convertDateTime($td, $dbFarm->GetSetting(DBFarm::SETTING_TIMEZONE), 'M j, Y'); if ($n['to'] == 'owner') { $user = new Scalr_Account_User(); $user->loadById($dbFarm->createdByUserId); if (Scalr::config('scalr.auth_mode') == 'ldap') { $email = $user->getSetting(Scalr_Account_User::SETTING_LDAP_EMAIL); if (!$email) { $email = $user->getEmail(); } } else { $email = $user->getEmail(); } $mailer->addTo($email); } else { foreach (explode(',', $n['emails']) as $email) { $mailer->addTo(trim($email)); } } $mailer->sendTemplate(SCALR_TEMPLATES_PATH . '/emails/farm_lease_terminate.eml', array('{{terminate_date}}' => $tdHuman, '{{farm}}' => $dbFarm->Name, '{{envName}}' => $dbFarm->GetEnvironmentObject()->name, '{{envId}}' => $dbFarm->GetEnvironmentObject()->id)); $notifications[$n['key']] = 1; $dbFarm->SetSetting(DBFarm::SETTING_LEASE_NOTIFICATION_SEND, json_encode($notifications)); $this->logger->info("Notification was sent by key: " . $n['key'] . " about farm: " . $dbFarm->Name . " by lease manager"); } } } } else { // terminate farm $event = new FarmTerminatedEvent(0, 1, false, 1); Scalr::FireEvent($farmId, $event); $this->logger->info("Farm: " . $dbFarm->Name . " was terminated by lease manager"); } } catch (Exception $e) { var_dump($e->getMessage()); } }
public function xListLimitsAction() { //TODO: check correct platform name $ccProps = $this->environment->cloudCredentials($this->getParam('cloudLocation') . SERVER_PLATFORMS::RACKSPACE)->properties; $cs = Scalr_Service_Cloud_Rackspace::newRackspaceCS($ccProps[Entity\CloudCredentialsProperty::RACKSPACE_USERNAME], $ccProps[Entity\CloudCredentialsProperty::RACKSPACE_API_KEY], $this->getParam('cloudLocation')); $limits = $cs->limits(); $l = array(); foreach ($limits->limits->rate as $limit) { $limit->resetTime = Scalr_Util_DateTime::convertTz(date("c", $limit->resetTime)); $l[] = (array) $limit; } $response = $this->buildResponseFromData($l, array()); $this->response->data($response); }
public function xListUsersAction() { $this->request->defineParams(array('sort' => array('type' => 'json'))); // account owner, team owner if ($this->user->getType() == Scalr_Account_User::TYPE_ACCOUNT_OWNER || $this->user->isTeamOwner()) { $sql = "SELECT account_users.id, status, email, fullname, dtcreated, dtlastlogin, type, comments FROM account_users\n\t\t\t\tLEFT JOIN account_team_users ON account_users.id = account_team_users.user_id\n\t\t\t\tLEFT JOIN account_user_groups ON account_users.id = account_user_groups.user_id\n\t\t\t\tWHERE account_id='" . $this->user->getAccountId() . "'"; } else { // team user $teams = $this->user->getTeams(); if (!count($teams)) { throw new Exception('You are not belongs to any team'); } $sql = 'SELECT account_users.id, status, email, fullname, dtcreated, dtlastlogin, type, comments FROM account_users JOIN account_team_users ON account_users.id = account_team_users.user_id LEFT JOIN account_user_groups ON account_users.id = account_user_groups.user_id WHERE account_id="' . $this->user->getAccountId() . '"'; foreach ($this->user->getTeams() as $team) { $r[] = 'account_team_users.team_id = "' . $team['id'] . '"'; } $sql .= ' AND (' . implode(' OR ', $r) . ')'; } if ($this->getParam('teamId')) { $sql .= ' AND account_team_users.team_id = ' . $this->db->qstr($this->getParam('teamId')); } if ($this->getParam('userId')) { $sql .= ' AND account_users.id = ' . $this->db->qstr($this->getParam('userId')); } if ($this->getParam('groupPermissionId')) { $sql .= ' AND account_user_groups.group_id = ' . $this->db->qstr($this->getParam('groupPermissionId')); } $response = $this->buildResponseFromSql($sql, array('email', 'fullname')); foreach ($response["data"] as &$row) { $user = Scalr_Account_User::init(); $user->loadById($row['id']); $row['dtcreated'] = Scalr_Util_DateTime::convertTz($row["dtcreated"]); $row['dtlastlogin'] = $row['dtlastlogin'] ? Scalr_Util_DateTime::convertTz($row["dtlastlogin"]) : 'Never'; $row['teams'] = $user->getTeams(); $row['is2FaEnabled'] = $user->getSetting(Scalr_Account_User::SETTING_SECURITY_2FA_GGL) == '1' ? true : false; switch ($row['type']) { case Scalr_Account_User::TYPE_ACCOUNT_OWNER: $row['type'] = 'Account Owner'; break; default: $row['type'] = $user->isTeamOwner() ? 'Team Owner' : 'Team User'; break; } } $this->response->data($response); }
public function xHistoryRequestsAction() { $this->request->defineParams(array('sort' => array('type' => 'json', 'default' => array('property' => 'id', 'direction' => 'DESC')))); $sql = 'SELECT fl.*, f.name as farm_name, u1.email AS request_user_email, u2.email AS answer_user_email FROM farm_lease_requests fl LEFT JOIN farms f ON f.id = fl.farm_id LEFT JOIN account_users u1 ON fl.request_user_id = u1.id LEFT JOIN account_users u2 ON fl.answer_user_id = u2.id WHERE f.env_id = ? '; $response = $this->buildResponseFromSql2($sql, array('farm_id', 'request_time', 'request_days', 'status'), array(), array($this->getEnvironmentId())); foreach ($response["data"] as &$row) { $row['request_time'] = $row['request_time'] ? Scalr_Util_DateTime::convertTz($row['request_time']) : ''; } $this->response->data($response); }
public function xListSnapshotsAction() { $this->request->defineParams(array('cloudLocation', 'dbinstance', 'sort' => array('type' => 'json', 'default' => array('property' => 'id', 'direction' => 'ASC')))); $amazonRDSClient = Scalr_Service_Cloud_Aws::newRds($this->getEnvironment()->getPlatformConfigValue(Modules_Platforms_Ec2::ACCESS_KEY), $this->getEnvironment()->getPlatformConfigValue(Modules_Platforms_Ec2::SECRET_KEY), $this->getParam('cloudLocation')); $awsResponse = $amazonRDSClient->DescribeDBSnapshots($this->getParam('dbinstance')); $rows = $awsResponse->DescribeDBSnapshotsResult->DBSnapshots->DBSnapshot; $rowz = array(); if ($rows instanceof stdClass) { $rows = array($rows); } foreach ($rows as $pv) { $rowz[] = array("dtcreated" => Scalr_Util_DateTime::convertTz($pv->SnapshotCreateTime), "port" => (string) $pv->Port, "status" => (string) $pv->Status, "engine" => (string) $pv->Engine, "avail_zone" => (string) $pv->AvailabilityZone, "idtcreated" => Scalr_Util_DateTime::convertTz($pv->InstanceCreateTime), "storage" => (string) $pv->AllocatedStorage, "name" => (string) $pv->DBSnapshotIdentifier, "id" => (string) $pv->DBSnapshotIdentifier); } $response = $this->buildResponseFromData($rowz); $this->response->data($response); }
public function getContent($params = []) { if ($this->user->getType() != User::TYPE_SCALR_ADMIN) { throw new Scalr_Exception_InsufficientPermissions(); } $hosts = []; foreach (ScalrHost::find() as $host) { $hosts[] = ['host' => $host->host, 'version' => $host->version, 'edition' => $host->edition, 'revision' => empty($host->gitCommit) ? '' : $host->gitCommit, 'revDate' => empty($host->gitCommitAdded) ? '' : $host->gitCommitAdded->format('Y-m-d H:i:s O')]; } $stateNames = ScalrService::listStateNames(); $allServices = []; foreach (ScalrService::find([['name' => ['$nin' => ScalrService::EXCLUDED_SERVICES]]]) as $scalrService) { $lastTime = empty($scalrService->lastFinish) ? time() : $scalrService->lastFinish->getTimestamp(); $allServices[] = ['name' => ucfirst(str_replace("_", " ", $scalrService->name)), 'numWorkers' => $scalrService->numWorkers, 'numTasks' => $scalrService->numTasks, 'lastStart' => !empty($scalrService->lastStart) ? Scalr_Util_DateTime::getIncrescentTimeInterval($scalrService->lastStart) : '', 'timeSpent' => !empty($scalrService->lastStart) ? $lastTime - $scalrService->lastStart->getTimestamp() : '', 'state' => $stateNames[$scalrService->state]]; } return ['hosts' => $hosts, 'services' => $allServices]; }
public function xListSnapshotsAction() { $this->request->defineParams(['cloudLocation', 'dbinstance', 'sort' => ['type' => 'json', 'default' => ['property' => 'id', 'direction' => 'ASC']]]); $aws = $this->getEnvironment()->aws($this->getParam('cloudLocation')); $rows = $aws->rds->dbSnapshot->describe($this->getParam('dbinstance')); $rowz = []; foreach ($rows as $pv) { /* @var $pv \Scalr\Service\Aws\Rds\DataType\DBSnapshotData */ $rowz[] = ["dtcreated" => $pv->snapshotCreateTime, "port" => $pv->port, "status" => $pv->status, "engine" => $pv->engine, "avail_zone" => $pv->availabilityZone, "idtcreated" => $pv->instanceCreateTime, "storage" => $pv->allocatedStorage, "name" => $pv->dBSnapshotIdentifier, "id" => $pv->dBSnapshotIdentifier, "type" => $pv->snapshotType]; } $response = $this->buildResponseFromData($rowz); foreach ($response['data'] as &$row) { $row['dtcreated'] = $row['dtcreated'] ? Scalr_Util_DateTime::convertTz($row['dtcreated']) : ''; $row['idtcreated'] = $row['idtcreated'] ? Scalr_Util_DateTime::convertTz($row['idtcreated']) : ''; } $this->response->data($response); }
public function xListAction($serverId = null, $farmId = null, $farmRoleId = null, $status = null) { $sql = "SELECT sa.* FROM server_alerts sa LEFT JOIN farms f ON f.id = sa.farm_id WHERE sa.env_id = ?"; $args = [$this->getEnvironmentId()]; if ($serverId) { $sql .= ' AND sa.server_id = ?'; $args[] = $serverId; } if ($farmId) { $sql .= ' AND sa.farm_id = ?'; $args[] = $farmId; if ($farmRoleId) { $sql .= ' AND sa.farm_roleid = ?'; $args[] = $farmRoleId; } } if ($status) { $sql .= ' AND sa.status = ?'; $args[] = $status; } list($sql, $args) = $this->request->prepareFarmSqlQuery($sql, $args, 'f'); $response = $this->buildResponseFromSql2($sql, ['metric', 'status', 'dtoccured', 'dtlastcheck', 'dtsolved', 'details'], ['server_id', 'details'], $args); foreach ($response['data'] as $i => $row) { $row['dtoccured'] = Scalr_Util_DateTime::convertTz($row['dtoccured']); if ($row['dtlastcheck']) { $row['dtlastcheck'] = Scalr_Util_DateTime::convertTz($row['dtlastcheck']); } else { $row['dtlastcheck'] = false; } if ($row['status'] == Alerts::STATUS_RESOLVED) { $row['dtsolved'] = Scalr_Util_DateTime::convertTz($row['dtsolved']); } else { $row['dtsolved'] = false; } $row['metric'] = Alerts::getMetricName($row['metric']); $row['farm_name'] = DBFarm::LoadByID($row['farm_id'])->Name; try { $row['role_name'] = DBFarmRole::LoadByID($row['farm_roleid'])->GetRoleObject()->name; $dbServer = DBServer::LoadByID($row['server_id']); $row['server_exists'] = $dbServer->status == SERVER_STATUS::RUNNING ? true : false; } catch (Exception $e) { } $response['data'][$i] = $row; } $this->response->data($response); }
/** * @param string $cloudLocation * @param string $diskId optional */ public function xListAction($cloudLocation, $diskId = '') { $platform = PlatformFactory::NewPlatform(SERVER_PLATFORMS::GCE); $client = $platform->getClient($this->environment, $cloudLocation); /* @var $client Google_Service_Compute */ $retval = array(); $disks = $client->disks->listDisks($this->environment->cloudCredentials(SERVER_PLATFORMS::GCE)->properties[Entity\CloudCredentialsProperty::GCE_PROJECT_ID], $cloudLocation, $diskId ? ['filter' => "name eq {$diskId}"] : []); foreach ($disks as $disk) { /* @var $disk Google_Service_Compute_Disk */ $item = array('id' => $disk->name, 'description' => $disk->description, 'createdAt' => strtotime($disk->creationTimestamp), 'size' => (int) $disk->sizeGb, 'status' => $disk->status, 'snapshotId' => $disk->sourceSnapshotId); $retval[] = $item; } $response = $this->buildResponseFromData($retval, array('id', 'name', 'description', 'snapshotId', 'createdAt', 'size')); foreach ($response['data'] as &$row) { $row['createdAt'] = Scalr_Util_DateTime::convertTz($row['createdAt']); } $this->response->data($response); }
public function xGetSnapshotsAction() { $amazonEC2Client = Scalr_Service_Cloud_Aws::newEc2($this->getParam('cloudLocation'), $this->getEnvironment()->getPlatformConfigValue(Modules_Platforms_Ec2::PRIVATE_KEY), $this->getEnvironment()->getPlatformConfigValue(Modules_Platforms_Ec2::CERTIFICATE)); $response = $amazonEC2Client->DescribeSnapshots(); if ($response->snapshotSet->item instanceof stdClass) { $response->snapshotSet->item = array($response->snapshotSet->item); } $data = array(); foreach ($response->snapshotSet->item as $pk => $pv) { if ($pv->ownerId != $this->getEnvironment()->getPlatformConfigValue(Modules_Platforms_Ec2::ACCOUNT_ID)) { continue; } if ($pv->status == 'completed') { $data[] = array('snapid' => (string) $pv->snapshotId, 'createdat' => Scalr_Util_DateTime::convertTz($pv->startTime), 'size' => (string) $pv->volumeSize); } } $this->response->data(array('data' => $data)); }
public function xListSnapshotsAction() { $this->request->defineParams(array('sort' => array('type' => 'json', 'default' => array('property' => 'id', 'direction' => 'ASC')), 'snapshotId')); $platform = PlatformFactory::NewPlatform(SERVER_PLATFORMS::GCE); $client = $platform->getClient($this->environment); /* @var $client Google_Service_Compute */ $retval = array(); $snaps = $client->snapshots->listSnapshots($this->environment->getPlatformConfigValue(GoogleCEPlatformModule::PROJECT_ID)); foreach ($snaps as $snap) { /* @var $snap Google_Service_Compute_Snapshot */ if ($this->getParam('snapshotId') && $this->getParam('snapshotId') != $snap->name) { continue; } $item = array('id' => $snap->name, 'description' => $snap->description, 'createdAt' => Scalr_Util_DateTime::convertTz(strtotime($snap->creationTimestamp)), 'size' => $snap->diskSizeGb, 'status' => $snap->status); $retval[] = $item; } $response = $this->buildResponseFromData($retval, array('id', 'description')); $this->response->data($response); }
/** * {@inheritdoc} * @see Iterator::current() * @return ChartPointInfo */ public function current() { if (!isset($this->c[$this->i])) { $chartPoint = new ChartPointInfo($this); $previousPeriodDt = clone $chartPoint->dt; $previousPeriodDt->sub($this->getPreviousPeriodInterval()); $ddt = clone $chartPoint->dt; $ddt->modify('next saturday'); if ($ddt > $chartPoint->end) { $ddt = $chartPoint->end; } $chartPoint->label = $chartPoint->dt->format('M j') . ' - ' . $ddt->format('M j'); $chartPoint->key = \Scalr_Util_DateTime::yearweek($chartPoint->dt->format('Y-m-d')); $chartPoint->previousPeriodKey = \Scalr_Util_DateTime::yearweek($previousPeriodDt->format('Y-m-d')); $chartPoint->show = $chartPoint->i % 3 == 0 ? $chartPoint->dt->format('M j') : ($chartPoint->isLastPoint && $chartPoint->i % 3 > 1 ? $ddt->format('M j') : ''); $this->c[$this->i] = $chartPoint; } return $this->c[$this->i]; }