Scalr\Observer\DBEventObserver::OnFarmTerminated PHP Метод

OnFarmTerminated() публичный Метод

См. также: Scalr\Observer\AbstractEventObserver::OnFarmTerminated()
public OnFarmTerminated ( FarmTerminatedEvent $event )
$event FarmTerminatedEvent
    public function OnFarmTerminated(FarmTerminatedEvent $event)
    {
        $dbFarm = DBFarm::LoadByID($this->FarmID);
        //Tracks Audit Log farm.terminate event
        \Scalr::getContainer()->auditlogger->log('farm.terminate', $dbFarm, $event->auditLogExtra);
        $dbFarm->Status = FARM_STATUS::TERMINATED;
        $dbFarm->TermOnSyncFail = $event->TermOnSyncFail;
        $dbFarm->save();
        $dbFarm->SetSetting(Entity\FarmSetting::LEASE_NOTIFICATION_SEND, '');
        $dbFarm->SetSetting(Entity\FarmSetting::LEASE_TERMINATE_DATE, '');
        $servers = $dbFarm->GetServersByFilter([], []);
        if (count($servers) == 0) {
            return;
        }
        //TERMINATE RUNNING INSTANCES
        foreach ($servers as $dbServer) {
            /* @var $dbServer DBServer */
            if ($this->DB->GetOne("\n                SELECT id\n                FROM bundle_tasks\n                WHERE server_id=? AND status NOT IN ('success','failed')\n                LIMIT 1\n            ", [$dbServer->serverId])) {
                continue;
            }
            try {
                if (!in_array($dbServer->status, [SERVER_STATUS::PENDING_TERMINATE, SERVER_STATUS::TERMINATED])) {
                    $dbServer->terminate(DBServer::TERMINATE_REASON_FARM_TERMINATED, true, !empty($event->userId) ? $event->userId : null);
                }
            } catch (Exception $e) {
                $this->Logger->error($e->getMessage());
            }
        }
    }