Class: OvirtSDK4::TemplatesService

Inherits:
Service
  • Object
show all
Defined in:
lib/ovirtsdk4/services.rb,
lib/ovirtsdk4/services.rb

Instance Method Summary collapse

Methods inherited from Service

#inspect, #to_s

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:

  1. 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>
  2. 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>

Parameters:

  • template (Template)

    The information about the template or template version.

  • opts (Hash) (defaults to: {})

    Additional options.

Options Hash (opts):

  • :clone_permissions (Boolean)

    Specifies if the permissions of the virtual machine should be copied to the template.

    If this optional parameter is provided, and its value is true, then the permissions of the virtual machine (only the direct ones, not the inherited ones) will be copied to the created template. For example, to create a template from the myvm virtual machine copying its permissions, send a request like this:

    POST /ovirt-engine/api/templates?clone_permissions=true

    With a request body like this:

    <template>
      <name>mytemplate<name>
      <vm>
        <name>myvm<name>
      </vm>
    </template>
  • :seal (Boolean)

    Seals the template.

    If this optional parameter is provided and its value is true, then the template is sealed after creation.

    Sealing erases all host-specific configuration from the filesystem: SSH keys, UDEV rules, MAC addresses, system ID, hostname, and so on, thus making it easier to use the template to create multiple virtual machines without manual intervention.

    Currently, sealing is supported only for Linux operating systems.

  • :headers (Hash) — default: {}

    Additional HTTP headers.

  • :query (Hash) — default: {}

    Additional URL query parameters.

  • :timeout (Integer) — default: nil

    The timeout for this request, in seconds. If no value is explicitly given then the timeout set globally for the connection will be used.

  • :wait (Boolean) — default: true

    If true wait for the response.

Returns:


28352
28353
28354
# File 'lib/ovirtsdk4/services.rb', line 28352

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.

Parameters:

  • template (Template)

    The information about the template or template version.

  • opts (Hash) (defaults to: {})

    Additional options.

Options Hash (opts):

  • :clone_permissions (Boolean)

    Specifies if the permissions of the virtual machine should be copied to the template.

    If this optional parameter is provided, and its value is true, then the permissions of the virtual machine (only the direct ones, not the inherited ones) will be copied to the created template. For example, to create a template from the myvm virtual machine copying its permissions, send a request like this:

    POST /ovirt-engine/api/templates?clone_permissions=true

    With a request body like this:

    <template>
      <name>mytemplate<name>
      <vm>
        <name>myvm<name>
      </vm>
    </template>
  • :seal (Boolean)

    Seals the template.

    If this optional parameter is provided and its value is true, then the template is sealed after creation.

    Sealing erases all host-specific configuration from the filesystem: SSH keys, UDEV rules, MAC addresses, system ID, hostname, and so on, thus making it easier to use the template to create multiple virtual machines without manual intervention.

    Currently, sealing is supported only for Linux operating systems.

  • :headers (Hash) — default: {}

    Additional HTTP headers.

  • :query (Hash) — default: {}

    Additional URL query parameters.

  • :timeout (Integer) — default: nil

    The timeout for this request, in seconds. If no value is explicitly given then the timeout set globally for the connection will be used.

  • :wait (Boolean) — default: true

    If true wait for the response.

Returns:


28416
28417
28418
# File 'lib/ovirtsdk4/services.rb', line 28416

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.

Parameters:

  • template (Template)

    The information about the template or template version.

  • opts (Hash) (defaults to: {})

    Additional options.

