public function getVolumeConfig(DBFarmRole $dbFarmRole, DBServer $dbServer)
{
try {
$volume = Scalr_Storage_Volume::init()->loadByFarmRoleServer($dbFarmRole->ID, $dbServer->index, $this->behavior);
$volumeConfig = $volume->getConfig();
} catch (Exception $e) {
}
if (!$volumeConfig) {
$volumeConfig = new stdClass();
$volumeConfig->type = $dbFarmRole->GetSetting(static::ROLE_DATA_STORAGE_ENGINE);
switch ($volumeConfig->type) {
case MYSQL_STORAGE_ENGINE::EPH:
if ($dbFarmRole->Platform == SERVER_PLATFORMS::RACKSPACE) {
$storageProvider = 'cf';
$volumeConfig->disk = new stdClass();
$volumeConfig->disk->type = 'loop';
$volumeConfig->disk->size = '75%root';
} elseif ($dbFarmRole->isOpenstack()) {
$storageProvider = 'swift';
$volumeConfig->disk = new stdClass();
$volumeConfig->disk->type = 'loop';
$volumeConfig->disk->size = '75%root';
} elseif ($dbFarmRole->Platform == SERVER_PLATFORMS::GCE) {
$storageProvider = 'gcs';
$volumeConfig->disk = array('type' => 'gce_ephemeral', 'name' => 'ephemeral-disk-0');
$volumeConfig->size = "80%";
} elseif ($dbFarmRole->Platform == SERVER_PLATFORMS::EC2) {
/*
* NOT SUPPORTED
$storageProvider = 's3';
$volumeConfig->disk = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_EPH_DISK);
$volumeConfig->size = "80%";
*/
}
$volumeConfig->snap_backend = sprintf("%s://scalr-%s-%s/data-bundles/%s/%s", $storageProvider, $dbFarmRole->GetFarmObject()->EnvID, $dbFarmRole->CloudLocation, $dbFarmRole->FarmID, $this->behavior);
$volumeConfig->vg = $this->behavior;
break;
default:
$volumeConfig->size = $dbFarmRole->GetSetting(static::ROLE_DATA_STORAGE_EBS_SIZE);
$volumeConfig->tags = $dbServer->getAwsTags();
break;
}
}
return $volumeConfig;
}