Class: OvirtSDK4::DiskService
- Inherits:
-
MeasurableService
- Object
- Service
- MeasurableService
- OvirtSDK4::DiskService
- Defined in:
- lib/ovirtsdk4/services.rb,
lib/ovirtsdk4/services.rb
Instance Method Summary collapse
-
#copy(opts = {}) ⇒ Object
This operation copies a disk to the specified storage domain.
-
#export(opts = {}) ⇒ Object
Exports a disk to an export storage domain.
-
#get(opts = {}) ⇒ Disk
Retrieves the description of the disk.
-
#move(opts = {}) ⇒ Object
Moves a disk to another storage domain.
-
#permissions_service ⇒ AssignedPermissionsService
Reference to the service that manages the permissions assigned to the disk.
-
#reduce(opts = {}) ⇒ Object
Reduces the size of the disk image.
-
#refresh_lun(opts = {}) ⇒ Object
Refreshes a direct LUN disk with up-to-date information from the storage.
-
#remove(opts = {}) ⇒ Object
Removes a disk.
-
#service(path) ⇒ Service
Locates the service corresponding to the given path.
-
#sparsify(opts = {}) ⇒ Object
Sparsify the disk.
-
#statistics_service ⇒ StatisticsService
Locates the
statistics
service. -
#update(disk, opts = {}) ⇒ Disk
This operation updates the disk with the appropriate parameters.
Methods inherited from Service
Instance Method Details
#copy(opts = {}) ⇒ Object
This operation copies a disk to the specified storage domain.
For example, a disk can be copied using the following request:
POST /ovirt-engine/api/disks/123/copy
With a request body like this:
<action>
<storage_domain id="456"/>
<disk>
<name>mydisk</name>
</disk>
</action>
If the disk profile or the quota currently used by the disk are not defined for the new storage domain, they can be explicitly specified. If they are not specified, the first available disk profile and the default quota are used.
For example, to specify disk profile 987
and quota 753
, send a request body like this:
<action>
<storage_domain id="456"/>
<disk_profile id="987"/>
<quota id="753"/>
</action>
34401 34402 34403 |
# File 'lib/ovirtsdk4/services.rb', line 34401 def copy(opts = {}) internal_action(:copy, nil, COPY, opts) end |
#export(opts = {}) ⇒ Object
Exports a disk to an export storage domain.
34433 34434 34435 |
# File 'lib/ovirtsdk4/services.rb', line 34433 def export(opts = {}) internal_action(:export, nil, EXPORT, opts) end |
#get(opts = {}) ⇒ Disk
Retrieves the description of the disk.
34475 34476 34477 |
# File 'lib/ovirtsdk4/services.rb', line 34475 def get(opts = {}) internal_get(GET, opts) end |
#move(opts = {}) ⇒ Object
Moves a disk to another storage domain.
For example, to move the disk with identifier 123
to a storage domain with identifier 456
send the following
request:
POST /ovirt-engine/api/disks/123/move
With the following request body:
<action>
<storage_domain id="456"/>
</action>
If the disk profile or the quota used currently by the disk aren’t defined for the new storage domain, then they can be explicitly specified. If they aren’t then the first available disk profile and the default quota are used.
For example, to explicitly use disk profile 987
and
quota 753
send a request body like this:
<action>
<storage_domain id="456"/>
<disk_profile id="987"/>
<quota id="753"/>
</action>
34558 34559 34560 |
# File 'lib/ovirtsdk4/services.rb', line 34558 def move(opts = {}) internal_action(:move, nil, MOVE, opts) end |
#permissions_service ⇒ AssignedPermissionsService
Reference to the service that manages the permissions assigned to the disk.
34745 34746 34747 |
# File 'lib/ovirtsdk4/services.rb', line 34745 def @permissions_service ||= AssignedPermissionsService.new(self, 'permissions') end |
#reduce(opts = {}) ⇒ Object
Reduces the size of the disk image.
Invokes reduce on the logical volume (i.e. this is only applicable for block storage domains). This is applicable for floating disks and disks attached to non-running virtual machines. There is no need to specify the size as the optimal size is calculated automatically.
34588 34589 34590 |
# File 'lib/ovirtsdk4/services.rb', line 34588 def reduce(opts = {}) internal_action(:reduce, nil, REDUCE, opts) end |
#refresh_lun(opts = {}) ⇒ Object
Refreshes a direct LUN disk with up-to-date information from the storage.
Refreshing a direct LUN disk is useful when:
-
The LUN was added using the API without the host parameter, and therefore does not contain any information from the storage (see DisksService::add).
-
New information about the LUN is available on the storage and you want to update the LUN with it.
To refresh direct LUN disk 123
using host 456
, send the following request:
POST /ovirt-engine/api/disks/123/refreshlun
With the following request body:
<action>
<host id='456'/>
</action>
34636 34637 34638 |
# File 'lib/ovirtsdk4/services.rb', line 34636 def refresh_lun(opts = {}) internal_action(:refreshlun, nil, REFRESH_LUN, opts) end |
#remove(opts = {}) ⇒ Object
Removes a disk.
34661 34662 34663 |
# File 'lib/ovirtsdk4/services.rb', line 34661 def remove(opts = {}) internal_remove(REMOVE, opts) end |
#service(path) ⇒ Service
Locates the service corresponding to the given path.
34765 34766 34767 34768 34769 34770 34771 34772 34773 34774 34775 34776 34777 34778 34779 34780 34781 34782 |
# File 'lib/ovirtsdk4/services.rb', line 34765 def service(path) if path.nil? || path == '' return self end if path == 'permissions' return end if path.start_with?('permissions/') return .service(path[12..-1]) end if path == 'statistics' return statistics_service end if path.start_with?('statistics/') return statistics_service.service(path[11..-1]) end raise Error.new("The path \"#{path}\" doesn't correspond to any service") end |
#sparsify(opts = {}) ⇒ Object
Sparsify the disk.
Sparsification frees space in the disk image that is not used by its filesystem. As a result, the image will occupy less space on the storage.
Currently sparsification works only on disks without snapshots. Disks having derived disks are also not allowed.
34690 34691 34692 |
# File 'lib/ovirtsdk4/services.rb', line 34690 def sparsify(opts = {}) internal_action(:sparsify, nil, SPARSIFY, opts) end |
#statistics_service ⇒ StatisticsService
Locates the statistics
service.
34754 34755 34756 |
# File 'lib/ovirtsdk4/services.rb', line 34754 def statistics_service @statistics_service ||= StatisticsService.new(self, 'statistics') end |
#update(disk, opts = {}) ⇒ Disk
This operation updates the disk with the appropriate parameters.
The only field that can be updated is qcow_version
.
For example, disk update can be done using the following request:
PUT /ovirt-engine/api/disks/123
With a request body like this:
<disk>
<qcow_version>qcow2_v3</qcow_version>
</disk>
Since the backend operation is asynchronous, the disk element that is returned to the user might not be synced with the changed properties.
34736 34737 34738 |
# File 'lib/ovirtsdk4/services.rb', line 34736 def update(disk, opts = {}) internal_update(disk, Disk, UPDATE, opts) end |