class OvirtSDK4::ClusterService

Public Class Methods

new(connection, path) click to toggle source

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 4418
def initialize(connection, path)
  @connection = connection
  @path = path
end

Public Instance Methods

affinity_groups_service() click to toggle source

Reference to the service that manages affinity groups.

@return [AffinityGroupsService] A reference to `affinity_groups` service.

# File lib/ovirtsdk4/services.rb, line 4652
def affinity_groups_service
  AffinityGroupsService.new(@connection, "#{@path}/affinitygroups")
end
cpu_profiles_service() click to toggle source

Reference to the service that manages assigned CPU profiles for cluster.

@return [AssignedCpuProfilesService] A reference to `cpu_profiles` service.

# File lib/ovirtsdk4/services.rb, line 4661
def cpu_profiles_service
  AssignedCpuProfilesService.new(@connection, "#{@path}/cpuprofiles")
end
get(opts = {}) click to toggle source

Get information about the cluster.

An example of getting a cluster:

source

GET /ovirt-engine/api/clusters/123


source,xml

<cluster href=“/ovirt-engine/api/clusters/123” id=“123”>

<actions>
  <link href="/ovirt-engine/api/clusters/123/resetemulatedmachine" rel="resetemulatedmachine"/>
</actions>
<name>Default</name>
<description>The default server cluster</description>
<link href="/ovirt-engine/api/clusters/123/networks" rel="networks"/>
<link href="/ovirt-engine/api/clusters/123/permissions" rel="permissions"/>
<link href="/ovirt-engine/api/clusters/123/glustervolumes" rel="glustervolumes"/>
<link href="/ovirt-engine/api/clusters/123/glusterhooks" rel="glusterhooks"/>
<link href="/ovirt-engine/api/clusters/123/affinitygroups" rel="affinitygroups"/>
<link href="/ovirt-engine/api/clusters/123/cpuprofiles" rel="cpuprofiles"/>
<ballooning_enabled>false</ballooning_enabled>
<cpu>
  <architecture>x86_64</architecture>
  <type>Intel Penryn Family</type>
</cpu>
<error_handling>
  <on_error>migrate</on_error>
</error_handling>
<fencing_policy>
  <enabled>true</enabled>
  <skip_if_connectivity_broken>
    <enabled>false</enabled>
    <threshold>50</threshold>
  </skip_if_connectivity_broken>
  <skip_if_sd_active>
    <enabled>false</enabled>
  </skip_if_sd_active>
</fencing_policy>
<gluster_service>false</gluster_service>
<ha_reservation>false</ha_reservation>
<ksm>
  <enabled>true</enabled>
  <merge_across_nodes>true</merge_across_nodes>
</ksm>
<maintenance_reason_required>false</maintenance_reason_required>
<memory_policy>
  <over_commit>
    <percent>100</percent>
  </over_commit>
  <transparent_hugepages>
    <enabled>true</enabled>
  </transparent_hugepages>
</memory_policy>
<migration>
  <auto_converge>inherit</auto_converge>
  <bandwidth>
    <assignment_method>auto</assignment_method>
  </bandwidth>
  <compressed>inherit</compressed>
</migration>
<optional_reason>false</optional_reason>
<required_rng_sources>
  <required_rng_source>random</required_rng_source>
</required_rng_sources>
<scheduling_policy href="/ovirt-engine/api/schedulingpolicies/456" id="456"/>
<threads_as_cores>false</threads_as_cores>
<trusted_service>false</trusted_service>
<tunnel_migration>false</tunnel_migration>
<version>
  <major>4</major>
  <minor>0</minor>
</version>
<virt_service>true</virt_service>
<data_center href="/ovirt-engine/api/datacenters/111" id="111"/>

</cluster>


@param opts [Hash] Additional options.

@option opts [Boolean] :filter Indicates if the results should be filtered according to the permissions of the user.

@return [Cluster]

# File lib/ovirtsdk4/services.rb, line 4510
def get(opts = {})
  query = {}
  value = opts[:filter]
  unless value.nil?
    value = Writer.render_boolean(value)
    query['filter'] = value
  end
  request = HttpRequest.new(method: :GET, url: @path, query: query)
  response = @connection.send(request)
  case response.code
  when 200
    begin
      reader = XmlReader.new(response.body)
      return ClusterReader.read_one(reader)
    ensure
      reader.close
    end
  else
    check_fault(response)
  end
end
gluster_hooks_service() click to toggle source

Reference to the service that manages the Gluster hooks for cluster.

@return [GlusterHooksService] A reference to `gluster_hooks` service.

# File lib/ovirtsdk4/services.rb, line 4670
def gluster_hooks_service
  GlusterHooksService.new(@connection, "#{@path}/glusterhooks")
end
gluster_volumes_service() click to toggle source

Reference to the service that manages Gluster volumes for cluster.

@return [GlusterVolumesService] A reference to `gluster_volumes` service.

