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 6205 def initialize(connection, path) @connection = connection @path = path end
Adds a new disk attachment to the virtual machine. The `attachment` parameter can contain just a reference, if the disk already exists:
<disk_attachment>
<bootable>true</bootable> <pass_discard>true</pass_discard> <interface>ide</interface> <active>true</active> <disk id="123"/>
</disk_attachment>
Or it can contain the complete representation of the disk, if the disk doesn't exist yet:
<disk_attachment>
<bootable>true</bootable> <pass_discard>true</pass_discard> <interface>ide</interface> <active>true</active> <disk> <name>mydisk</name> <provisioned_size>1024</provisioned_size> ... </disk>
</disk_attachment>
In this case the disk will be created and then attached to the virtual machine.
In both cases, use the following URL for a virtual machine with an id `345`:
POST /ovirt-engine/api/vms/345/diskattachments
IMPORTANT: The server accepts requests that don't contain the `active` attribute, but the effect is undefined. In some cases the disk will be automatically activated and in other cases it won't. To avoid issues it is strongly recommended to always include the `active` attribute with the desired value.
@param attachment [DiskAttachment] The `attachment` to add.
@param opts [Hash] Additional options.
@return [DiskAttachment]
# File lib/ovirtsdk4/services.rb, line 6262 def add(attachment, opts = {}) if attachment.is_a?(Hash) attachment = OvirtSDK4::DiskAttachment.new(attachment) end query = {} request = HttpRequest.new(method: :POST, url: @path, query: query) begin writer = XmlWriter.new(nil, true) DiskAttachmentWriter.write_one(attachment, writer) request.body = writer.string ensure writer.close end response = @connection.send(request) case response.code when 200, 201, 202 begin reader = XmlReader.new(response.body) return DiskAttachmentReader.read_one(reader) ensure reader.close end else check_fault(response) end end
Reference to the service that manages a specific attachment.
@param id [String] The identifier of the `attachment`.
@return [DiskAttachmentService] A reference to the `attachment` service.
# File lib/ovirtsdk4/services.rb, line 6320 def attachment_service(id) DiskAttachmentService.new(@connection, "#{@path}/#{id}") end
List the disk that are attached to the virtual machine.
@param opts [Hash] Additional options.
@return [Array<DiskAttachment>]
# File lib/ovirtsdk4/services.rb, line 6296 def list(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 DiskAttachmentReader.read_many(reader) ensure reader.close end else check_fault(response) end end
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 6331 def service(path) if path.nil? || path == '' return self end index = path.index('/') if index.nil? return attachment_service(path) end return attachment_service(path[0..(index - 1)]).service(path[(index +1)..-1]) end
Returns an string representation of this service.
@return [String]
# File lib/ovirtsdk4/services.rb, line 6347 def to_s "#<#{DiskAttachmentsService}:#{@path}>" end