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:


28487
28488
28489
# File 'lib/ovirtsdk4/services.rb', line 28487

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:


28551
28552
28553
# File 'lib/ovirtsdk4/services.rb', line 28551

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:


28615
28616
28617
# File 'lib/ovirtsdk4/services.rb', line 28615

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:


28679
28680
28681
# File 'lib/ovirtsdk4/services.rb', line 28679

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:


28733
28734
28735
# File 'lib/ovirtsdk4/services.rb', line 28733

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.


28755
28756
28757
28758
28759
28760
28761
28762
28763
28764
# File 'lib/ovirtsdk4/services.rb', line 28755

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:


28744
28745
28746
# File 'lib/ovirtsdk4/services.rb', line 28744

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