Scalr_Db_Msr_Info::getFreshVolumeConfig PHP 메소드

getFreshVolumeConfig() 보호된 메소드

protected getFreshVolumeConfig ( )
    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->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;
    }