Sha256: 3b597f34cf7f5bb0597442ac3662731f16931bf4d94a1924b30e5f23230ad87d

Contents?: true

Size: 1.32 KB

Versions: 5

Compression:

Stored size: 1.32 KB

Contents

require 'erb'

module VagrantMutate
  module Converter
    class Kvm < Converter

      def generate_metadata
        metadata = {
          'provider' => @output_box.provider_name,
        }
      end

      def write_specific_files
        template_path = VagrantMutate.source_root.join('templates', 'kvm', 'box.xml.erb')
        template = File.read(template_path)

        uuid = nil
        gui = true
        disk_bus = @input_box.disk_interface

        image_type = @output_box.image_format
        disk = @output_box.image_name

        name = @input_box.name
        memory = @input_box.memory / 1024 # convert bytes to kib
        cpus = @input_box.cpus
        mac = @input_box.mac_address
        arch = @input_box.architecture

        qemu_bin = find_kvm

        File.open( File.join( @output_box.dir, 'box.xml'), 'w') do |f|
          f.write( ERB.new(template).result(binding) )
        end
      end

      private

      def find_kvm
        qemu_bin_list = [ '/usr/bin/qemu-system-x86_64',
                          '/usr/bin/qemu-system-i386',
                          '/usr/bin/qemu-kvm',
                          '/usr/bin/kvm' ]
        qemu_bin = qemu_bin_list.detect { |binary| File.exists? binary }
        unless qemu_bin
          raise Errors::QemuNotFound
        end
        return qemu_bin
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vagrant-mutate-0.2.3 lib/vagrant-mutate/converter/kvm.rb
vagrant-mutate-0.2.2 lib/vagrant-mutate/converter/kvm.rb
vagrant-mutate-0.2.1 lib/vagrant-mutate/converter/kvm.rb
vagrant-mutate-0.2.0 lib/vagrant-mutate/converter/kvm.rb
vagrant-mutate-0.1.5 lib/vagrant-mutate/converter/kvm.rb