vagrant-kvm 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +18 -0
- data/README.md +34 -5
- data/lib/vagrant-kvm/action.rb +3 -1
- data/lib/vagrant-kvm/action/boot.rb +4 -0
- data/lib/vagrant-kvm/action/check_box.rb +1 -1
- data/lib/vagrant-kvm/action/import.rb +6 -2
- data/lib/vagrant-kvm/action/set_name.rb +31 -0
- data/lib/vagrant-kvm/config.rb +16 -0
- data/lib/vagrant-kvm/driver/driver.rb +33 -9
- data/lib/vagrant-kvm/errors.rb +6 -0
- data/lib/vagrant-kvm/util/vm_definition.rb +12 -3
- data/lib/vagrant-kvm/version.rb +1 -1
- data/locales/en.yml +8 -0
- data/templates/libvirt_domain.erb +4 -1
- data/vagrant-kvm.gemspec +4 -1
- metadata +24 -4
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
# 0.1.4 (August 20, 2013)
|
2
|
+
|
3
|
+
* Add support for qcow2 and configuration for image type [GH-45]
|
4
|
+
* Improve error handling [GH-43] [GH-44]
|
5
|
+
* Add license and additional author Hiroshi Miura @miurahr to gemfile [GH-42]
|
6
|
+
* Add option to enable/disable VNC [GH-41]
|
7
|
+
* Fixes to VM set_name [GH-29]
|
8
|
+
* Fix typo in VM definition [GH-35]
|
9
|
+
* Expanded Readme file [GH-26] [GH-25][GH-34]
|
10
|
+
* Add support for VNC console [GH-27]
|
11
|
+
* ShareFolders after Boot to avoid ssh timeout [GH-19]
|
12
|
+
* Set vm name to avoid collisions [GH-15]
|
13
|
+
|
14
|
+
# 0.1.3 (May 20, 2013)
|
15
|
+
|
16
|
+
* Merge pull request #13 Fixed error in check_box.rb (Vagrant v1.2.2 compat)
|
17
|
+
* Merge pull request #12 improve invalid version reporting
|
18
|
+
|
1
19
|
# 0.1.2 (May 7, 2013)
|
2
20
|
|
3
21
|
* Merge pull request #2 add "/usr/bin/kvm" to search options
|
data/README.md
CHANGED
@@ -5,8 +5,14 @@ provider to Vagrant, allowing Vagrant to control and provision KVM/QEMU VM.
|
|
5
5
|
|
6
6
|
**NOTE:** This plugin requires Vagrant 1.1+
|
7
7
|
|
8
|
-
**NOTE:** This plugin requires QEMU 1.2+, it has only been tested on Fedora 18
|
9
|
-
|
8
|
+
**NOTE:** This plugin requires QEMU 1.2+, it has only been tested on Fedora 18,
|
9
|
+
Debian Wheezy, Ubuntu 12.04(LTS) Precise and Ubuntu 13.04 Raring at the moment.
|
10
|
+
|
11
|
+
**NOTE:** This plugin requires `libvirt-dev` package to be installed
|
12
|
+
(as in Debian/Ubuntu) or `libvirt-devel` (Fedora/openSUSE)
|
13
|
+
|
14
|
+
**NOTE** You can use a backported KVM/QEMU 1.2 with Private Package Archive(PPA)
|
15
|
+
for Ubuntu 12.04(LTS) at https://launchpad.net/~miurahr/+archive/vagrant
|
10
16
|
|
11
17
|
## Features/Limitations
|
12
18
|
|
@@ -68,6 +74,12 @@ end
|
|
68
74
|
|
69
75
|
And then run `vagrant up --provider=kvm`.
|
70
76
|
|
77
|
+
If you always use kvm provider as default, please set it in your .bashrc:
|
78
|
+
```
|
79
|
+
export VAGRANT_DEFAULT_PROVIDER=kvm
|
80
|
+
```
|
81
|
+
then you can simply run `vagrant up` with kvm provider.
|
82
|
+
|
71
83
|
## Box Format
|
72
84
|
|
73
85
|
Vagrant providers each require a custom provider-specific box format.
|
@@ -80,15 +92,32 @@ There are two box formats for the `kvm` provider:
|
|
80
92
|
2. "Native" box - you need a box.xml file (libvirt domain format) and a raw
|
81
93
|
image file (you can convert a .vmdk with qemu-img)
|
82
94
|
|
83
|
-
To turn this into a native box, you need to create a vagrant image and
|
95
|
+
To turn this into a native box, you need to create a vagrant image and
|
96
|
+
make it sparse.
|
97
|
+
You need ```libguestfs-tools``` package
|
98
|
+
in Debian/Ubuntu/Mint, Fedora15 and after, or CentOS/RHEL6.
|
99
|
+
|
100
|
+
```
|
101
|
+
$ env TMPDIR=/tmp virt-sparsify box-disk1-orig.img box-disk1.img
|
102
|
+
```
|
103
|
+
|
104
|
+
Please keep enough disk space for TMPDIR!
|
105
|
+
To make box with keeping sparse, don't forget -S in tar option:
|
84
106
|
|
85
107
|
```
|
86
|
-
$ tar
|
108
|
+
$ tar cvSzf kvm.box ./metadata.json ./Vagrantfile ./box.xml ./box-disk1.img
|
87
109
|
```
|
88
110
|
|
111
|
+
For CentOS/RHEL5, there is a package in EPEL5.
|
112
|
+
For Gentoo, you can use ```emerge libguestfs```.
|
113
|
+
|
89
114
|
You need a base MAC address and a private network like in the example.
|
90
115
|
|
91
116
|
|
92
117
|
## Configuration
|
93
118
|
|
94
|
-
There are
|
119
|
+
There are some provider specific parameter to control VM definition.
|
120
|
+
|
121
|
+
* `gui` - boolean for starting VM with VNC enabled.
|
122
|
+
* `image_type` - an image format for vm disk: 'raw' or 'qcow2'
|
123
|
+
|
data/lib/vagrant-kvm/action.rb
CHANGED
@@ -18,10 +18,10 @@ module VagrantPlugins
|
|
18
18
|
b.use PruneNFSExports
|
19
19
|
b.use NFS
|
20
20
|
b.use PrepareNFSSettings
|
21
|
-
b.use ShareFolders
|
22
21
|
b.use SetHostname
|
23
22
|
#b.use Customize
|
24
23
|
b.use Boot
|
24
|
+
b.use ShareFolders
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -223,6 +223,7 @@ module VagrantPlugins
|
|
223
223
|
def self.action_up
|
224
224
|
Vagrant::Action::Builder.new.tap do |b|
|
225
225
|
b.use CheckKvm
|
226
|
+
b.use SetName
|
226
227
|
b.use ConfigValidate
|
227
228
|
b.use InitStoragePool
|
228
229
|
b.use Call, Created do |env, b2|
|
@@ -260,6 +261,7 @@ module VagrantPlugins
|
|
260
261
|
autoload :PrepareNFSSettings, action_root.join("prepare_nfs_settings")
|
261
262
|
autoload :PruneNFSExports, action_root.join("prune_nfs_exports")
|
262
263
|
autoload :Resume, action_root.join("resume")
|
264
|
+
autoload :SetName, action_root.join("set_name")
|
263
265
|
autoload :SetupPackageFiles, action_root.join("setup_package_files")
|
264
266
|
autoload :ShareFolders, action_root.join("share_folders")
|
265
267
|
autoload :Suspend, action_root.join("suspend")
|
@@ -9,6 +9,10 @@ module VagrantPlugins
|
|
9
9
|
def call(env)
|
10
10
|
@env = env
|
11
11
|
|
12
|
+
if @env[:machine].provider_config.gui
|
13
|
+
env[:machine].provider.driver.set_gui
|
14
|
+
end
|
15
|
+
|
12
16
|
# Start up the VM
|
13
17
|
env[:ui].info I18n.t("vagrant.actions.vm.boot.booting")
|
14
18
|
env[:machine].provider.driver.start
|
@@ -16,7 +16,7 @@ module VagrantPlugins
|
|
16
16
|
|
17
17
|
# Add the box then reload the box collection so that it becomes
|
18
18
|
# aware of it.
|
19
|
-
env[:ui].info I18n.t("vagrant.actions.vm.check_box.not_found", :name => box_name)
|
19
|
+
env[:ui].info I18n.t("vagrant.actions.vm.check_box.not_found", :name => box_name, :provider => env[:machine].provider_name)
|
20
20
|
env[:action_runner].run(Vagrant::Action.action_box_add, {
|
21
21
|
:box_name => box_name,
|
22
22
|
:box_provider => env[:machine].provider_name,
|
@@ -10,6 +10,10 @@ module VagrantPlugins
|
|
10
10
|
env[:ui].info I18n.t("vagrant.actions.vm.import.importing",
|
11
11
|
:name => env[:machine].box.name)
|
12
12
|
|
13
|
+
# Ignore unsupported image types
|
14
|
+
image_type = env[:machine].provider_config.image_type
|
15
|
+
image_type = 'raw' unless image_type == 'qcow2'
|
16
|
+
|
13
17
|
# Import the virtual machine (ovf or libvirt)
|
14
18
|
# if a libvirt XML definition is present we use it
|
15
19
|
# otherwise we convert the OVF
|
@@ -17,11 +21,11 @@ module VagrantPlugins
|
|
17
21
|
box_file = env[:machine].box.directory.join("box.xml").to_s
|
18
22
|
if File.file?(box_file)
|
19
23
|
env[:machine].id = env[:machine].provider.driver.import(
|
20
|
-
box_file, storage_path)
|
24
|
+
box_file, storage_path, image_type)
|
21
25
|
else
|
22
26
|
box_file = env[:machine].box.directory.join("box.ovf").to_s
|
23
27
|
env[:machine].id = env[:machine].provider.driver.import_ovf(
|
24
|
-
box_file, storage_path)
|
28
|
+
box_file, storage_path, image_type)
|
25
29
|
end
|
26
30
|
|
27
31
|
# If we got interrupted, then the import could have been
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module ProviderKvm
|
3
|
+
module Action
|
4
|
+
class SetName
|
5
|
+
def initialize(app, env)
|
6
|
+
@logger = Log4r::Logger.new("vagrant::action::vm::setname")
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
name = env[:machine].provider_config.name
|
12
|
+
|
13
|
+
if !name
|
14
|
+
prefix = env[:root_path].basename.to_s
|
15
|
+
prefix.gsub!(/[^-a-z0-9_]/i, "")
|
16
|
+
name = prefix + "_#{Time.now.to_i}"
|
17
|
+
end
|
18
|
+
|
19
|
+
# @todo raise error if name is taken in kvm
|
20
|
+
# @todo don't set the name if the vm already has a name
|
21
|
+
|
22
|
+
@logger.info("Setting the name of the VM: #{name}")
|
23
|
+
env[:machine].provider.driver.set_name(name)
|
24
|
+
|
25
|
+
@app.call(env)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/vagrant-kvm/config.rb
CHANGED
@@ -6,6 +6,11 @@ module VagrantPlugins
|
|
6
6
|
# @return [Array]
|
7
7
|
attr_reader :customizations
|
8
8
|
|
9
|
+
# If set to `true`, then KVM/Qemu will be launched with a VNC console.
|
10
|
+
#
|
11
|
+
# @return [Boolean]
|
12
|
+
attr_accessor :gui
|
13
|
+
|
9
14
|
# This should be set to the name of the VM
|
10
15
|
#
|
11
16
|
# @return [String]
|
@@ -16,8 +21,15 @@ module VagrantPlugins
|
|
16
21
|
# @return [Hash]
|
17
22
|
attr_reader :network_adapters
|
18
23
|
|
24
|
+
# The VM image format
|
25
|
+
#
|
26
|
+
# @return [String]
|
27
|
+
attr_accessor :image_type
|
28
|
+
|
19
29
|
def initialize
|
20
30
|
@name = UNSET_VALUE
|
31
|
+
@gui = UNSET_VALUE
|
32
|
+
@image_type = UNSET_VALUE
|
21
33
|
end
|
22
34
|
|
23
35
|
# This is the hook that is called to finalize the object before it
|
@@ -25,6 +37,10 @@ module VagrantPlugins
|
|
25
37
|
def finalize!
|
26
38
|
# The default name is just nothing, and we default it
|
27
39
|
@name = nil if @name == UNSET_VALUE
|
40
|
+
# Default is to not show a GUI
|
41
|
+
@gui = false if @gui == UNSET_VALUE
|
42
|
+
# Default image type is a sparsed raw
|
43
|
+
@image_type = 'raw' if @image_type == UNSET_VALUE
|
28
44
|
end
|
29
45
|
end
|
30
46
|
end
|
@@ -10,6 +10,7 @@ module VagrantPlugins
|
|
10
10
|
class VMNotFound < StandardError; end
|
11
11
|
|
12
12
|
include Util
|
13
|
+
include Errors
|
13
14
|
|
14
15
|
# enum for states return by libvirt
|
15
16
|
VM_STATE = [
|
@@ -21,6 +22,9 @@ module VagrantPlugins
|
|
21
22
|
:shutoff,
|
22
23
|
:crashed]
|
23
24
|
|
25
|
+
# The Name of the virtual machine we represent
|
26
|
+
attr_reader :name
|
27
|
+
|
24
28
|
# The UUID of the virtual machine we represent
|
25
29
|
attr_reader :uuid
|
26
30
|
|
@@ -46,9 +50,11 @@ module VagrantPlugins
|
|
46
50
|
raise e
|
47
51
|
end
|
48
52
|
end
|
53
|
+
|
49
54
|
@version = read_version
|
50
|
-
if
|
51
|
-
raise
|
55
|
+
if @version < "1.2.0"
|
56
|
+
raise Errors::KvmInvalidVersion,
|
57
|
+
:actual => @version, :required => "< 1.2.0"
|
52
58
|
end
|
53
59
|
|
54
60
|
# Get storage pool if it exists
|
@@ -88,8 +94,9 @@ module VagrantPlugins
|
|
88
94
|
#
|
89
95
|
# @param [String] xml Path to the libvirt XML file.
|
90
96
|
# @param [String] path Destination path for the volume.
|
97
|
+
# @param [String] image_type An image type for the volume.
|
91
98
|
# @return [String] UUID of the imported VM.
|
92
|
-
def import(xml, path)
|
99
|
+
def import(xml, path, image_type)
|
93
100
|
@logger.info("Importing VM")
|
94
101
|
# create vm definition from xml
|
95
102
|
definition = File.open(xml) { |f|
|
@@ -102,10 +109,12 @@ module VagrantPlugins
|
|
102
109
|
old_path = File.join(File.dirname(xml), box_disk)
|
103
110
|
new_path = File.join(path, new_disk)
|
104
111
|
# we use qemu-img convert to preserve image size
|
105
|
-
system("qemu-img convert -p #{old_path} -O
|
112
|
+
system("qemu-img convert -p #{old_path} -O #{image_type} #{new_path}")
|
106
113
|
@pool.refresh
|
107
114
|
volume = @pool.lookup_volume_by_name(new_disk)
|
108
115
|
definition.disk = volume.path
|
116
|
+
definition.name = @name
|
117
|
+
definition.image_type = image_type
|
109
118
|
# create vm
|
110
119
|
@logger.info("Creating new VM")
|
111
120
|
domain = @conn.define_domain_xml(definition.as_libvirt)
|
@@ -117,8 +126,9 @@ module VagrantPlugins
|
|
117
126
|
#
|
118
127
|
# @param [String] ovf Path to the OVF file.
|
119
128
|
# @param [String] path Destination path for the volume.
|
129
|
+
# @param [String] image_type An image type for the volume.
|
120
130
|
# @return [String] UUID of the imported VM.
|
121
|
-
def import_ovf(ovf, path)
|
131
|
+
def import_ovf(ovf, path, image_type)
|
122
132
|
@logger.info("Importing OVF definition for VM")
|
123
133
|
# create vm definition from ovf
|
124
134
|
definition = File.open(ovf) { |f|
|
@@ -130,10 +140,12 @@ module VagrantPlugins
|
|
130
140
|
@logger.info("Converting volume #{box_disk} to #{new_disk}")
|
131
141
|
old_path = File.join(File.dirname(ovf), box_disk)
|
132
142
|
new_path = File.join(path, new_disk)
|
133
|
-
system("qemu-img convert -p #{old_path} -O
|
143
|
+
system("qemu-img convert -p #{old_path} -O #{image_type} #{new_path}")
|
134
144
|
@pool.refresh
|
135
145
|
volume = @pool.lookup_volume_by_name(new_disk)
|
136
146
|
definition.disk = volume.path
|
147
|
+
definition.name = @name
|
148
|
+
definition.image_type = image_type
|
137
149
|
# create vm
|
138
150
|
@logger.info("Creating new VM")
|
139
151
|
domain = @conn.define_domain_xml(definition.as_libvirt)
|
@@ -207,13 +219,13 @@ module VagrantPlugins
|
|
207
219
|
|
208
220
|
# Return the qemu version
|
209
221
|
#
|
210
|
-
# @return [
|
222
|
+
# @return [String] of the form "1.2.2"
|
211
223
|
def read_version
|
212
224
|
# libvirt returns a number like 1002002 for version 1.2.2
|
213
|
-
# we return just the major.minor part like this 1002
|
214
225
|
maj = @conn.version / 1000000
|
215
226
|
min = (@conn.version - maj*1000000) / 1000
|
216
|
-
|
227
|
+
rel = @conn.version % 1000
|
228
|
+
"#{maj}.#{min}.#{rel}"
|
217
229
|
end
|
218
230
|
|
219
231
|
# Resumes the previously paused virtual machine.
|
@@ -224,6 +236,10 @@ module VagrantPlugins
|
|
224
236
|
true
|
225
237
|
end
|
226
238
|
|
239
|
+
def set_name(name)
|
240
|
+
@name = name
|
241
|
+
end
|
242
|
+
|
227
243
|
def set_mac_address(mac)
|
228
244
|
domain = @conn.lookup_domain_by_uuid(@uuid)
|
229
245
|
definition = Util::VmDefinition.new(domain.xml_desc, 'libvirt')
|
@@ -232,6 +248,14 @@ module VagrantPlugins
|
|
232
248
|
@conn.define_domain_xml(definition.as_libvirt)
|
233
249
|
end
|
234
250
|
|
251
|
+
def set_gui
|
252
|
+
domain = @conn.lookup_domain_by_uuid(@uuid)
|
253
|
+
definition = Util::VmDefinition.new(domain.xml_desc, 'libvirt')
|
254
|
+
definition.set_gui
|
255
|
+
domain.undefine
|
256
|
+
@conn.define_domain_xml(definition.as_libvirt)
|
257
|
+
end
|
258
|
+
|
235
259
|
# Starts the virtual machine.
|
236
260
|
def start
|
237
261
|
domain = @conn.lookup_domain_by_uuid(@uuid)
|
data/lib/vagrant-kvm/errors.rb
CHANGED
@@ -6,6 +6,12 @@ module VagrantPlugins
|
|
6
6
|
class VagrantKVMError < Vagrant::Errors::VagrantError
|
7
7
|
error_namespace("vagrant_kvm.errors")
|
8
8
|
end
|
9
|
+
class KvmNoConnection < VagrantKVMError
|
10
|
+
error_key(:kvm_no_connection)
|
11
|
+
end
|
12
|
+
class KvmInvalidVersion < VagrantKVMError
|
13
|
+
error_key(:kvm_invalid_version)
|
14
|
+
end
|
9
15
|
end
|
10
16
|
end
|
11
17
|
end
|
@@ -8,12 +8,13 @@ module VagrantPlugins
|
|
8
8
|
module Util
|
9
9
|
class VmDefinition
|
10
10
|
# Attributes of the VM
|
11
|
-
|
11
|
+
attr_accessor :name
|
12
12
|
attr_reader :cpus
|
13
13
|
attr_accessor :disk
|
14
14
|
attr_reader :mac
|
15
15
|
attr_reader :arch
|
16
16
|
attr_reader :network
|
17
|
+
attr_accessor :image_type
|
17
18
|
|
18
19
|
def self.list_interfaces(definition)
|
19
20
|
nics = {}
|
@@ -27,7 +28,7 @@ module VagrantPlugins
|
|
27
28
|
nics[adapter][:type] = :user
|
28
29
|
end
|
29
30
|
# look for interfaces on virtual network
|
30
|
-
doc.css("devices interface[type='
|
31
|
+
doc.css("devices interface[type='network']").each do |item|
|
31
32
|
ifcount += 1
|
32
33
|
adapter = ifcount
|
33
34
|
nics[adapter] ||= {}
|
@@ -39,6 +40,7 @@ module VagrantPlugins
|
|
39
40
|
|
40
41
|
def initialize(definition, source_type='libvirt')
|
41
42
|
@uuid = nil
|
43
|
+
@gui = nil
|
42
44
|
@network = 'default'
|
43
45
|
if source_type == 'ovf'
|
44
46
|
create_from_ovf(definition)
|
@@ -68,7 +70,7 @@ module VagrantPlugins
|
|
68
70
|
# disk volume
|
69
71
|
diskref = doc.at_css("DiskSection Disk")["fileRef"]
|
70
72
|
@disk = doc.at_css("References File[id='#{diskref}']")["href"]
|
71
|
-
|
73
|
+
@image_type = 'raw'
|
72
74
|
# mac address
|
73
75
|
# XXX we use only the first nic
|
74
76
|
@mac = format_mac(doc.at_css("Machine Hardware Adapter[enabled='true']")['MACAddress'])
|
@@ -92,6 +94,7 @@ module VagrantPlugins
|
|
92
94
|
@disk = doc.at_css("devices disk source")["file"]
|
93
95
|
@mac = doc.at_css("devices interface mac")["address"]
|
94
96
|
@network = doc.at_css("devices interface source")["network"]
|
97
|
+
@image_type = doc.at_css("devices disk driver")["type"]
|
95
98
|
end
|
96
99
|
|
97
100
|
def as_libvirt
|
@@ -110,6 +113,8 @@ module VagrantPlugins
|
|
110
113
|
:disk => @disk,
|
111
114
|
:mac => format_mac(@mac),
|
112
115
|
:network => @network,
|
116
|
+
:gui => @gui,
|
117
|
+
:image_type => @image_type,
|
113
118
|
:qemu_bin => qemu_bin.detect { |binary| File.exists? binary }
|
114
119
|
})
|
115
120
|
xml
|
@@ -123,6 +128,10 @@ module VagrantPlugins
|
|
123
128
|
@mac = format_mac(mac)
|
124
129
|
end
|
125
130
|
|
131
|
+
def set_gui
|
132
|
+
@gui = true
|
133
|
+
end
|
134
|
+
|
126
135
|
# Takes a quantity and a unit
|
127
136
|
# returns quantity in bytes
|
128
137
|
# mib = true to use mebibytes, etc
|
data/lib/vagrant-kvm/version.rb
CHANGED
data/locales/en.yml
CHANGED
@@ -2,3 +2,11 @@ en:
|
|
2
2
|
vagrant_kvm:
|
3
3
|
test_message: |-
|
4
4
|
This is a test message.
|
5
|
+
errors:
|
6
|
+
kvm_no_connection: |-
|
7
|
+
Cannot connect to KVM through Libvirt. Please check kernel module
|
8
|
+
'kvm' and 'kvm-intel' or 'kvm-amd' are installed and your id is in
|
9
|
+
group libvirt(in debian/ubuntu).
|
10
|
+
kvm_invalid_version: |-
|
11
|
+
Invalid Kvm version detected: %{actual}, but a version %{required} is
|
12
|
+
required.
|
@@ -22,7 +22,7 @@
|
|
22
22
|
<devices>
|
23
23
|
<emulator><%= qemu_bin %></emulator>
|
24
24
|
<disk type='file' device='disk'>
|
25
|
-
<driver name='qemu' type='
|
25
|
+
<driver name='qemu' type='<%= image_type %>'/>
|
26
26
|
<source file='<%= disk %>'/>
|
27
27
|
<target dev='vda' bus='virtio'/>
|
28
28
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
|
@@ -48,6 +48,9 @@
|
|
48
48
|
<sound model='ich6'>
|
49
49
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
50
50
|
</sound>
|
51
|
+
<% if gui %>
|
52
|
+
<%= "<graphics type='vnc' port='-1' autoport='yes'/>" %>
|
53
|
+
<% end %>
|
51
54
|
<video>
|
52
55
|
<model type='cirrus' vram='9216' heads='1'/>
|
53
56
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
data/vagrant-kvm.gemspec
CHANGED
@@ -5,17 +5,20 @@ Gem::Specification.new do |s|
|
|
5
5
|
s.name = "vagrant-kvm"
|
6
6
|
s.version = VagrantPlugins::ProviderKvm::VERSION
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
|
-
s.authors = "Alex Drahon"
|
8
|
+
s.authors = ["Alex Drahon", "Hiroshi Miura"]
|
9
9
|
s.email = "adrahon@gmail.com"
|
10
10
|
s.homepage = "http://www.vagrantup.com"
|
11
11
|
s.summary = "Enables Vagrant to use KVM instead of VirtualBox."
|
12
12
|
s.description = "Enables Vagrant to use KVM instead of VirtualBox."
|
13
|
+
s.license = 'MIT'
|
13
14
|
|
14
15
|
s.required_rubygems_version = ">= 1.3.6"
|
16
|
+
s.requirements << 'KVM/QEMU, v1.2.0 or greater'
|
15
17
|
|
16
18
|
s.add_runtime_dependency "nokogiri", "~> 1.5.6"
|
17
19
|
s.add_runtime_dependency "ruby-libvirt", "~> 0.4.0"
|
18
20
|
|
21
|
+
s.add_development_dependency "pry"
|
19
22
|
s.add_development_dependency "rake"
|
20
23
|
s.add_development_dependency "rspec-core", "~> 2.12.2"
|
21
24
|
s.add_development_dependency "rspec-expectations", "~> 2.12.1"
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-kvm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Alex Drahon
|
9
|
+
- Hiroshi Miura
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2013-
|
13
|
+
date: 2013-08-24 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: nokogiri
|
@@ -43,6 +44,22 @@ dependencies:
|
|
43
44
|
- - ~>
|
44
45
|
- !ruby/object:Gem::Version
|
45
46
|
version: 0.4.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: pry
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
46
63
|
- !ruby/object:Gem::Dependency
|
47
64
|
name: rake
|
48
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,6 +163,7 @@ files:
|
|
146
163
|
- lib/vagrant-kvm/action/message_will_not_destroy.rb
|
147
164
|
- lib/vagrant-kvm/action/destroy.rb
|
148
165
|
- lib/vagrant-kvm/action/import.rb
|
166
|
+
- lib/vagrant-kvm/action/set_name.rb
|
149
167
|
- lib/vagrant-kvm/action/export.rb
|
150
168
|
- lib/vagrant-kvm/action/destroy_confirm.rb
|
151
169
|
- lib/vagrant-kvm/action/check_running.rb
|
@@ -165,7 +183,8 @@ files:
|
|
165
183
|
- README.md
|
166
184
|
- .gitignore
|
167
185
|
homepage: http://www.vagrantup.com
|
168
|
-
licenses:
|
186
|
+
licenses:
|
187
|
+
- MIT
|
169
188
|
post_install_message:
|
170
189
|
rdoc_options: []
|
171
190
|
require_paths:
|
@@ -182,7 +201,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
201
|
- - ! '>='
|
183
202
|
- !ruby/object:Gem::Version
|
184
203
|
version: 1.3.6
|
185
|
-
requirements:
|
204
|
+
requirements:
|
205
|
+
- KVM/QEMU, v1.2.0 or greater
|
186
206
|
rubyforge_project:
|
187
207
|
rubygems_version: 1.8.25
|
188
208
|
signing_key:
|