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 HTTP/1.1
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>
28550 28551 28552 |
# File 'lib/ovirtsdk4/services.rb', line 28550 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.
28612 28613 28614 |
# File 'lib/ovirtsdk4/services.rb', line 28612 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.
28674 28675 28676 |
# File 'lib/ovirtsdk4/services.rb', line 28674 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.
28736 28737 28738 |
# File 'lib/ovirtsdk4/services.rb', line 28736 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 HTTP/1.1
Will return the list of virtual machines and virtual machine templates.
The order of the returned list of templates is not guaranteed.
28789 28790 28791 |
# File 'lib/ovirtsdk4/services.rb', line 28789 def list(opts = {}) internal_get(LIST, opts) end |
#service(path) ⇒ Service
Locates the service corresponding to the given path.
28811 28812 28813 28814 28815 28816 28817 28818 28819 28820 |
# File 'lib/ovirtsdk4/services.rb', line 28811 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.
28800 28801 28802 |
# File 'lib/ovirtsdk4/services.rb', line 28800 def template_service(id) TemplateService.new(self, id) end |