public function OnHostUp(HostUpEvent $event)
{
$servers = DBFarm::LoadByID($this->FarmID)->GetServersByFilter(['status' => [SERVER_STATUS::INIT, SERVER_STATUS::RUNNING]]);
$event->msgExpected = count($servers);
foreach ((array) $servers as $dbServer) {
if (!$dbServer->isScalarized) {
$event->msgExpected--;
continue;
}
try {
$msg = new Scalr_Messaging_Msg_HostUp();
$msg->setServerMetaData($event->DBServer);
$msg->roleName = $event->DBServer->GetFarmRoleObject()->GetRoleObject()->name;
$msg = Scalr_Scripting_Manager::extendMessage($msg, $event, $event->DBServer, $dbServer);
if ($event->DBServer->farmRoleId != 0) {
foreach (Scalr_Role_Behavior::getListForFarmRole($event->DBServer->GetFarmRoleObject()) as $behavior) {
$msg = $behavior->extendMessage($msg, $event->DBServer);
}
}
$msg = $dbServer->SendMessage($msg, false, true);
if ($msg) {
$event->msgCreated++;
} else {
throw new Exception("Empty MSG: {$dbServer->serverId} ({$event->DBServer->serverId})");
}
} catch (Exception $e) {
\Scalr::getContainer()->logger(__CLASS__)->fatal("MessagingEventObserver::OnHostUp failed: {$e->getMessage()}");
}
}
if ($event->DBServer->GetProperty(SERVER_PROPERTIES::DB_MYSQL_MASTER) == 1 && $event->DBServer->IsSupported("0.7")) {
$this->sendNewMasterUpMessage($event->DBServer, "", $event);
}
if ($event->DBServer->GetProperty(Scalr_Db_Msr::REPLICATION_MASTER) == 1) {
$this->sendNewDbMsrMasterUpMessage($event->DBServer, $event);
}
}