getAwsTags() public method

Return list of tags that should be applied on EC2 resources
public getAwsTags ( string $addNameTag = false ) : array
$addNameTag string
return array
示例#1
0
文件: RabbitMQ.php 项目: mheydt/scalr
 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;
 }
示例#2
0
 public function getVolumesConfigs(\DBServer $dbServer, $isHostInit = true)
 {
     $volumes = array();
     $configs = $this->getConfigs();
     foreach ($configs as $config) {
         //Check for existing volume
         $createFreshConfig = true;
         $volume = null;
         $dbVolume = FarmRoleStorageDevice::getByConfigIdAndIndex($config->id, $dbServer->index);
         if ($dbVolume) {
             $volume = $dbVolume->config;
             $createFreshConfig = false;
             $volume->mpoint = $config->mount == 1 ? $config->mountPoint : null;
         }
         if ($createFreshConfig || $config->rebuild) {
             $volumeConfigTemplate = new \stdClass();
             $volumeConfigTemplate->scalrStorageId = $config->id;
             $volumeConfigTemplate->type = stristr($config->type, "raid.") ? FarmRoleStorageConfig::TYPE_RAID : $config->type;
             $volumeConfigTemplate->fstype = $config->fs;
             $volumeConfigTemplate->mpoint = $config->mount == 1 ? $config->mountPoint : null;
             if ($config->fs == 'ntfs' && $config->mount == 1 && !empty($config->label)) {
                 $volumeConfigTemplate->label = $config->label;
             }
             switch ($config->type) {
                 case FarmRoleStorageConfig::TYPE_EC2_EPHEMERAL:
                     $volumeConfigTemplate->name = $config->settings[FarmRoleStorageConfig::SETTING_EC2_EPHEMERAL_NAME];
                     $volumeConfigTemplate->size = $config->settings[FarmRoleStorageConfig::SETTING_EC2_EPHEMERAL_SIZE];
                     break;
                 case FarmRoleStorageConfig::TYPE_GCE_EPHEMERAL:
                     $volumeConfigTemplate->size = $config->settings[FarmRoleStorageConfig::SETTING_GCE_EPHEMERAL_SIZE];
                     $volumeConfigTemplate->name = $config->settings[FarmRoleStorageConfig::SETTING_GCE_EPHEMERAL_NAME];
                     break;
                 case FarmRoleStorageConfig::TYPE_CINDER:
                     $volumeConfigTemplate->size = $config->settings[FarmRoleStorageConfig::SETTING_CINDER_SIZE];
                     if ($config->settings[FarmRoleStorageConfig::SETTING_CINDER_VOLUME_TYPE]) {
                         $volumeConfigTemplate->volumeType = $config->settings[FarmRoleStorageConfig::SETTING_CINDER_VOLUME_TYPE];
                     }
                     // SNAPSHOT
                     if ($config->settings[FarmRoleStorageConfig::SETTING_CINDER_SNAPSHOT] != '') {
                         $volumeConfigTemplate->snap = new \stdClass();
                         $volumeConfigTemplate->snap->type = FarmRoleStorageConfig::TYPE_CINDER;
                         $volumeConfigTemplate->snap->id = $config->settings[FarmRoleStorageConfig::SETTING_CINDER_SNAPSHOT];
                     }
                     break;
                 case FarmRoleStorageConfig::TYPE_CSVOL:
                     $volumeConfigTemplate->diskOfferingId = $config->settings[FarmRoleStorageConfig::SETTING_CSVOL_DISK_OFFERING];
                     $volumeConfigTemplate->diskOfferingType = $config->settings[FarmRoleStorageConfig::SETTING_CSVOL_DISK_OFFERING_TYPE];
                     if ($volumeConfigTemplate->diskOfferingType == 'custom' || !$volumeConfigTemplate->diskOfferingId) {
                         $volumeConfigTemplate->size = $config->settings[FarmRoleStorageConfig::SETTING_CSVOL_SIZE];
                     }
                     // SNAPSHOT
                     if ($config->settings[FarmRoleStorageConfig::SETTING_CSVOL_SNAPSHOT] != '') {
                         $volumeConfigTemplate->snap = new \stdClass();
                         $volumeConfigTemplate->snap->type = FarmRoleStorageConfig::TYPE_CSVOL;
                         $volumeConfigTemplate->snap->id = $config->settings[FarmRoleStorageConfig::SETTING_CSVOL_SNAPSHOT];
                     }
                     break;
                 case FarmRoleStorageConfig::TYPE_GCE_PD:
                     $volumeConfigTemplate->size = $config->settings[FarmRoleStorageConfig::SETTING_GCE_PD_SIZE];
                     if ($config->settings[FarmRoleStorageConfig::SETTING_GCE_PD_TYPE]) {
                         $volumeConfigTemplate->diskType = $config->settings[FarmRoleStorageConfig::SETTING_GCE_PD_TYPE];
                     }
                     // SNAPSHOT
                     if ($config->settings[FarmRoleStorageConfig::SETTING_GCE_PD_SNAPSHOT] != '') {
                         $volumeConfigTemplate->snap = new \stdClass();
                         $volumeConfigTemplate->snap->type = FarmRoleStorageConfig::TYPE_GCE_PD;
                         $volumeConfigTemplate->snap->id = $config->settings[FarmRoleStorageConfig::SETTING_GCE_PD_SNAPSHOT];
                     }
                     break;
                 case FarmRoleStorageConfig::TYPE_EBS:
                     $volumeConfigTemplate->size = $config->settings[FarmRoleStorageConfig::SETTING_EBS_SIZE];
                     $volumeConfigTemplate->encrypted = !empty($config->settings[FarmRoleStorageConfig::SETTING_EBS_ENCRYPTED]) ? 1 : 0;
                     $volumeConfigTemplate->tags = $dbServer->getAwsTags();
                     // IOPS
                     $volumeConfigTemplate->volumeType = $config->settings[FarmRoleStorageConfig::SETTING_EBS_TYPE];
                     if ($volumeConfigTemplate->volumeType == 'io1') {
                         $volumeConfigTemplate->iops = $config->settings[FarmRoleStorageConfig::SETTING_EBS_IOPS];
                     }
                     if ($config->settings[FarmRoleStorageConfig::SETTING_EBS_KMS_KEY_ID]) {
                         $volumeConfigTemplate->kmsKeyId = $config->settings[FarmRoleStorageConfig::SETTING_EBS_KMS_KEY_ID];
                     }
                     // SNAPSHOT
                     if ($config->settings[FarmRoleStorageConfig::SETTING_EBS_SNAPSHOT] != '') {
                         $volumeConfigTemplate->snap = new \stdClass();
                         $volumeConfigTemplate->snap->type = FarmRoleStorageConfig::TYPE_EBS;
                         $volumeConfigTemplate->snap->id = $config->settings[FarmRoleStorageConfig::SETTING_EBS_SNAPSHOT];
                     }
                     break;
                 case FarmRoleStorageConfig::TYPE_RAID_CSVOL:
                 case FarmRoleStorageConfig::TYPE_RAID_CINDER:
                 case FarmRoleStorageConfig::TYPE_RAID_EBS:
                 case FarmRoleStorageConfig::TYPE_RAID_GCE_PD:
                     $volumeConfigTemplate->level = $config->settings[FarmRoleStorageConfig::SETTING_RAID_LEVEL];
                     $volumeConfigTemplate->vg = $config->id;
                     $volumeConfigTemplate->disks = array();
                     for ($i = 1; $i <= $config->settings[FarmRoleStorageConfig::SETTING_RAID_VOLUMES_COUNT]; $i++) {
                         $disk = new \stdClass();
                         if ($config->type == FarmRoleStorageConfig::TYPE_RAID_EBS) {
                             $disk->size = $config->settings[FarmRoleStorageConfig::SETTING_EBS_SIZE];
                             $disk->encrypted = !empty($config->settings[FarmRoleStorageConfig::SETTING_EBS_ENCRYPTED]) ? 1 : 0;
                             $disk->type = FarmRoleStorageConfig::TYPE_EBS;
                             $disk->tags = $dbServer->getAwsTags();
                             // IOPS
                             $disk->volumeType = $config->settings[FarmRoleStorageConfig::SETTING_EBS_TYPE];
                             if ($disk->volumeType == 'io1') {
                                 $disk->iops = $config->settings[FarmRoleStorageConfig::SETTING_EBS_IOPS];
                             }
                             if ($config->settings[FarmRoleStorageConfig::SETTING_EBS_KMS_KEY_ID]) {
                                 $disk->kmsKeyId = $config->settings[FarmRoleStorageConfig::SETTING_EBS_KMS_KEY_ID];
                             }
                         } elseif ($config->type == FarmRoleStorageConfig::TYPE_RAID_CSVOL) {
                             $disk->diskOfferingId = $config->settings[FarmRoleStorageConfig::SETTING_CSVOL_DISK_OFFERING];
                             $disk->diskOfferingType = $config->settings[FarmRoleStorageConfig::SETTING_CSVOL_DISK_OFFERING_TYPE];
                             if ($disk->diskOfferingType == 'custom' || !$disk->diskOfferingId) {
                                 $disk->size = $config->settings[FarmRoleStorageConfig::SETTING_CSVOL_SIZE];
                             }
                             $disk->type = FarmRoleStorageConfig::TYPE_CSVOL;
                         } elseif ($config->type == FarmRoleStorageConfig::TYPE_RAID_GCE_PD) {
                             $disk->size = $config->settings[FarmRoleStorageConfig::SETTING_GCE_PD_SIZE];
                             $disk->type = FarmRoleStorageConfig::TYPE_GCE_PD;
                         } elseif ($config->type == FarmRoleStorageConfig::TYPE_RAID_CINDER) {
                             $disk->size = $config->settings[FarmRoleStorageConfig::SETTING_CINDER_SIZE];
                             $disk->type = FarmRoleStorageConfig::TYPE_CINDER;
                             if ($config->settings[FarmRoleStorageConfig::SETTING_CINDER_VOLUME_TYPE]) {
                                 $disk->volumeType = $config->settings[FarmRoleStorageConfig::SETTING_CINDER_VOLUME_TYPE];
                             }
                         }
                         $volumeConfigTemplate->disks[] = $disk;
                     }
                     break;
             }
         }
         if (!$volume) {
             $volume = $volumeConfigTemplate;
         } elseif ($config->rebuild && $volume->id) {
             $volume->template = $volumeConfigTemplate;
             $volume->fromTemplateIfMissing = 1;
         }
         $volumes[] = $volume;
     }
     return $volumes;
 }
