ManageIQ/manageiq-providers-ovirt

View on GitHub
app/models/manageiq/providers/ovirt/infra_manager/disk_attachment_builder.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class ManageIQ::Providers::Ovirt::InfraManager::DiskAttachmentBuilder
def initialize(options = {})
@size_in_mb = options[:size_in_mb]
@storage = options[:storage]
@name = options[:name]
@thin_provisioned = BooleanParameter.new(options[:thin_provisioned])
@bootable = BooleanParameter.new(options[:bootable])
@interface = options[:interface]
end
 
def disk_attachment
thin_provisioned = @thin_provisioned.true?
{
:bootable => @bootable.true?,
:interface => @interface || "VIRTIO",
:active => true,
:disk => {
:name => @name,
:provisioned_size => @size_in_mb.to_i.megabytes,
:sparse => thin_provisioned,
:format => self.class.disk_format_for(@storage, thin_provisioned),
:storage_domains => [:id => ManageIQ::Providers::Ovirt::InfraManager.extract_ems_ref_id(@storage.ems_ref)]
}
}
end
 
FILE_STORAGE_TYPE = %w(NFS GLUSTERFS VMFS).to_set.freeze
BLOCK_STORAGE_TYPE = %w(FCP ISCSI).to_set.freeze
 
def self.disk_format_for(storage, thin_provisioned)
if FILE_STORAGE_TYPE.include?(storage.store_type)
"raw"
elsif BLOCK_STORAGE_TYPE.include?(storage.store_type)
thin_provisioned ? "cow" : "raw"
Duplicate branch body detected.
else
"raw"
end
end
 
class BooleanParameter
def initialize(param)
@value = param.to_s == "true"
end
 
def true?
@value
end
end
end