Options Hash (opts):

  • :clone_permissions (Boolean)

    Specifies if the permissions of the virtual machine should be copied to the template.

    If this optional parameter is provided, and its value is true, then the permissions of the virtual machine (only the direct ones, not the inherited ones) will be copied to the created template. For example, to create a template from the myvm virtual machine copying its permissions, send a request like this:

    POST /ovirt-engine/api/templates?clone_permissions=true

    With a request body like this:

    <template>
      <name>mytemplate<name>
      <vm>
        <name>myvm<name>
      </vm>
    </template>
  • :seal (Boolean)

    Seals the template.

    If this optional parameter is provided and its value is true, then the template is sealed after creation.

    Sealing erases all host-specific configuration from the filesystem: SSH keys, UDEV rules, MAC addresses, system ID, hostname, and so on, thus making it easier to use the template to create multiple virtual machines without manual intervention.

    Currently, sealing is supported only for Linux operating systems.

  • :headers (Hash) — default: {}

    Additional HTTP headers.

  • :query (Hash) — default: {}

    Additional URL query parameters.

  • :timeout (Integer) — default: nil

    The timeout for this request, in seconds. If no value is explicitly given then the timeout set globally for the connection will be used.

  • :wait (Boolean) — default: true

    If true wait for the response.

Returns:


28480
28481
28482
# File 'lib/ovirtsdk4/services.rb', line 28480

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.

Parameters:

  • template (Template)

    The information about the template or template version.

  • opts (Hash) (defaults to: {})

    Additional options.

Options Hash (opts):

  • :clone_permissions (Boolean)

    Specifies if the permissions of the virtual machine should be copied to the template.

    If this optional parameter is provided, and its value is true, then the permissions of the virtual machine (only the direct ones, not the inherited ones) will be copied to the created template. For example, to create a template from the myvm virtual machine copying its permissions, send a request like this:

    POST /ovirt-engine/api/templates?clone_permissions=true

    With a request body like this:

    <template>
      <name>mytemplate<name>
      <vm>
        <name>myvm<name>
      </vm>
    </template>
  • :seal (Boolean)

    Seals the template.

    If this optional parameter is provided and its value is true, then the template is sealed after creation.

    Sealing erases all host-specific configuration from the filesystem: SSH keys, UDEV rules, MAC addresses, system ID, hostname, and so on, thus making it easier to use the template to create multiple virtual machines without manual intervention.

    Currently, sealing is supported only for Linux operating systems.

  • :headers (Hash) — default: {}

    Additional HTTP headers.

  • :query (Hash) — default: {}

    Additional URL query parameters.

  • :timeout (Integer) — default: nil

    The timeout for this request, in seconds. If no value is explicitly given then the timeout set globally for the connection will be used.

  • :wait (Boolean) — default: true

    If true wait for the response.

Returns:


28544
28545
28546
# File 'lib/ovirtsdk4/services.rb', line 28544

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.

Parameters:

  • opts (Hash) (defaults to: {})

    Additional options.

Options Hash (opts):

  • :case_sensitive (Boolean)

    Indicates if the search performed using the search parameter should be performed taking case into account. The default value is true, which means that case is taken into account. If you want to search ignoring case set it to false.

  • :filter (Boolean)

    Indicates if the results should be filtered according to the permissions of the user.

  • :follow (String)

    Indicates which inner links should be followed. The objects referenced by these links will be fetched as part of the current request. See here for details.

  • :max (Integer)

    Sets the maximum number of templates to return. If not specified, all the templates are returned.

  • :search (String)

    A query string used to restrict the returned templates.

  • :headers (Hash) — default: {}

    Additional HTTP headers.

  • :query (Hash) — default: {}

    Additional URL query parameters.

  • :timeout (Integer) — default: nil

    The timeout for this request, in seconds. If no value is explicitly given then the timeout set globally for the connection will be used.

  • :wait (Boolean) — default: true

    If true wait for the response.

Returns:


28598
28599
28600
# File 'lib/ovirtsdk4/services.rb', line 28598

def list(opts = {})
  internal_get(LIST, opts)
end

#service(path) ⇒ Service

Locates the service corresponding to the given path.

Parameters:

  • path (String)

    The path of the service.

Returns:

  • (Service)

    A reference to the service.


28620
28621
28622
28623
28624
28625
28626
28627
28628
28629
# File 'lib/ovirtsdk4/services.rb', line 28620

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.

Parameters:

  • id (String)

    The identifier of the template.

Returns:


28609
28610
28611
# File 'lib/ovirtsdk4/services.rb', line 28609

def template_service(id)
  TemplateService.new(self, id)
end