DBServer::getAwsTags PHP Method

getAwsTags() public method

Return list of tags that should be applied on EC2 resources
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;
    }

Usage Example

Example #1
0
 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;
 }
All Usage Examples Of DBServer::getAwsTags