Scalr\System\Zmq\Cron\Task\ScalarizrMessaging::onHostUp PHP Method

onHostUp() private method

private onHostUp ( Scalr_Messaging_Msg $message, DBServer $dbserver, $skipStatusCheck = false )
$message Scalr_Messaging_Msg
$dbserver DBServer
    private function onHostUp($message, $dbserver, $skipStatusCheck = false)
    {
        $logger = \Scalr::getContainer()->logger(__CLASS__);
        if ($dbserver->status == SERVER_STATUS::INIT || $skipStatusCheck) {
            $event = new HostUpEvent($dbserver, "");
            $dbFarmRole = $dbserver->GetFarmRoleObject();
            foreach (Scalr_Role_Behavior::getListForFarmRole($dbFarmRole) as $behavior) {
                $behavior->handleMessage($message, $dbserver);
            }
            //TODO: Move MySQL to MSR
            /****** MOVE TO MSR ******/
            //TODO: Legacy MySQL code
            if ($dbFarmRole->GetRoleObject()->hasBehavior(ROLE_BEHAVIORS::MYSQL)) {
                if (!$message->mysql) {
                    $logger->error(sprintf("Strange situation. HostUp message from MySQL behavior doesn't contains `mysql` property. Server %s (%s)", $dbserver->serverId, $dbserver->remoteIp));
                    return;
                }
                $mysqlData = $message->mysql;
                if ($dbserver->GetProperty(SERVER_PROPERTIES::DB_MYSQL_MASTER)) {
                    if ($mysqlData->rootPassword) {
                        $dbFarmRole->SetSetting(Entity\FarmRoleSetting::MYSQL_REPL_PASSWORD, $mysqlData->replPassword, Entity\FarmRoleSetting::TYPE_LCL);
                        $dbFarmRole->SetSetting(Entity\FarmRoleSetting::MYSQL_ROOT_PASSWORD, $mysqlData->rootPassword, Entity\FarmRoleSetting::TYPE_LCL);
                        $dbFarmRole->SetSetting(Entity\FarmRoleSetting::MYSQL_STAT_PASSWORD, $mysqlData->statPassword, Entity\FarmRoleSetting::TYPE_LCL);
                    }
                    $dbFarmRole->SetSetting(Entity\FarmRoleSetting::MYSQL_LOG_FILE, $mysqlData->logFile, Entity\FarmRoleSetting::TYPE_LCL);
                    $dbFarmRole->SetSetting(Entity\FarmRoleSetting::MYSQL_LOG_POS, $mysqlData->logPos, Entity\FarmRoleSetting::TYPE_LCL);
                    if ($dbserver->IsSupported("0.7")) {
                        if ($mysqlData->volumeConfig) {
                            try {
                                $storageVolume = Scalr_Storage_Volume::init();
                                try {
                                    $storageVolume->loadById($mysqlData->volumeConfig->id);
                                    $storageVolume->setConfig($mysqlData->volumeConfig);
                                    $storageVolume->save();
                                } catch (Exception $e) {
                                    if (strpos($e->getMessage(), 'not found')) {
                                        $storageVolume->loadBy(array('id' => $mysqlData->volumeConfig->id, 'client_id' => $dbserver->clientId, 'env_id' => $dbserver->envId, 'name' => "MySQL data volume", 'type' => $dbFarmRole->GetSetting(Entity\FarmRoleSetting::MYSQL_DATA_STORAGE_ENGINE), 'platform' => $dbserver->platform, 'size' => $mysqlData->volumeConfig->size, 'fstype' => $mysqlData->volumeConfig->fstype, 'purpose' => ROLE_BEHAVIORS::MYSQL, 'farm_roleid' => $dbserver->farmRoleId, 'server_index' => $dbserver->index));
                                        $storageVolume->setConfig($mysqlData->volumeConfig);
                                        $storageVolume->save(true);
                                    } else {
                                        throw $e;
                                    }
                                }
                                $dbFarmRole->SetSetting(Entity\FarmRoleSetting::MYSQL_SCALR_VOLUME_ID, $storageVolume->id, Entity\FarmRoleSetting::TYPE_LCL);
                            } catch (Exception $e) {
                                $logger->error(new FarmLogMessage($event->DBServer, "Cannot save storage volume: {$e->getMessage()}"));
                            }
                        }
                        if ($mysqlData->snapshotConfig) {
                            try {
                                $storageSnapshot = Scalr_Storage_Snapshot::init();
                                try {
                                    $storageSnapshot->loadById($mysqlData->snapshotConfig->id);
                                    $storageSnapshot->setConfig($mysqlData->snapshotConfig);
                                    $storageSnapshot->save();
                                } catch (Exception $e) {
                                    if (strpos($e->getMessage(), 'not found')) {
                                        $storageSnapshot->loadBy(array('id' => $mysqlData->snapshotConfig->id, 'client_id' => $dbserver->clientId, 'farm_id' => $dbserver->farmId, 'farm_roleid' => $dbserver->farmRoleId, 'env_id' => $dbserver->envId, 'name' => sprintf(_("MySQL data bundle #%s"), $mysqlData->snapshotConfig->id), 'type' => $dbFarmRole->GetSetting(Entity\FarmRoleSetting::MYSQL_DATA_STORAGE_ENGINE), 'platform' => $dbserver->platform, 'description' => sprintf(_("MySQL data bundle created on Farm '%s' -> Role '%s'"), $dbFarmRole->GetFarmObject()->Name, $dbFarmRole->GetRoleObject()->name), 'ismysql' => true, 'service' => ROLE_BEHAVIORS::MYSQL));
                                        $storageSnapshot->setConfig($mysqlData->snapshotConfig);
                                        $storageSnapshot->save(true);
                                    } else {
                                        throw $e;
                                    }
                                }
                                $dbFarmRole->SetSetting(Entity\FarmRoleSetting::MYSQL_SCALR_SNAPSHOT_ID, $storageSnapshot->id, Entity\FarmRoleSetting::TYPE_LCL);
                            } catch (Exception $e) {
                                $logger->error(new FarmLogMessage($event->DBServer, "Cannot save storage snapshot: {$e->getMessage()}"));
                            }
                        }
                    } else {
                        //@deprecated
                        $dbFarmRole->SetSetting(Entity\FarmRoleSetting::MYSQL_SNAPSHOT_ID, $mysqlData->snapshotId, Entity\FarmRoleSetting::TYPE_LCL);
                    }
                }
            }
            return $event;
        } else {
            $logger->info("Strange situation. Received HostUp message" . " from server '{$dbserver->serverId}' ('{$message->remoteIp})" . " with state {$dbserver->status}!");
        }
    }