vagrant-kvm 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|