/** * @param JsonData $sort * @param int $start * @param int $limit */ public function xListAction(JsonData $sort, $start = 0, $limit = 20) { $result = ScriptShortcut::find(['farmId' => ['$in' => $this->getAllowedFarmId()]], null, Scalr\UI\Utils::convertOrder($sort, ['scriptId' => true], ['scriptId', 'farmId', 'farmRoleId']), $limit, $start, true); $data = []; foreach ($result as $shortcut) { /* @var $shortcut ScriptShortcut */ $s = get_object_vars($shortcut); $s['farmName'] = DBFarm::LoadByIDOnlyName($shortcut->farmId); $s['scriptName'] = $shortcut->getScriptName(); try { $farmRole = DBFarmRole::LoadByID($shortcut->farmRoleId); $s['farmRoleName'] = $farmRole->Alias ? $farmRole->Alias : $farmRole->GetRoleObject()->name; } catch (Exception $e) { } $data[] = $s; } $this->response->data(['total' => $result->totalNumber, 'data' => $data]); }
/** * @param int $farmId * @param string $serverId * @param string $eventId * @param int $scriptId * @param string $eventServerId * @param int $schedulerId * @param string $byDate * @param string $fromTime * @param string $toTime * @param string $status * @param string $event * @param JsonData $sort * @param int $start * @param int $limit * @param string $query * @throws Scalr_Exception_Core * @throws Scalr_Exception_InsufficientPermissions */ public function xListOrchestrationLogsAction($farmId = 0, $serverId = '', $eventId = '', $scriptId = 0, $eventServerId = '', $schedulerId = 0, $byDate = '', $fromTime = '', $toTime = '', $status = '', $event = '', JsonData $sort, $start = 0, $limit = 20, $query = '') { $this->request->restrictAccess(Acl::RESOURCE_LOGS_ORCHESTRATION_LOGS); $o = new Entity\OrchestrationLog(); $f = new Entity\Farm(); $criteria = [Entity\Farm::STMT_FROM => "{$o->table()} JOIN {$f->table('f')} ON {$f->columnId('f')} = {$o->columnFarmId}", Entity\Farm::STMT_WHERE => $this->request->getFarmSqlQuery() . " AND {$f->columnEnvId('f')} = " . $this->db->qstr($this->getEnvironmentId())]; if ($farmId) { $criteria[] = ['farmId' => $farmId]; } if ($serverId) { $criteria[] = ['serverId' => $serverId]; } if ($eventId) { $criteria[] = ['eventId' => $eventId]; } if ($eventServerId) { $criteria[] = ['eventServerId' => $eventServerId]; } if ($scriptId) { /* @var $script Script */ $script = Script::findPk($scriptId); if ($script && $this->request->hasPermissions($script)) { $scriptName = preg_replace("/[^A-Za-z0-9]+/", "_", $script->name); $criteria[] = ['scriptName' => $scriptName]; } } if ($query || $event) { $logEntity = new OrchestrationLog(); $eventEntity = new Event(); $criteria[AbstractEntity::STMT_FROM] = $criteria[AbstractEntity::STMT_FROM] . "\n LEFT JOIN {$eventEntity->table('e')}\n ON {$logEntity->columnEventId} = {$eventEntity->columnEventId('e')}\n "; if ($event && $query) { $query = $this->db->qstr('%' . $query . '%'); $criteria[AbstractEntity::STMT_WHERE] = $criteria[AbstractEntity::STMT_WHERE] . " AND (\n {$eventEntity->columnType('e')} = {$this->db->qstr($event)}\n OR ({$logEntity->columnType} LIKE {$query}\n AND {$logEntity->columnScriptName} LIKE {$query})\n )"; } else { if ($event) { $criteria[AbstractEntity::STMT_WHERE] = $criteria[AbstractEntity::STMT_WHERE] . " AND (\n {$eventEntity->columnType('e')} = {$this->db->qstr($event)}\n )"; } else { $query = $this->db->qstr('%' . $query . '%'); $criteria[AbstractEntity::STMT_WHERE] = $criteria[AbstractEntity::STMT_WHERE] . " AND (\n ({$eventEntity->columnType('e')} LIKE {$query}\n OR {$logEntity->columnType} LIKE {$query}\n OR {$logEntity->columnScriptName} LIKE {$query})\n )"; } } } if ($schedulerId) { $criteria[] = ['taskId' => $schedulerId]; } if ($byDate) { try { $tz = $this->user->getSetting(Scalr_Account_User::SETTING_UI_TIMEZONE) ?: 'UTC'; $tz = new DateTimeZone($tz); $dtS = new DateTime($byDate, $tz); $dtE = new DateTime($byDate, $tz); if ($fromTime) { $dtS = DateTime::createFromFormat('Y-m-d H:i', "{$byDate} {$fromTime}", $tz); } if ($toTime) { $dtE = DateTime::createFromFormat('Y-m-d H:i', "{$byDate} {$toTime}", $tz); } else { $dtE = $dtE->add(new DateInterval('P1D')); } if ($dtS && $dtE) { Scalr_Util_DateTime::convertTimeZone($dtS); Scalr_Util_DateTime::convertTimeZone($dtE); $criteria[] = ['added' => ['$gt' => $dtS]]; $criteria[] = ['added' => ['$lt' => $dtE]]; } } catch (Exception $e) { } } if ($status === 'success') { $criteria[] = ['execExitCode' => 0]; } else { if ($status === 'failure') { $criteria[] = ['execExitCode' => ['$ne' => 0]]; } } $logs = OrchestrationLog::find($criteria, null, Scalr\UI\Utils::convertOrder($sort, ['id' => false], ['id', 'added']), $limit, $start, true); $data = $this->prepareOrchestrationLogData($logs); $this->response->data(['data' => $data, 'total' => $logs->totalNumber]); }