class OvirtSDK4::VmService
Public Class Methods
Creates a new implementation of the service.
@param connection [Connection] The connection to be used by this service.
@param path [String] The relative path of this service, for example `vms/123/disks`.
@api private
# File lib/ovirtsdk4/services.rb, line 31006 def initialize(connection, path) @connection = connection @path = path end
Public Instance Methods
List of scheduling labels assigned to this VM.
@return [AssignedAffinityLabelsService] A reference to `affinity_labels` service.
# File lib/ovirtsdk4/services.rb, line 32170 def affinity_labels_service AssignedAffinityLabelsService.new(@connection, "#{@path}/affinitylabels") end
Locates the `applications` service.
@return [VmApplicationsService] A reference to `applications` service.
# File lib/ovirtsdk4/services.rb, line 32179 def applications_service VmApplicationsService.new(@connection, "#{@path}/applications") end
This operation stops any migration of a virtual machine to another physical host.
- source
POST /ovirt-engine/api/vms/123/cancelmigration
The cancel migration action does not take any action specific parameters, so the request body should contain an empty `action`:
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the migration should cancelled asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31035 def cancel_migration(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/cancelmigration", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Locates the `cdroms` service.
@return [VmCdromsService] A reference to `cdroms` service.
# File lib/ovirtsdk4/services.rb, line 32188 def cdroms_service VmCdromsService.new(@connection, "#{@path}/cdroms") end
Executes the `clone` method.
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the clone should be performed asynchronously.
@option opts [Vm] :vm
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31072 def clone(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/clone", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Executes the `commit_snapshot` method.
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the snapshots should be committed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31107 def commit_snapshot(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/commitsnapshot", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Detaches a virtual machine from a pool.
- source
POST /ovirt-engine/api/vms/123/detach
The detach action does not take any action specific parameters, so the request body should contain an empty `action`:
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the detach should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31155 def detach(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/detach", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
List of disks attached to this virtual machine.
@return [DiskAttachmentsService] A reference to `disk_attachments` service.
# File lib/ovirtsdk4/services.rb, line 32197 def disk_attachments_service DiskAttachmentsService.new(@connection, "#{@path}/diskattachments") end
Export a virtual machine to an export domain.
For example to export virtual machine `123` to the export domain `myexport`, send a request like this:
- source
POST /ovirt-engine/api/vms/123/export
With a request body like this:
- source,xml
<action>
<storage_domain> <name>myexport</name> </storage_domain> <exclusive>true</exclusive> <discard_snapshots>true</discard_snapshots>
</action>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the export should be performed asynchronously.
@option opts [Boolean] :discard_snapshots The `discard_snapshots` parameter is to be used when the virtual machine should be exported with all its
snapshots collapsed.
@option opts [Boolean] :exclusive The `exclusive` parameter is to be used when the virtual machine should be exported even if another copy of
it already exists in the export domain (override).
@option opts [StorageDomain] :storage_domain
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31218 def export(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/export", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Freeze virtual machine file systems.
This operation freezes a virtual machine's file systems using the QEMU guest agent when taking a live snapshot of a running virtual machine. Normally, this is done automatically by the manager, but this must be executed manually with the API for virtual machines using OpenStack Volume (Cinder) disks.
Example:
- source
POST /ovirt-engine/api/vms/123/freezefilesystems
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the freeze should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31269 def freeze_filesystems(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/freezefilesystems", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Retrieves the description of the virtual machine.
@param opts [Hash] Additional options.
@option opts [Boolean] :all_content Indicates if all the attributes of the virtual machine should be included in the response.
By default the following attributes are excluded: - `console` - `initialization.configuration.data` - The OVF document describing the virtual machine. - `rng_source` - `soundcard` - `virtio_scsi` For example, to retrieve the complete representation of the virtual machine '123' send a request like this: .... GET /ovirt-engine/api/vms/123?all_content=true .... NOTE: The reason for not including these attributes is performance: they are seldom used and they require additional queries to the database. So try to use the this parameter only when it is really needed.
@option opts [Boolean] :filter Indicates if the results should be filtered according to the permissions of the user.
@option opts [Boolean] :next_run Indicates if the returned result describes the virtual machine as it is currently running, or if describes
it with the modifications that have already been performed but that will have effect only when it is restarted. By default the values is `false`. If the parameter is included in the request, but without a value, it is assumed that the value is `true`, so the following request: [source] ---- GET /vms/{vm:id};next_run ---- Is equivalent to using the value `true`: [source] ---- GET /vms/{vm:id};next_run=true ----
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
@return [Vm]
# File lib/ovirtsdk4/services.rb, line 31344 def get(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} value = opts[:all_content] unless value.nil? value = Writer.render_boolean(value) query['all_content'] = value end value = opts[:filter] unless value.nil? value = Writer.render_boolean(value) query['filter'] = value end value = opts[:next_run] unless value.nil? value = Writer.render_boolean(value) query['next_run'] = value end request = HttpRequest.new(method: :GET, url: @path, headers: headers, query: query) response = @connection.send(request) case response.code when 200 begin reader = XmlReader.new(response.body) return VmReader.read_one(reader) ensure reader.close end else check_fault(response) end end
Locates the `graphics_consoles` service.
@return [VmGraphicsConsolesService] A reference to `graphics_consoles` service.
# File lib/ovirtsdk4/services.rb, line 32206 def graphics_consoles_service VmGraphicsConsolesService.new(@connection, "#{@path}/graphicsconsoles") end
Locates the `host_devices` service.
@return [VmHostDevicesService] A reference to `host_devices` service.
# File lib/ovirtsdk4/services.rb, line 32215 def host_devices_service VmHostDevicesService.new(@connection, "#{@path}/hostdevices") end
Reference to the service that can show the applicable errata available on the virtual machine. This information is taken from Katello.
@return [KatelloErrataService] A reference to `katello_errata` service.
# File lib/ovirtsdk4/services.rb, line 32225 def katello_errata_service KatelloErrataService.new(@connection, "#{@path}/katelloerrata") end
Initiates the automatic user logon to access a virtual machine from an external console.
This action requires the `ovirt-guest-agent-gdm-plugin` and the `ovirt-guest-agent-pam-module` packages to be installed and the `ovirt-guest-agent` service to be running on the virtual machine.
Users require the appropriate user permissions for the virtual machine in order to access the virtual machine from an external console.
This is how an example request would look like:
- source
POST /ovirt-engine/api/vms/123/logon
Request body:
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the logon should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31408 def logon(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/logon", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Sets the global maintenance mode on the hosted engine virtual machine.
This action has no effect on other virtual machines.
Example:
- source
POST /ovirt-engine/api/vms/123/maintenance
- source,xml
<action>
<maintenance_enabled>true<maintenance_enabled/>
</action>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the action should be performed asynchronously.
@option opts [Boolean] :maintenance_enabled Indicates if global maintenance should be enabled or disabled.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31461 def maintenance(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/maintenance", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
This operation migrates a virtual machine to another physical host.
- source
POST /ovirt-engine/api/vms/123/migrate
One can specify a specific host to migrate the virtual machine to:
- source,xml
<action>
<host id="2ab5e1da-b726-4274-bbf7-0a42b16a0fc3"/>
</action>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the migration should be performed asynchronously.
@option opts [Cluster] :cluster Specifies the cluster the virtual machine should migrate to. This is an optional parameter. By default, the
virtual machine is migrated to another host within the same cluster.
@option opts [Boolean] :force Specifies the virtual machine should migrate although it might be defined as non migratable. This is an
optional parameter. By default, it is set to `false`.
@option opts [Host] :host Specifies a specific host the virtual machine should migrate to. This is an optional parameters. By default,
the oVirt Engine automatically selects a default host for migration within the same cluster. If an API user requires a specific host, the user can specify the host with either an `id` or `name` parameter.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31520 def migrate(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/migrate", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Locates the `nics` service.
@return [VmNicsService] A reference to `nics` service.
# File lib/ovirtsdk4/services.rb, line 32234 def nics_service VmNicsService.new(@connection, "#{@path}/nics") end
Locates the `numa_nodes` service.
@return [VmNumaNodesService] A reference to `numa_nodes` service.
# File lib/ovirtsdk4/services.rb, line 32243 def numa_nodes_service VmNumaNodesService.new(@connection, "#{@path}/numanodes") end
Locates the `permissions` service.
@return [AssignedPermissionsService] A reference to `permissions` service.
# File lib/ovirtsdk4/services.rb, line 32252 def permissions_service AssignedPermissionsService.new(@connection, "#{@path}/permissions") end
Executes the `preview_snapshot` method.
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the preview should be performed asynchronously.
@option opts [Array<Disk>] :disks
@option opts [Boolean] :restore_memory
@option opts [Snapshot] :snapshot
@option opts [Vm] :vm
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31563 def preview_snapshot(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/previewsnapshot", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
This operation sends a reboot request to a virtual machine.
- source
POST /ovirt-engine/api/vms/123/reboot
The reboot action does not take any action specific parameters, so the request body should contain an empty `action`:
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the reboot should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31611 def reboot(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/reboot", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Removes the virtual machine, including the virtual disks attached to it.
For example, to remove the virtual machine with identifier `123` send a request like this:
- source
DELETE /ovirt-engine/api/vms/123
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the remove should be performed asynchronously. @option opts [Boolean] :detach_only Indicates if the attached virtual disks should be detached first and preserved instead of being removed. @option opts [Boolean] :force Indicates if the virtual machine should be forcibly removed.
Locked virtual machines and virtual machines with locked disk images cannot be removed without this flag set to true.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31657 def remove(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} value = opts[:async] unless value.nil? value = Writer.render_boolean(value) query['async'] = value end value = opts[:detach_only] unless value.nil? value = Writer.render_boolean(value) query['detach_only'] = value end value = opts[:force] unless value.nil? value = Writer.render_boolean(value) query['force'] = value end request = HttpRequest.new(method: :DELETE, url: @path, headers: headers, query: query) response = @connection.send(request) unless response.code == 200 check_fault(response) end end
Executes the `reorder_mac_addresses` method.
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the action should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31693 def reorder_mac_addresses(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/reordermacaddresses", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Locates the `reported_devices` service.
@return [VmReportedDevicesService] A reference to `reported_devices` service.
# File lib/ovirtsdk4/services.rb, line 32261 def reported_devices_service VmReportedDevicesService.new(@connection, "#{@path}/reporteddevices") end
Locates the service corresponding to the given path.
@param path [String] The path of the service.
@return [Service] A reference to the service.
# File lib/ovirtsdk4/services.rb, line 32317 def service(path) if path.nil? || path == '' return self end if path == 'affinitylabels' return affinity_labels_service end if path.start_with?('affinitylabels/') return affinity_labels_service.service(path[15..-1]) end if path == 'applications' return applications_service end if path.start_with?('applications/') return applications_service.service(path[13..-1]) end if path == 'cdroms' return cdroms_service end if path.start_with?('cdroms/') return cdroms_service.service(path[7..-1]) end if path == 'diskattachments' return disk_attachments_service end if path.start_with?('diskattachments/') return disk_attachments_service.service(path[16..-1]) end if path == 'graphicsconsoles' return graphics_consoles_service end if path.start_with?('graphicsconsoles/') return graphics_consoles_service.service(path[17..-1]) end if path == 'hostdevices' return host_devices_service end if path.start_with?('hostdevices/') return host_devices_service.service(path[12..-1]) end if path == 'katelloerrata' return katello_errata_service end if path.start_with?('katelloerrata/') return katello_errata_service.service(path[14..-1]) end if path == 'nics' return nics_service end if path.start_with?('nics/') return nics_service.service(path[5..-1]) end if path == 'numanodes' return numa_nodes_service end if path.start_with?('numanodes/') return numa_nodes_service.service(path[10..-1]) end if path == 'permissions' return permissions_service end if path.start_with?('permissions/') return permissions_service.service(path[12..-1]) end if path == 'reporteddevices' return reported_devices_service end if path.start_with?('reporteddevices/') return reported_devices_service.service(path[16..-1]) end if path == 'sessions' return sessions_service end if path.start_with?('sessions/') return sessions_service.service(path[9..-1]) end if path == 'snapshots' return snapshots_service end if path.start_with?('snapshots/') return snapshots_service.service(path[10..-1]) end if path == 'statistics' return statistics_service end if path.start_with?('statistics/') return statistics_service.service(path[11..-1]) end if path == 'tags' return tags_service end if path.start_with?('tags/') return tags_service.service(path[5..-1]) end if path == 'watchdogs' return watchdogs_service end if path.start_with?('watchdogs/') return watchdogs_service.service(path[10..-1]) end raise Error.new("The path \"#{path}\" doesn't correspond to any service") end
Reference to the service that provides information about virtual machine user sessions.
@return [VmSessionsService] A reference to `sessions` service.
# File lib/ovirtsdk4/services.rb, line 32270 def sessions_service VmSessionsService.new(@connection, "#{@path}/sessions") end
This operation sends a shutdown request to a virtual machine.
- source
POST /ovirt-engine/api/vms/123/shutdown
The shutdown action does not take any action specific parameters, so the request body should contain an empty `action`:
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the shutdown should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31741 def shutdown(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/shutdown", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Locates the `snapshots` service.
@return [SnapshotsService] A reference to `snapshots` service.
# File lib/ovirtsdk4/services.rb, line 32279 def snapshots_service SnapshotsService.new(@connection, "#{@path}/snapshots") end
Starts the virtual machine.
If the virtual environment is complete and the virtual machine contains all necessary components to function, it can be started.
This example starts the virtual machine:
- source
POST /ovirt-engine/api/vms/123/start
With a request body:
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the action should be performed asynchronously.
@option opts [Boolean] :filter Indicates if the results should be filtered according to the permissions of the user.
@option opts [Boolean] :pause If set to `true`, start the virtual machine in paused mode. Default is `false`.
@option opts [Boolean] :use_cloud_init If set to `true`, the initialization type is set to cloud-init. The default value is `false`.
See https://cloudinit.readthedocs.io/en/latest[this] for details.
@option opts [Boolean] :use_sysprep If set to `true`, the initialization type is set to Sysprep. The default value is `false`.
See https://en.wikipedia.org/wiki/Sysprep[this] for details.
@option opts [Vm] :vm The definition of the virtual machine for this specific run.
For example: [source,xml] ---- <action> <vm> <os> <boot> <devices> <device>cdrom</device> </devices> </boot> </os> </vm> </action> ---- This will set the boot device to the CDROM only for this specific start. After the virtual machine will be powered off, this definition will be reverted.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31825 def start(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/start", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Locates the `statistics` service.
@return [StatisticsService] A reference to `statistics` service.
# File lib/ovirtsdk4/services.rb, line 32288 def statistics_service StatisticsService.new(@connection, "#{@path}/statistics") end
This operation forces a virtual machine to power-off.
- source
POST /ovirt-engine/api/vms/123/stop
The stop action does not take any action specific parameters, so the request body should contain an empty `action`:
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the action should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31873 def stop(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/stop", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
This operation saves the virtual machine state to disk and stops it. Start a suspended virtual machine and restore the virtual machine state with the start action.
- source
POST /ovirt-engine/api/vms/123/suspend
The suspend action does not take any action specific parameters, so the request body should contain an empty `action`:
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the action should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31922 def suspend(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/suspend", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Thaw virtual machine file systems.
This operation thaws a virtual machine's file systems using the QEMU guest agent when taking a live snapshot of a running virtual machine. Normally, this is done automatically by the manager, but this must be executed manually with the API for virtual machines using OpenStack Volume (Cinder) disks.
Example:
- source
POST /api/vms/123/thawfilesystems
- source,xml
<action/>
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the action should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 31973 def thaw_filesystems(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/thawfilesystems", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Generates a time-sensitive authentication token for accessing a virtual machine's display.
- source
POST /ovirt-engine/api/vms/123/ticket
The client-provided action optionally includes a desired ticket value and/or an expiry time in seconds.
In any case, the response specifies the actual ticket value and expiry used.
- source,xml
<action>
<ticket> <value>abcd12345</value> <expiry>120</expiry> </ticket>
</action>
- IMPORTANT
-
¶ ↑
If the virtual machine is configured to support only one graphics protocol then the generated authentication token will be valid for that protocol. But if the virtual machine is configured to support multiple protocols, VNC and SPICE, then the authentication token will only be valid for the SPICE protocol.
In order to obtain an authentication token for a specific protocol, for example for VNC, use the `ticket` method of the <<services/vm_graphics_console, service>> that manages the graphics consoles of the virtual machine, sending a request like this:
- source
POST /ovirt-engine/api/vms/123/graphicsconsoles/456/ticket
¶ ↑
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the generation of the ticket should be performed asynchronously.
@option opts [Ticket] :ticket
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 32048 def ticket(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/ticket", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) return action.ticket else check_action(response) end end
Returns an string representation of this service.
@return [String]
# File lib/ovirtsdk4/services.rb, line 32425 def to_s "#<#{VmService}:#{@path}>" end
Executes the `undo_snapshot` method.
@param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the action should be performed asynchronously.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
# File lib/ovirtsdk4/services.rb, line 32084 def undo_snapshot(opts = {}) headers = opts[:headers] || {} query = opts[:query] || {} action = Action.new(opts) writer = XmlWriter.new(nil, true) ActionWriter.write_one(action, writer) body = writer.string writer.close request = HttpRequest.new( method: :POST, url: "#{@path}/undosnapshot", body: body, headers: headers, query: query ) response = @connection.send(request) case response.code when 200 action = check_action(response) else check_action(response) end end
Updates the `vm`.
@param vm [Vm] The `vm` to update. @param opts [Hash] Additional options.
@option opts [Boolean] :async Indicates if the update should be performed asynchronously.
@option opts [Boolean] :next_run Indicates if the update should be applied to the virtual machine immediately, or if it should be applied only
when the virtual machine is restarted. The default value is `false`, so by default changes are applied immediately.
@option opts [Hash] :headers Additional HTTP headers.
@option opts [Hash] :query Additional URL query parameters.
@return [Vm]
# File lib/ovirtsdk4/services.rb, line 32126 def update(vm, opts = {}) if vm.is_a?(Hash) vm = OvirtSDK4::Vm.new(vm) end headers = opts[:headers] || {} query = opts[:query] || {} value = opts[:async] unless value.nil? value = Writer.render_boolean(value) query['async'] = value end value = opts[:next_run] unless value.nil? value = Writer.render_boolean(value) query['next_run'] = value end request = HttpRequest.new(method: :PUT, url: @path, headers: headers, query: query) begin writer = XmlWriter.new(nil, true) VmWriter.write_one(vm, writer) request.body = writer.string ensure writer.close end response = @connection.send(request) case response.code when 200 begin reader = XmlReader.new(response.body) return VmReader.read_one(reader) ensure reader.close end return result else check_fault(response) end end
Locates the `watchdogs` service.
@return [VmWatchdogsService] A reference to `watchdogs` service.
# File lib/ovirtsdk4/services.rb, line 32306 def watchdogs_service VmWatchdogsService.new(@connection, "#{@path}/watchdogs") end