Closed mirchaemanuel closed 10 months ago
I don't know if this wasn't merged but here is how I am doing it RN.
If you wish to add customized params for eg. the cascade
params in delete volume, here is my way. (Also implemented extend functionality for volume I,e resize volume)
$volume = $blockstorageV3->getVolume('YOUR ID');
// Extended custom `delete` function using new model class
$volume = new OpenStackVolume($volume);
$volume->delete(['cascade' => true]);
My OpenStackVolume class
class OpenStackVolume
{
private $volume;
public function __construct(Volume $volume)
{
$this->volume = $volume;
}
/**
* @param int $new_size
*/
public function extend(int $new_size)
{
$this->volume->execute($this->postVolumeExtend(), ['id' => $this->volume->id, 'new_size' => $new_size]);
}
public function postVolumeExtend(): array
{
return [
'method' => 'POST',
'path' => 'volumes/{id}/action',
'jsonKey' => 'os-extend',
'params' => [
'id' => (new Params())->idPath(),
'new_size' => [
'type' => Params::INT_TYPE,
'location' => Params::JSON,
'required' => true,
'description' => 'The new size of the volume, in gibibytes (GiB).',
],
],
];
}
/**
* @param array $params
*/
public function delete(array $params = [])
{
$this->volume->execute($this->deleteVolume(), ['id' => $this->volume->id, 'cascade' => $params['cascade']]);
}
public function deleteVolume(): array
{
return [
'method' => 'DELETE',
'path' => 'volumes/{id}',
'params' => [
'id' => (new Params())->idPath(),
'cascade' => [
'location' => Params::QUERY,
'type' => Params::BOOL_TYPE,
'description' => 'Indicates whether to force delete a volume even if the volume is in deleting or error_deleting.',
],
],
];
}
}
feat(volume): Add cascade parameters, revise deletable interface, handle cascade on delete