# File lib/ovirtsdk4/services.rb, line 4679
def gluster_volumes_service
  GlusterVolumesService.new(@connection, "#{@path}/glustervolumes")
end
network_filters_service() click to toggle source

A sub collection with all the supported network filters for this cluster.

@return [NetworkFiltersService] A reference to `network_filters` service.

# File lib/ovirtsdk4/services.rb, line 4688
def network_filters_service
  NetworkFiltersService.new(@connection, "#{@path}/networkfilters")
end
networks_service() click to toggle source

Reference to the service that manages assigned networks for cluster.

@return [AssignedNetworksService] A reference to `networks` service.

# File lib/ovirtsdk4/services.rb, line 4697
def networks_service
  AssignedNetworksService.new(@connection, "#{@path}/networks")
end
permissions_service() click to toggle source

Reference to permissions.

@return [AssignedPermissionsService] A reference to `permissions` service.

# File lib/ovirtsdk4/services.rb, line 4706
def permissions_service
  AssignedPermissionsService.new(@connection, "#{@path}/permissions")
end
remove(opts = {}) click to toggle source

Removes cluster from the system.

source

DELETE /ovirt-engine/api/clusters/00000000-0000-0000-0000-000000000000


@param opts [Hash] Additional options.

@option opts [Boolean] :async Indicates if the remove should be performed asynchronously.

# File lib/ovirtsdk4/services.rb, line 4543
def remove(opts = {})
  query = {}
  value = opts[:async]
  unless value.nil?
    value = Writer.render_boolean(value)
    query['async'] = value
  end
  request = HttpRequest.new(method: :DELETE, url: @path, query: query)
  response = @connection.send(request)
  unless response.code == 200
    check_fault(response)
  end
end
reset_emulated_machine(opts = {}) click to toggle source

Executes the `reset_emulated_machine` method.

@param opts [Hash] Additional options.

@option opts [Boolean] :async Indicates if the reset should be performed asynchronously.

# File lib/ovirtsdk4/services.rb, line 4564
def reset_emulated_machine(opts = {})
  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}/resetemulatedmachine",
    body: body
  )
  response = @connection.send(request)
  case response.code
  when 200
    action = check_action(response)
  else
    check_action(response)
  end
end
service(path) click to toggle source

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 4717
def service(path)
  if path.nil? || path == ''
    return self
  end
  if path == 'affinitygroups'
    return affinity_groups_service
  end
  if path.start_with?('affinitygroups/')
    return affinity_groups_service.service(path[15..-1])
  end
  if path == 'cpuprofiles'
    return cpu_profiles_service
  end
  if path.start_with?('cpuprofiles/')
    return cpu_profiles_service.service(path[12..-1])
  end
  if path == 'glusterhooks'
    return gluster_hooks_service
  end
  if path.start_with?('glusterhooks/')
    return gluster_hooks_service.service(path[13..-1])
  end
  if path == 'glustervolumes'
    return gluster_volumes_service
  end
  if path.start_with?('glustervolumes/')
    return gluster_volumes_service.service(path[15..-1])
  end
  if path == 'networkfilters'
    return network_filters_service
  end
  if path.start_with?('networkfilters/')
    return network_filters_service.service(path[15..-1])
  end
  if path == 'networks'
    return networks_service
  end
  if path.start_with?('networks/')
    return networks_service.service(path[9..-1])
  end
  if path == 'permissions'
    return permissions_service
  end
  if path.start_with?('permissions/')
    return permissions_service.service(path[12..-1])
  end
  raise Error.new("The path \"#{path}\" doesn't correspond to any service")
end
to_s() click to toggle source

Returns an string representation of this service.

@return [String]

# File lib/ovirtsdk4/services.rb, line 4771
def to_s
  "#<#{ClusterService}:#{@path}>"
end
update(cluster, opts = {}) click to toggle source

Updates information about the cluster.

Only specified fields are updated, others remain unchanged.

E.g. update cluster's CPU:

source

PUT /ovirt-engine/api/clusters/123


With request body like:

source,xml

<cluster>

<cpu>
  <type>Intel Haswell-noTSX Family</type>
</cpu>

</cluster>


@param cluster [Cluster] The `cluster` to update. @param opts [Hash] Additional options.

@option opts [Boolean] :async Indicates if the update should be performed asynchronously.

@return [Cluster]

# File lib/ovirtsdk4/services.rb, line 4614
def update(cluster, opts = {})
  if cluster.is_a?(Hash)
    cluster = OvirtSDK4::Cluster.new(cluster)
  end
  query = {}
  value = opts[:async]
  unless value.nil?
    value = Writer.render_boolean(value)
    query['async'] = value
  end
  request = HttpRequest.new(method: :PUT, url: @path, query: query)
  begin
    writer = XmlWriter.new(nil, true)
    ClusterWriter.write_one(cluster, 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 ClusterReader.read_one(reader)
    ensure
      reader.close
    end
    return result
  else
    check_fault(response)
  end
end