protected function buildStorageSettings()
{
if ($this->dbFarmRole->GetSetting(Scalr_Db_Msr::VOLUME_ID) && $this->replicationMaster) {
try {
$volume = Scalr_Storage_Volume::init()->loadById($this->dbFarmRole->GetSetting(Scalr_Db_Msr::VOLUME_ID));
$this->volumeConfig = $volume->getConfig();
} catch (Exception $e) {
}
}
//For Rackspace we always need snapshot_config for mysql
if ($this->dbFarmRole->GetSetting(Scalr_Db_Msr::SNAPSHOT_ID)) {
try {
$snapshotConfig = Scalr_Model::init(Scalr_Model::STORAGE_SNAPSHOT)->loadById($this->dbFarmRole->GetSetting(Scalr_Db_Msr::SNAPSHOT_ID));
$this->snapshotConfig = $snapshotConfig->getConfig();
if ($this->snapshotConfig) {
if ($this->snapshotConfig->type == MYSQL_STORAGE_ENGINE::EPH) {
if ($this->dbFarmRole->Platform == SERVER_PLATFORMS::EC2) {
if (!isset($this->snapshotConfig->disk)) {
$this->snapshotConfig->disk = new stdClass();
}
$this->snapshotConfig->disk->device = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_EPH_DISK);
}
}
}
} catch (Exception $e) {
$this->logger->error(new FarmLogMessage($this->dbServer, "Cannot get snaphotConfig for hostInit message: {$e->getMessage()}"));
}
}
if ($this->replicationMaster && $this->volumeConfig) {
$this->volumeConfig->recreateIfMissing = (int) $this->dbFarmRole->GetSetting(Scalr_Role_DbMsrBehavior::ROLE_DATA_STORAGE_RECREATE_IF_MISSING);
if ($this->volumeConfig->type == MYSQL_STORAGE_ENGINE::EPH) {
if ($this->dbFarmRole->Platform == SERVER_PLATFORMS::EC2 && !$this->volumeConfig->disks) {
$this->volumeConfig->disk->device = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_EPH_DISK);
}
}
} else {
$this->volumeConfig = $this->getFreshVolumeConfig();
}
}