Beispiel #1
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;
 }
Beispiel #2
0
 public function getVolumesConfigs($serverIndex)
 {
     $volumes = array();
     $configs = $this->getConfigs();
     foreach ($configs as $config) {
         //Check for existing volume
         $createFreshConfig = true;
         $volume = null;
         $dbVolume = FarmRoleStorageDevice::getByConfigIdAndIndex($config->id, $serverIndex);
         if ($dbVolume) {
             if ($config->reUse == 0) {
                 $dbVolume->status = FarmRoleStorageDevice::STATUS_ZOMBY;
                 $dbVolume->save();
             } else {
                 $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;
             switch ($config->type) {
                 case FarmRoleStorageConfig::TYPE_CINDER:
                     $volumeConfigTemplate->size = $config->settings[FarmRoleStorageConfig::SETTING_CINDER_SIZE];
                     // 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];
                     // 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];
                     // IOPS
                     if ($config->settings[FarmRoleStorageConfig::SETTING_EBS_TYPE] == 'io1') {
                         $volumeConfigTemplate->volumeType = $config->settings[FarmRoleStorageConfig::SETTING_EBS_TYPE];
                         $volumeConfigTemplate->iops = $config->settings[FarmRoleStorageConfig::SETTING_EBS_IOPS];
                     }
                     // 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->type = FarmRoleStorageConfig::TYPE_EBS;
                             // IOPS
                             if ($config->settings[FarmRoleStorageConfig::SETTING_EBS_TYPE] == 'io1') {
                                 $disk->volumeType = $config->settings[FarmRoleStorageConfig::SETTING_EBS_TYPE];
                                 $disk->iops = $config->settings[FarmRoleStorageConfig::SETTING_EBS_IOPS];
                             }
                         } 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;
                         }
                         $volumeConfigTemplate->disks[] = $disk;
                     }
                     break;
             }
         }
         if (!$volume) {
             $volume = $volumeConfigTemplate;
         } elseif ($config->rebuild && $volume->id) {
             $volume->template = $volumeConfigTemplate;
             $volume->fromTemplateIfMissing = true;
         }
         $volumes[] = $volume;
     }
     return $volumes;
 }