class PackerFiles::Virtual::KVMConverter
Attributes
value[R]
Hash Value
Public Class Methods
new(os, gen)
click to toggle source
Constructor
# File lib/PackerFiles/Virtual/KVMConverter.rb, line 14 def initialize(os, gen) @value = convert(os, gen).to_hash end
Public Instance Methods
convert(os, gen)
click to toggle source
Convert OS object into a hash
# File lib/PackerFiles/Virtual/KVMConverter.rb, line 19 def convert(os, gen) KVM.new do |kvm| # Fill in output directory rel = os.CDImage.release arch = os.CDImage.arch name = os.name.gsub('::', '-') kvm.output_directory = "output-#{name}-#{rel}-#{arch}-#{kvm.type}" kvm.name = "#{name}-#{rel}-#{arch}-#{kvm.type}" # Fill in image details, Some amount of url handling # is really required to handle various corner cases. # thus making the code a bit harder to understand kvm.iso_checksum_type = os.CDImage.check_sum_type kvm.iso_checksum = os.CDImage.check_sum # The code below creates a user variable called mirror # whose base value is the URL fragment w/o the file-name. url = URI::parse(os.CDImage.iso_url) file = File.basename(url.path) url.path = File.dirname(url.path) gen.variables['mirror'] = url.to_s kvm.iso_url = "{{user `mirror`}}/#{file}" # Fill in SSH specifics kvm.ssh_username = os.User.login kvm.ssh_password = os.User.password kvm.ssh_wait_timeout = '10000s' # Fill in other specifics kvm.disk_size = os.Disk.size kvm.http_directory = File.basename(os.http_dir) # Fill in boot command and boot_wait command gen.variables['host'] = '' gen.variables['port'] = '' user_var_name = name + "-#{kvm.type}-boot-wait" gen.variables[user_var_name] = "10s" kvm.boot_command = os.boot_command kvm.boot_wait = "{{user `#{user_var_name}`}}" # Fill in shutdown command kvm.shutdown_command = os.shutdown_command # If the guest OS type contains 64 bit OS, then we need to enable # a 64 bit CPU. if os.guest_os_type.match("64") kvm.Hypervisor(os.Hypervisors.KVM, true) else kvm.Hypervisor(os.Hypervisors.KVM, false) end # Merge with Custom attributes kvm.merge_hs(os.Hypervisors.KVM.custom) end end