Class: OvirtSDK4::TemplatesService
- Defined in:
- lib/ovirtsdk4/services.rb,
lib/ovirtsdk4/services.rb
Instance Method Summary collapse
-
#add(template, opts = {}) ⇒ Template
Creates a new template.
-
#add_from_configuration(template, opts = {}) ⇒ Template
Add a virtual machine template to the system from a configuration.
-
#add_from_vm(template, opts = {}) ⇒ Template
Add a virtual machine template to the system from an existing virtual machine.
-
#add_from_vm_snapshot(template, opts = {}) ⇒ Template
Add a virtual machine template to the system from a snapshot.
-
#list(opts = {}) ⇒ Array<Template>
Returns the list of virtual machine templates.
-
#service(path) ⇒ Service
Locates the service corresponding to the given path.
-
#template_service(id) ⇒ TemplateService
Returns a reference to the service that manages a specific virtual machine template.
Methods inherited from Service
Instance Method Details
#add(template, opts = {}) ⇒ Template
Creates a new template.
This requires the name
and vm
elements. To identify the virtual machine use the vm.id
or vm.name
attributes. For example, to create a template from a virtual machine with the identifier 123
send a request
like this:
POST /ovirt-engine/api/templates
With a request body like this:
<template>
<name>mytemplate</name>
<vm id="123"/>
</template>
Since version 4.3, in order to create virtual machine template from a snapshot send a request body like this:
<template>
<name>mytemplate</name>
<vm id="123">
<snapshots>
<snapshot id="456"/>
</snapshots>
</vm>
</template>
The disks of the template can be customized, making some of their characteristics different from the disks of the
original virtual machine. To do so use the vm.disk_attachments
attribute, specifying the identifier of the disk
of the original virtual machine and the characteristics that you want to change. For example, if the original
virtual machine has a disk with the identifier 456
, and, for that disk, you want to change the name to mydisk
the format to Copy On Write and make it sparse, send a request body like
this:
<template>
<name>mytemplate</name>
<vm id="123">
<disk_attachments>
<disk_attachment>
<disk id="456">
<name>mydisk</name>
<format>cow</format>
<sparse>true</sparse>
</disk>
</disk_attachment>
</disk_attachments>
</vm>
</template>
The template can be created as a sub-version of an existing template. This requires the name
and vm
attributes
for the new template, and the base_template
and version_name
attributes for the new template version. The
base_template
and version_name
attributes must be specified within a version
section enclosed in the
template
section. Identify the virtual machine with the id
or name
attributes.
<template>
<name>mytemplate</name>
<vm id="123"/>
<version>
<base_template id="456"/>
<version_name>mytemplate_001</version_name>
</version>
</template>
The destination storage domain of the template can be customized, in one of two ways:
-
Globally, at the request level. The request must list the desired disk attachments to be created on the storage domain. If the disk attachments are not listed, the global storage domain parameter will be ignored.
<template> <name>mytemplate</name> <storage_domain id="123"/> <vm id="456"> <disk_attachments> <disk_attachment> <disk id="789"> <format>cow</format> <sparse>true</sparse> </disk> </disk_attachment> </disk_attachments> </vm> </template>
-
Per each disk attachment. Specify the desired storage domain for each disk attachment. Specifying the global storage definition will override the storage domain per disk attachment specification.
<template> <name>mytemplate</name> <vm id="123"> <disk_attachments> <disk_attachment> <disk id="456"> <format>cow</format> <sparse>true</sparse> <storage_domains> <storage_domain id="789"/> </storage_domains> </disk> </disk_attachment> </disk_attachments> </vm> </template>
27411 27412 27413 |
# File 'lib/ovirtsdk4/services.rb', line 27411 def add(template, opts = {}) internal_add(template, Template, ADD, opts) end |
#add_from_configuration(template, opts = {}) ⇒ Template
Add a virtual machine template to the system from a configuration. Requires the configuration type, the configuration data, and the target cluster.
27475 27476 27477 |
# File 'lib/ovirtsdk4/services.rb', line 27475 def add_from_configuration(template, opts = {}) internal_add(template, Template, ADD_FROM_CONFIGURATION, opts) end |
#add_from_vm(template, opts = {}) ⇒ Template
Add a virtual machine template to the system from an existing virtual machine.
27539 27540 27541 |
# File 'lib/ovirtsdk4/services.rb', line 27539 def add_from_vm(template, opts = {}) internal_add(template, Template, ADD_FROM_VM, opts) end |
#add_from_vm_snapshot(template, opts = {}) ⇒ Template
Add a virtual machine template to the system from a snapshot.
27603 27604 27605 |
# File 'lib/ovirtsdk4/services.rb', line 27603 def add_from_vm_snapshot(template, opts = {}) internal_add(template, Template, ADD_FROM_VM_SNAPSHOT, opts) end |
#list(opts = {}) ⇒ Array<Template>
Returns the list of virtual machine templates.
For example:
GET /ovirt-engine/api/templates
Will return the list of virtual machines and virtual machine templates.
The order of the returned list of templates is not guaranteed.
27657 27658 27659 |
# File 'lib/ovirtsdk4/services.rb', line 27657 def list(opts = {}) internal_get(LIST, opts) end |
#service(path) ⇒ Service
Locates the service corresponding to the given path.
27679 27680 27681 27682 27683 27684 27685 27686 27687 27688 |
# File 'lib/ovirtsdk4/services.rb', line 27679 def service(path) if path.nil? || path == '' return self end index = path.index('/') if index.nil? return template_service(path) end return template_service(path[0..(index - 1)]).service(path[(index +1)..-1]) end |
#template_service(id) ⇒ TemplateService
Returns a reference to the service that manages a specific virtual machine template.
27668 27669 27670 |
# File 'lib/ovirtsdk4/services.rb', line 27668 def template_service(id) TemplateService.new(self, id) end |