From cb7fcc8b7eb2690d52d15622e575410059304159 Mon Sep 17 00:00:00 2001 From: Konstantin Babushkin Date: Mon, 5 Feb 2024 11:26:49 +0100 Subject: [PATCH] add docs for volume attachement (#401) fixes https://github.com/php-opencloud/openstack/issues/399 --- doc/services/compute/v2/index.rst | 1 + .../compute/v2/volume-attachments.rst | 38 +++++++++++++++++++ .../create.php} | 4 +- .../delete.php} | 8 +--- .../list.php} | 4 +- .../Compute/v2/VolumeAttachmentTest.php | 12 +++--- 6 files changed, 49 insertions(+), 18 deletions(-) create mode 100644 doc/services/compute/v2/volume-attachments.rst rename samples/Compute/v2/{servers/attach_volume_attachment.php => volume_attachments/create.php} (82%) rename samples/Compute/v2/{servers/detach_volume_attachment.php => volume_attachments/delete.php} (66%) rename samples/Compute/v2/{servers/list_volume_attachments.php => volume_attachments/list.php} (79%) diff --git a/doc/services/compute/v2/index.rst b/doc/services/compute/v2/index.rst index 26190cdaf..512593705 100644 --- a/doc/services/compute/v2/index.rst +++ b/doc/services/compute/v2/index.rst @@ -11,6 +11,7 @@ OpenStack Compute (Nova) API Version 2. Nova is the OpenStack project that provi create servers + volume-attachments flavors images states \ No newline at end of file diff --git a/doc/services/compute/v2/volume-attachments.rst b/doc/services/compute/v2/volume-attachments.rst new file mode 100644 index 000000000..7bf4c8a36 --- /dev/null +++ b/doc/services/compute/v2/volume-attachments.rst @@ -0,0 +1,38 @@ +Volume Attachments +================== + +Nova allows you to attach a volume to a server on the fly. This model represents a point of attachment between a server and a volume. + +.. osdoc:: https://docs.openstack.org/api-ref/compute/#servers-with-volume-attachments-servers-os-volume-attachments + +.. |models| replace:: volume attachments + +.. include:: /common/service.rst + +.. warning:: + + The server must be fully started before you can attach a volume to it. Just because the server is in the ``ACTIVE`` + state does not mean that it is ready to accept a volume attachment. See `https://bugs.launchpad.net/nova/+bug/1960346`_ + and `https://bugs.launchpad.net/nova/+bug/1998148`_ for more information. + +Create +------ + +To attach a volume to a server, you need to know the server ID and the volume ID. + +.. sample:: Compute/v2/volume_attachments/create.php + + +Delete +------ + +To detach a volume from a server, you need to know the server ID and the volume ID. + +.. sample:: Compute/v2/volume_attachments/delete.php + +List +---- + +.. sample:: Compute/v2/volume_attachments/list.php + +.. include:: /common/generators.rst diff --git a/samples/Compute/v2/servers/attach_volume_attachment.php b/samples/Compute/v2/volume_attachments/create.php similarity index 82% rename from samples/Compute/v2/servers/attach_volume_attachment.php rename to samples/Compute/v2/volume_attachments/create.php index e072d3322..769c2cfa6 100644 --- a/samples/Compute/v2/servers/attach_volume_attachment.php +++ b/samples/Compute/v2/volume_attachments/create.php @@ -13,11 +13,9 @@ 'id' => '{userId}', 'password' => '{password}' ], - 'scope' => ['project' => ['id' => '{projectId}']] ]); -$compute = $openstack->computeV2(['region' => '{region}']); - +$compute = $openstack->computeV2(); $server = $compute->getServer(['id' => '{serverId}']); $volumeAttachment = $server->attachVolume('{volumeId}'); diff --git a/samples/Compute/v2/servers/detach_volume_attachment.php b/samples/Compute/v2/volume_attachments/delete.php similarity index 66% rename from samples/Compute/v2/servers/detach_volume_attachment.php rename to samples/Compute/v2/volume_attachments/delete.php index f08c21767..482152a1b 100644 --- a/samples/Compute/v2/servers/detach_volume_attachment.php +++ b/samples/Compute/v2/volume_attachments/delete.php @@ -13,13 +13,9 @@ 'id' => '{userId}', 'password' => '{password}' ], - 'scope' => ['project' => ['id' => '{projectId}']] ]); -$compute = $openstack->computeV2(['region' => '{region}']); - -/**@var OpenStack\Compute\v2\Models\Server $server */ +$compute = $openstack->computeV2(); $server = $compute->getServer(['id' => '{serverId}']); -//Must detach by volumeAttachment id -$server->detachVolume('{volumeAttachmentId}'); +$server->detachVolume('{volumeId}'); diff --git a/samples/Compute/v2/servers/list_volume_attachments.php b/samples/Compute/v2/volume_attachments/list.php similarity index 79% rename from samples/Compute/v2/servers/list_volume_attachments.php rename to samples/Compute/v2/volume_attachments/list.php index 683e47402..58cc6639a 100644 --- a/samples/Compute/v2/servers/list_volume_attachments.php +++ b/samples/Compute/v2/volume_attachments/list.php @@ -9,11 +9,9 @@ 'id' => '{userId}', 'password' => '{password}', ], - 'scope' => ['project' => ['id' => '{projectId}']], ]); -$compute = $openstack->computeV2(['region' => '{region}']); - +$compute = $openstack->computeV2(); $server = $compute->getServer(['id' => '{serverId}']); foreach ($server->listVolumeAttachments() as $volumeAttachment) { diff --git a/tests/sample/Compute/v2/VolumeAttachmentTest.php b/tests/sample/Compute/v2/VolumeAttachmentTest.php index 4399a4498..17361b3c6 100644 --- a/tests/sample/Compute/v2/VolumeAttachmentTest.php +++ b/tests/sample/Compute/v2/VolumeAttachmentTest.php @@ -27,7 +27,7 @@ public function testAttach(): VolumeAttachment $this->assertEquals('available', $volume->status); /** @var \OpenStack\BlockStorage\v2\Models\VolumeAttachment $volumeAttachment */ - require_once $this->sampleFile('servers/attach_volume_attachment.php', [ + require_once $this->sampleFile('volume_attachments/create.php', [ '{serverId}' => $server->id, '{volumeId}' => $volume->id, ]); @@ -47,12 +47,12 @@ public function testList(VolumeAttachment $createdVolumeAttachment) { $found = false; require_once $this->sampleFile( - 'servers/list_volume_attachments.php', + 'volume_attachments/list.php', [ '{serverId}' => $createdVolumeAttachment->serverId, '/** @var \OpenStack\BlockStorage\v2\Models\VolumeAttachment $volumeAttachment */' => <<<'PHP' /** @var \OpenStack\BlockStorage\v2\Models\VolumeAttachment $volumeAttachment */ -if ($volumeAttachment->id === $createdVolumeAttachment->id) { +if ($volumeAttachment->volumeId === $createdVolumeAttachment->volumeId) { $found = true; } PHP @@ -73,10 +73,10 @@ public function testDetach(VolumeAttachment $createdVolumeAttachment) sleep(15); require_once $this->sampleFile( - 'servers/detach_volume_attachment.php', + 'volume_attachments/delete.php', [ - '{serverId}' => $createdVolumeAttachment->serverId, - '{volumeAttachmentId}' => $createdVolumeAttachment->id, + '{serverId}' => $createdVolumeAttachment->serverId, + '{volumeId}' => $createdVolumeAttachment->volumeId, ] );