%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/3rdparty/php-opencloud/openstack/src/BlockStorage/v2/ |
Current File : /www/varak.net/nextcloud.varak.net/3rdparty/php-opencloud/openstack/src/BlockStorage/v2/Service.php |
<?php declare(strict_types=1); namespace OpenStack\BlockStorage\v2; use OpenStack\BlockStorage\v2\Models\QuotaSet; use OpenStack\BlockStorage\v2\Models\Snapshot; use OpenStack\BlockStorage\v2\Models\Volume; use OpenStack\BlockStorage\v2\Models\VolumeType; use OpenStack\Common\Service\AbstractService; /** * @property Api $api */ class Service extends AbstractService { /** * Provisions a new bootable volume, based either on an existing volume, image or snapshot. * You must have enough volume storage quota remaining to create a volume of size requested. * * @param array $userOptions {@see Api::postVolumes} */ public function createVolume(array $userOptions): Volume { return $this->model(Volume::class)->create($userOptions); } /** * Lists all available volumes. * * @param bool $detail if set to TRUE, more information will be returned * @param array $userOptions {@see Api::getVolumes} * * @return \Generator<mixed, \OpenStack\BlockStorage\v2\Models\Volume> */ public function listVolumes(bool $detail = false, array $userOptions = []): \Generator { $def = (true === $detail) ? $this->api->getVolumesDetail() : $this->api->getVolumes(); return $this->model(Volume::class)->enumerate($def, $userOptions); } /** * @param string $volumeId the UUID of the volume being retrieved */ public function getVolume(string $volumeId): Volume { $volume = $this->model(Volume::class); $volume->populateFromArray(['id' => $volumeId]); return $volume; } /** * @param array $userOptions {@see Api::postTypes} */ public function createVolumeType(array $userOptions): VolumeType { return $this->model(VolumeType::class)->create($userOptions); } /** * @return \Generator<mixed, \OpenStack\BlockStorage\v2\Models\VolumeType> */ public function listVolumeTypes(): \Generator { return $this->model(VolumeType::class)->enumerate($this->api->getTypes(), []); } public function getVolumeType(string $typeId): VolumeType { $type = $this->model(VolumeType::class); $type->populateFromArray(['id' => $typeId]); return $type; } /** * @param array $userOptions {@see Api::postSnapshots} */ public function createSnapshot(array $userOptions): Snapshot { return $this->model(Snapshot::class)->create($userOptions); } /** * @return \Generator<mixed, \OpenStack\BlockStorage\v2\Models\Snapshot> */ public function listSnapshots(bool $detail = false, array $userOptions = []): \Generator { $def = (true === $detail) ? $this->api->getSnapshotsDetail() : $this->api->getSnapshots(); return $this->model(Snapshot::class)->enumerate($def, $userOptions); } public function getSnapshot(string $snapshotId): Snapshot { $snapshot = $this->model(Snapshot::class); $snapshot->populateFromArray(['id' => $snapshotId]); return $snapshot; } /** * Shows A Quota for a tenant. */ public function getQuotaSet(string $tenantId): QuotaSet { $quotaSet = $this->model(QuotaSet::class); $quotaSet->populateFromResponse($this->execute($this->api->getQuotaSet(), ['tenantId' => $tenantId])); return $quotaSet; } }