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());
}
}
}