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.
-
#disk_snapshots_service ⇒ DiskSnapshotsService
Reference to the service that manages the DiskSnapshots.
-
#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
Updates the parameters of the specified disk.
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>
36281 36282 36283 |
# File 'lib/ovirtsdk4/services.rb', line 36281 def copy(opts = {}) internal_action(:copy, nil, COPY, opts) end |
#disk_snapshots_service ⇒ DiskSnapshotsService
Reference to the service that manages the DiskSnapshots.
For example, to list all disk snapshots under the disks resource '123':
GET /ovirt-engine/api/disks/123/disksnapshots
For example, to retrieve a specific disk snapshot '789' under the disk resource '123':
GET /ovirt-engine/api/disks/123/disksnapshots/789
36647 36648 36649 |
# File 'lib/ovirtsdk4/services.rb', line 36647 def disk_snapshots_service @disk_snapshots_service ||= DiskSnapshotsService.new(self, 'disksnapshots') end |
#export(opts = {}) ⇒ Object
Exports a disk to an export storage domain.
36313 36314 36315 |
# File 'lib/ovirtsdk4/services.rb', line 36313 def export(opts = {}) internal_action(:export, nil, EXPORT, opts) end |
#get(opts = {}) ⇒ Disk
Retrieves the description of the disk.
36355 36356 36357 |
# File 'lib/ovirtsdk4/services.rb', line 36355 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>
36438 36439 36440 |
# File 'lib/ovirtsdk4/services.rb', line 36438 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.
36656 36657 36658 |
# File 'lib/ovirtsdk4/services.rb', line 36656 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.
36468 36469 36470 |
# File 'lib/ovirtsdk4/services.rb', line 36468 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>
36516 36517 36518 |
# File 'lib/ovirtsdk4/services.rb', line 36516 def refresh_lun(opts = {}) internal_action(:refreshlun, nil, REFRESH_LUN, opts) end |
#remove(opts = {}) ⇒ Object
Removes a disk.
36541 36542 36543 |
# File 'lib/ovirtsdk4/services.rb', line 36541 def remove(opts = {}) internal_remove(REMOVE, opts) end |
#service(path) ⇒ Service
Locates the service corresponding to the given path.
36676 36677 36678 36679 36680 36681 36682 36683 36684 36685 36686 36687 36688 36689 36690 36691 36692 36693 36694 36695 36696 36697 36698 36699 |
# File 'lib/ovirtsdk4/services.rb', line 36676 def service(path) if path.nil? || path == '' return self end if path == 'disksnapshots' return disk_snapshots_service end if path.start_with?('disksnapshots/') return disk_snapshots_service.service(path[14..-1]) 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.
36570 36571 36572 |
# File 'lib/ovirtsdk4/services.rb', line 36570 def sparsify(opts = {}) internal_action(:sparsify, nil, SPARSIFY, opts) end |
#statistics_service ⇒ StatisticsService
Locates the statistics
service.
36665 36666 36667 |
# File 'lib/ovirtsdk4/services.rb', line 36665 def statistics_service @statistics_service ||= StatisticsService.new(self, 'statistics') end |
#update(disk, opts = {}) ⇒ Disk
Updates the parameters of the specified disk.
This operation allows updating the following floating disk properties:
-
For Image disks:
provisioned_size
,alias
,description
,wipe_after_delete
,shareable
,backup
anddisk_profile
. -
For LUN disks:
alias
,description
andshareable
. -
For Cinder and Managed Block disks:
provisioned_size
,alias
anddescription
. -
For VM attached disks, the
qcow_version
can also be updated.
For example, a disk’s update can be done by using the following request:
PUT /ovirt-engine/api/disks/123
With a request body like this:
<disk>
<qcow_version>qcow2_v3</qcow_version>
<alias>new-alias</alias>
<description>new-desc</description>
</disk>
Since the backend operation is asynchronous, the disk element that is returned to the user might not be synced with the changed properties.
36627 36628 36629 |
# File 'lib/ovirtsdk4/services.rb', line 36627 def update(disk, opts = {}) internal_update(disk, Disk, UPDATE, opts) end |