示例#3
0
 protected function getFreshVolumeConfig()
 {
     $volumeConfig = new stdClass();
     $volumeConfig->type = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_ENGINE);
     $fsType = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_FSTYPE);
     if ($fsType) {
         $volumeConfig->fstype = $fsType;
     }
     $type = $volumeConfig->type;
     // For any Block storage APIs
     if (in_array($volumeConfig->type, array(MYSQL_STORAGE_ENGINE::RAID_EBS, MYSQL_STORAGE_ENGINE::RAID_GCE_PERSISTENT))) {
         $volumeConfig->type = 'raid';
         $volumeConfig->vg = $this->databaseType;
         $volumeConfig->level = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_RAID_LEVEL);
         $volumeConfig->disks = array();
         for ($i = 1; $i <= $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_RAID_DISKS_COUNT); $i++) {
             $dsk = new stdClass();
             $dsk->size = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_RAID_DISK_SIZE);
             if ($type == MYSQL_STORAGE_ENGINE::RAID_EBS) {
                 $dsk->type = MYSQL_STORAGE_ENGINE::EBS;
             } else {
                 if ($type == MYSQL_STORAGE_ENGINE::RAID_GCE_PERSISTENT) {
                     $dsk->type = MYSQL_STORAGE_ENGINE::GCE_PERSISTENT;
                 }
             }
             $dsk->volumeType = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_RAID_EBS_DISK_TYPE);
             $dsk->tags = $this->dbServer->getAwsTags();
             if ($dsk->volumeType == 'io1') {
                 $dsk->iops = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_RAID_EBS_DISK_IOPS);
             }
             $volumeConfig->disks[] = $dsk;
         }
         $volumeConfig->snapPv = new stdClass();
         $volumeConfig->snapPv->type = $dsk->type;
         $volumeConfig->snapPv->size = 1;
     } else {
         if ($volumeConfig->type == MYSQL_STORAGE_ENGINE::CINDER) {
             $volumeConfig->size = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_CINDER_SIZE);
         } else {
             if ($volumeConfig->type == MYSQL_STORAGE_ENGINE::GCE_PERSISTENT) {
                 $volumeConfig->size = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_GCED_SIZE);
                 $volumeConfig->diskType = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_GCED_TYPE);
             } else {
                 if ($volumeConfig->type == MYSQL_STORAGE_ENGINE::EPH) {
                     if ($this->dbFarmRole->Platform == SERVER_PLATFORMS::RACKSPACE) {
                         $storageProvider = 'cf';
                         $volumeConfig->disk = new stdClass();
                         $volumeConfig->disk->type = 'loop';
                         $volumeConfig->disk->size = '75%root';
                     } elseif ($this->dbFarmRole->isOpenstack()) {
                         $storageProvider = 'swift';
                         $volumeConfig->disk = new stdClass();
                         $volumeConfig->disk->type = 'loop';
                         $volumeConfig->disk->size = '75%root';
                     } elseif ($this->dbFarmRole->Platform == SERVER_PLATFORMS::GCE) {
                         $storageProvider = 'gcs';
                         $volumeConfig->disk = array('type' => 'gce_ephemeral', 'name' => 'ephemeral-disk-0');
                         $volumeConfig->size = "80%";
                     } elseif ($this->dbFarmRole->Platform == SERVER_PLATFORMS::EC2) {
                         $storageProvider = 's3';
                         $disk = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_EPH_DISK);
                         if ($disk) {
                             $volumeConfig->disk = $disk;
                         } else {
                             $disks = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_EPH_DISKS);
                             if ($disks) {
                                 $diskType = 'ec2_ephemeral';
                                 $v = json_decode($disks);
                                 foreach ($v as $name => $size) {
                                     $volumeConfig->disks[] = array('type' => $diskType, 'name' => $name);
                                 }
                             }
                         }
                         $volumeConfig->size = "80%";
                     }
                     $volumeConfig->snap_backend = sprintf("%s://scalr-%s-%s/data-bundles/%s/%s", $storageProvider, $this->dbFarmRole->GetFarmObject()->EnvID, $this->dbFarmRole->CloudLocation, $this->dbFarmRole->FarmID, $this->databaseType);
                     $volumeConfig->vg = $this->databaseType;
                 } else {
                     $volumeConfig->size = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_EBS_SIZE);
                     $volumeConfig->volumeType = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_EBS_TYPE);
                     $volumeConfig->encrypted = (int) $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_EBS_ENCRYPTED);
                     $volumeConfig->tags = $this->dbServer->getAwsTags();
                     if ($volumeConfig->volumeType == 'io1') {
                         $volumeConfig->iops = $this->dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_EBS_IOPS);
                     }
                 }
             }
         }
     }
     return $volumeConfig;
 }