%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/3rdparty/php-opencloud/openstack/src/Compute/v2/Models/ |
Current File : /www/varak.net/nextcloud.varak.net/3rdparty/php-opencloud/openstack/src/Compute/v2/Models/Image.php |
<?php declare(strict_types=1); namespace OpenStack\Compute\v2\Models; use OpenStack\Common\Resource\Alias; use OpenStack\Common\Resource\Deletable; use OpenStack\Common\Resource\HasMetadata; use OpenStack\Common\Resource\HasWaiterTrait; use OpenStack\Common\Resource\Listable; use OpenStack\Common\Resource\OperatorResource; use OpenStack\Common\Resource\Retrievable; use OpenStack\Common\Transport\Utils; use Psr\Http\Message\ResponseInterface; /** * Represents a Compute v2 Image. * * @property \OpenStack\Compute\v2\Api $api */ class Image extends OperatorResource implements Listable, Retrievable, Deletable, HasMetadata { use HasWaiterTrait; /** @var string */ public $id; /** @var array */ public $links; /** @var array */ public $metadata; /** @var int */ public $minDisk; /** @var int */ public $minRam; /** @var string */ public $name; /** @var string */ public $progress; /** @var string */ public $status; /** @var \DateTimeImmutable */ public $created; /** @var \DateTimeImmutable */ public $updated; protected $resourceKey = 'image'; protected $resourcesKey = 'images'; protected function getAliases(): array { return parent::getAliases() + [ 'created' => new Alias('created', \DateTimeImmutable::class), 'updated' => new Alias('updated', \DateTimeImmutable::class), ]; } public function retrieve() { $response = $this->execute($this->api->getImage(), ['id' => (string) $this->id]); $this->populateFromResponse($response); } public function delete() { $this->execute($this->api->deleteImage(), ['id' => (string) $this->id]); } /** * Retrieves metadata from the API. */ public function getMetadata(): array { $response = $this->execute($this->api->getImageMetadata(), ['id' => $this->id]); return $this->parseMetadata($response); } /** * Resets all the metadata for this image with the values provided. All existing metadata keys * will either be replaced or removed. * * @param array $metadata {@see \OpenStack\Compute\v2\Api::putImageMetadata} */ public function resetMetadata(array $metadata) { $response = $this->execute($this->api->putImageMetadata(), ['id' => $this->id, 'metadata' => $metadata]); $this->metadata = $this->parseMetadata($response); } /** * Merges the existing metadata for the image with the values provided. Any existing keys * referenced in the user options will be replaced with the user's new values. All other * existing keys will remain unaffected. * * @param array $metadata {@see \OpenStack\Compute\v2\Api::postImageMetadata} */ public function mergeMetadata(array $metadata) { $response = $this->execute($this->api->postImageMetadata(), ['id' => $this->id, 'metadata' => $metadata]); $this->metadata = $this->parseMetadata($response); } /** * Retrieve the value for a specific metadata key. * * @param string $key {@see \OpenStack\Compute\v2\Api::getImageMetadataKey} */ public function getMetadataItem(string $key) { $response = $this->execute($this->api->getImageMetadataKey(), ['id' => $this->id, 'key' => $key]); $value = $this->parseMetadata($response)[$key]; $this->metadata[$key] = $value; return $value; } /** * Remove a specific metadata key. * * @param string $key {@see \OpenStack\Compute\v2\Api::deleteImageMetadataKey} */ public function deleteMetadataItem(string $key) { if (isset($this->metadata[$key])) { unset($this->metadata[$key]); } $this->execute($this->api->deleteImageMetadataKey(), ['id' => $this->id, 'key' => $key]); } public function parseMetadata(ResponseInterface $response): array { return Utils::jsonDecode($response)['metadata']; } }