Since: 5.11.9 (11.02.2016)
Author: Roman Kondratuk (r.kondratuk@scalr.com)
Inheritance: extends Scalr\Model\AbstractEntity
コード例 #1
0
ファイル: Launcher.php プロジェクト: scalr/scalr
 /**
  * Launches tasks are due to run
  *
  * @return  int  Returns the number of the launched tasks
  */
 public function launch()
 {
     $curTime = new DateTime('now');
     if ($curTime->format('i') % 5 == 1) {
         $services = [];
         foreach (ScalrService::find() as $scalrService) {
             $services[$scalrService->name] = $scalrService;
         }
         foreach ($this->getAllTasks() as $task) {
             $config = $task->config();
             if (!array_key_exists($task->getName(), $services)) {
                 $task->getScalrService()->update(['state' => $config->enabled ? ScalrService::STATE_SCHEDULED : ScalrService::STATE_DISABLED]);
             } elseif (!$config->enabled && $services['state'] != ScalrService::STATE_DISABLED) {
                 $task->getScalrService()->update(['state' => ScalrService::STATE_DISABLED]);
             }
         }
     }
     $count = 0;
     //Gets all scheduled task at this second
     foreach ($this->getScheduled() as $task) {
         /* @var $task \Scalr\System\Zmq\Cron\TaskInterface */
         $this->log("DEBUG", "Launching %s", $task->getName());
         $task->launch();
         $count++;
     }
     return $count;
 }
コード例 #2
0
ファイル: AbstractTask.php プロジェクト: scalr/scalr
 /**
  * Gets Scalr service
  *
  * @return ScalrService Returns ScalrService instance for the current task
  */
 public function getScalrService()
 {
     if (!isset($this->scalrService)) {
         $this->scalrService = ScalrService::findPk($this->getName());
         if (!$this->scalrService) {
             // Initialization performs only once a life
             $this->scalrService = new ScalrService();
             $this->scalrService->name = $this->getName();
             $this->scalrService->numTasks = 0;
             $this->scalrService->numWorkers = 0;
             $this->scalrService->save();
         }
     }
     return $this->scalrService;
 }
コード例 #3
0
ファイル: Scalrhealth.php プロジェクト: scalr/scalr
 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];
 }