class OvirtSDK4::StorageServerConnectionService

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

Public Instance Methods

get(opts = {}) click to toggle source

Returns the representation of the object managed by this service.

@param opts [Hash] Additional options.

@return [StorageConnection]

# File lib/ovirtsdk4/services.rb, line 24174
def get(opts = {})
  query = {}
  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 StorageConnectionReader.read_one(reader)
    ensure
      reader.close
    end
  else
    check_fault(response)
  end
end
remove(opts = {}) click to toggle source

Removes a storage connection.

A storage connection can only be deleted if neither storage domain nor LUN disks reference it. The host name or id is optional; providing it disconnects (unmounts) the connection from that host.

@param opts [Hash] Additional options.

@option opts [Boolean] :async Indicates if the remove should be performed asynchronously. @option opts [String] :host The name or identifier of the host from which the connection would be unmounted (disconnected). If not

provided, no host will be disconnected.

For example, to use the host with identifier `456` to delete the storage connection with identifier `123`
send a request like this:

[source]
----
DELETE /ovirt-engine/api/storageconnections/123?host=456
----
# File lib/ovirtsdk4/services.rb, line 24210
def remove(opts = {})
  query = {}
  value = opts[:async]
  unless value.nil?
    value = Writer.render_boolean(value)
    query['async'] = value
  end
  value = opts[:host]
  unless value.nil?
    query['host'] = value
  end
  request = HttpRequest.new(method: :DELETE, url: @path, query: query)
  response = @connection.send(request)
  unless response.code == 200
    check_fault(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 24307
def service(path)
  if path.nil? || path == ''
    return self
  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 24319
def to_s
  "#<#{StorageServerConnectionService}:#{@path}>"
end
update(connection, opts = {}) click to toggle source

Updates the storage connection.

For example, to change the address of the storage server send a request like this:

source,xml

PUT /ovirt-engine/api/storageconnections/123


With a request body like this:

source,xml

<storage_connection>

<address>mynewnfs.example.com</address>
<host>
  <name>myhost</name>
</host>

</storage_connection>


@param connection [StorageConnection] The `connection` to update. @param opts [Hash] Additional options.

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

@option opts [Boolean] :force Indicates if the operation should succeed regardless to the relevant storage domain's status

(i.e. updating is also applicable when storage domain's status is not maintenance).

This parameter is optional, and the default value is `false`.

@return [StorageConnection]

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