public getAwsTags ( string $addNameTag = false ) : array | ||
$addNameTag | string | |
return | array |
public function getAwsTags($addNameTag = false)
{
$tags = [];
$governance = new \Scalr_Governance($this->envId);
if ($addNameTag) {
$nameFormat = $governance->getValue(SERVER_PLATFORMS::EC2, \Scalr_Governance::AWS_INSTANCE_NAME_FORMAT);
if (!$nameFormat) {
$nameFormat = $this->GetFarmRoleObject()->GetSetting(Entity\FarmRoleSetting::AWS_INSTANCE_NAME_FORMAT);
if (!$nameFormat) {
$nameFormat = "{SCALR_FARM_NAME} -> {SCALR_FARM_ROLE_ALIAS} #{SCALR_INSTANCE_INDEX}";
}
}
$instanceName = $this->applyGlobalVarsToValue($nameFormat);
$tags['Name'] = $instanceName;
}
$tags[\Scalr_Governance::SCALR_META_TAG_NAME] = $this->applyGlobalVarsToValue(\Scalr_Governance::SCALR_META_TAG_VALUE);
$gTags = (array) $governance->getValue(SERVER_PLATFORMS::EC2, \Scalr_Governance::AWS_TAGS);
$gAllowAdditionalTags = $governance->getValue(SERVER_PLATFORMS::EC2, \Scalr_Governance::AWS_TAGS, 'allow_additional_tags');
if (count($gTags) > 0) {
foreach ($gTags as $tKey => $tValue) {
if ($tKey && count($tags) < 10 && !isset($tags[$tKey])) {
$tags[$tKey] = $this->applyGlobalVarsToValue($tValue);
}
}
}
if (count($gTags) == 0 || $gAllowAdditionalTags) {
//Custom tags
$cTags = $this->GetFarmRoleObject()->GetSetting(Entity\FarmRoleSetting::AWS_TAGS_LIST);
$tagsList = @explode("\n", $cTags);
foreach ((array) $tagsList as $tag) {
$tag = trim($tag);
if ($tag && count($tags) < 10) {
$tagChunks = explode("=", $tag);
if (!isset($tags[trim($tagChunks[0])])) {
$tags[trim($tagChunks[0])] = $this->applyGlobalVarsToValue(trim($tagChunks[1]));
}
}
}
}
return $tags;
}
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; }