vagrant-libvirt 0.0.7 → 0.0.8
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/lib/vagrant-libvirt/action.rb +32 -34
- data/lib/vagrant-libvirt/action/create_network_interfaces.rb +5 -5
- data/lib/vagrant-libvirt/action/create_networks.rb +40 -41
- data/lib/vagrant-libvirt/action/handle_box_image.rb +15 -12
- data/lib/vagrant-libvirt/action/set_name_of_domain.rb +2 -1
- data/lib/vagrant-libvirt/errors.rb +1 -1
- data/lib/vagrant-libvirt/plugin.rb +10 -13
- data/lib/vagrant-libvirt/util/libvirt_util.rb +11 -11
- data/lib/vagrant-libvirt/version.rb +1 -1
- data/vagrant-libvirt.gemspec +5 -5
- metadata +4 -4
@@ -249,40 +249,38 @@ module VagrantPlugins
|
|
249
249
|
end
|
250
250
|
end
|
251
251
|
|
252
|
-
|
253
|
-
|
254
|
-
autoload :
|
255
|
-
autoload :
|
256
|
-
autoload :
|
257
|
-
autoload :
|
258
|
-
autoload :
|
259
|
-
autoload :
|
260
|
-
autoload :
|
261
|
-
autoload :
|
262
|
-
autoload :
|
263
|
-
autoload :
|
264
|
-
autoload :
|
265
|
-
autoload :
|
266
|
-
autoload :
|
267
|
-
autoload :
|
268
|
-
autoload :
|
269
|
-
autoload :
|
270
|
-
autoload :
|
271
|
-
autoload :
|
272
|
-
autoload :
|
273
|
-
autoload :
|
274
|
-
autoload :
|
275
|
-
autoload :
|
276
|
-
autoload :
|
277
|
-
autoload :
|
278
|
-
autoload :
|
279
|
-
autoload :
|
280
|
-
autoload :
|
281
|
-
autoload :
|
282
|
-
autoload :
|
283
|
-
autoload :
|
284
|
-
autoload :ShareFolders, action_root.join("share_folders")
|
252
|
+
action_root = Pathname.new(File.expand_path('../action', __FILE__))
|
253
|
+
autoload :ConnectLibvirt, action_root.join('connect_libvirt')
|
254
|
+
autoload :IsCreated, action_root.join('is_created')
|
255
|
+
autoload :IsRunning, action_root.join('is_running')
|
256
|
+
autoload :IsSuspended, action_root.join('is_suspended')
|
257
|
+
autoload :MessageAlreadyCreated, action_root.join('message_already_created')
|
258
|
+
autoload :MessageNotCreated, action_root.join('message_not_created')
|
259
|
+
autoload :MessageNotRunning, action_root.join('message_not_running')
|
260
|
+
autoload :MessageNotSuspended, action_root.join('message_not_suspended')
|
261
|
+
autoload :HandleStoragePool, action_root.join('handle_storage_pool')
|
262
|
+
autoload :HandleBoxUrl, 'vagrant/action/builtin/handle_box_url'
|
263
|
+
autoload :HandleBoxImage, action_root.join('handle_box_image')
|
264
|
+
autoload :SetNameOfDomain, action_root.join('set_name_of_domain')
|
265
|
+
autoload :CreateDomainVolume, action_root.join('create_domain_volume')
|
266
|
+
autoload :CreateDomain, action_root.join('create_domain')
|
267
|
+
autoload :CreateNetworks, action_root.join('create_networks')
|
268
|
+
autoload :CreateNetworkInterfaces, action_root.join('create_network_interfaces')
|
269
|
+
autoload :DestroyDomain, action_root.join('destroy_domain')
|
270
|
+
autoload :DestroyNetworks, action_root.join('destroy_networks')
|
271
|
+
autoload :StartDomain, action_root.join('start_domain')
|
272
|
+
autoload :HaltDomain, action_root.join('halt_domain')
|
273
|
+
autoload :SuspendDomain, action_root.join('suspend_domain')
|
274
|
+
autoload :ResumeDomain, action_root.join('resume_domain')
|
275
|
+
autoload :ReadState, action_root.join('read_state')
|
276
|
+
autoload :ReadSSHInfo, action_root.join('read_ssh_info')
|
277
|
+
autoload :TimedProvision, action_root.join('timed_provision')
|
278
|
+
autoload :WaitTillUp, action_root.join('wait_till_up')
|
279
|
+
autoload :SyncFolders, action_root.join('sync_folders')
|
280
|
+
autoload :SSHRun, 'vagrant/action/builtin/ssh_run'
|
281
|
+
autoload :PrepareNFSSettings, action_root.join('prepare_nfs_settings')
|
282
|
+
autoload :PruneNFSExports, action_root.join('prune_nfs_exports')
|
283
|
+
autoload :ShareFolders, action_root.join('share_folders')
|
285
284
|
end
|
286
285
|
end
|
287
286
|
end
|
288
|
-
|
@@ -15,7 +15,7 @@ module VagrantPlugins
|
|
15
15
|
include Vagrant::Util::ScopedHashOverride
|
16
16
|
|
17
17
|
def initialize(app, env)
|
18
|
-
@logger = Log4r::Logger.new(
|
18
|
+
@logger = Log4r::Logger.new('vagrant_libvirt::action::create_network_interfaces')
|
19
19
|
@app = app
|
20
20
|
end
|
21
21
|
|
@@ -91,7 +91,7 @@ module VagrantPlugins
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
-
# Continue the middleware chain.
|
94
|
+
# Continue the middleware chain.
|
95
95
|
@app.call(env)
|
96
96
|
|
97
97
|
# Configure interfaces that user requested. Machine should be up and
|
@@ -122,15 +122,15 @@ module VagrantPlugins
|
|
122
122
|
networks_to_configure << network
|
123
123
|
end
|
124
124
|
|
125
|
-
env[:ui].info I18n.t(
|
125
|
+
env[:ui].info I18n.t('vagrant.actions.vm.network.configuring')
|
126
126
|
env[:machine].guest.capability(
|
127
|
-
:configure_networks, networks_to_configure)
|
127
|
+
:configure_networks, networks_to_configure)
|
128
128
|
end
|
129
129
|
|
130
130
|
private
|
131
131
|
|
132
132
|
def find_empty(array, start=0, stop=8)
|
133
|
-
|
133
|
+
(start..stop).each do |i|
|
134
134
|
return i if !array[i]
|
135
135
|
end
|
136
136
|
return nil
|
@@ -14,7 +14,8 @@ module VagrantPlugins
|
|
14
14
|
include VagrantPlugins::ProviderLibvirt::Util::LibvirtUtil
|
15
15
|
|
16
16
|
def initialize(app, env)
|
17
|
-
|
17
|
+
mess = 'vagrant_libvirt::action::create_networks'
|
18
|
+
@logger = Log4r::Logger.new(mess)
|
18
19
|
@app = app
|
19
20
|
|
20
21
|
@available_networks = []
|
@@ -44,22 +45,22 @@ module VagrantPlugins
|
|
44
45
|
# (:libvirt__network_name => ...).
|
45
46
|
@options = scoped_hash_override(options, :libvirt)
|
46
47
|
@options = {
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
48
|
+
netmask: '255.255.255.0',
|
49
|
+
dhcp_enabled: true,
|
50
|
+
forward_mode: 'nat',
|
50
51
|
}.merge(@options)
|
51
52
|
|
52
53
|
# Prepare a hash describing network for this specific interface.
|
53
54
|
@interface_network = {
|
54
|
-
:
|
55
|
-
:
|
56
|
-
:
|
57
|
-
:
|
58
|
-
:
|
59
|
-
:
|
60
|
-
:
|
61
|
-
:
|
62
|
-
:
|
55
|
+
name: nil,
|
56
|
+
ip_address: nil,
|
57
|
+
netmask: @options[:netmask],
|
58
|
+
network_address: nil,
|
59
|
+
bridge_name: nil,
|
60
|
+
created: false,
|
61
|
+
active: false,
|
62
|
+
autostart: false,
|
63
|
+
libvirt_network: nil,
|
63
64
|
}
|
64
65
|
|
65
66
|
if @options[:ip]
|
@@ -67,16 +68,16 @@ module VagrantPlugins
|
|
67
68
|
elsif @options[:network_name]
|
68
69
|
handle_network_name_option
|
69
70
|
else
|
70
|
-
# TODO Should be smarter than just using fixed 'default' string.
|
71
|
+
# TODO: Should be smarter than just using fixed 'default' string.
|
71
72
|
@interface_network = lookup_network_by_name('default')
|
72
|
-
if
|
73
|
+
if !@interface_network
|
73
74
|
raise Errors::NetworkNotAvailableError,
|
74
|
-
|
75
|
-
end
|
75
|
+
network_name: 'default'
|
76
|
+
end
|
76
77
|
end
|
77
78
|
|
78
|
-
autostart_network if
|
79
|
-
activate_network if
|
79
|
+
autostart_network if @interface_network[:autostart].nil?
|
80
|
+
activate_network if @interface_network[:active].nil?
|
80
81
|
end
|
81
82
|
|
82
83
|
@app.call(env)
|
@@ -103,7 +104,7 @@ module VagrantPlugins
|
|
103
104
|
# Handle only situations, when ip is specified. Variables @options and
|
104
105
|
# @available_networks should be filled before calling this function.
|
105
106
|
def handle_ip_option(env)
|
106
|
-
return if
|
107
|
+
return if !@options[:ip]
|
107
108
|
|
108
109
|
net_address = network_address(@options[:ip], @options[:netmask])
|
109
110
|
@interface_network[:network_address] = net_address
|
@@ -129,32 +130,32 @@ module VagrantPlugins
|
|
129
130
|
# config match together.
|
130
131
|
if @options[:network_name] != @interface_network[:name]
|
131
132
|
raise Errors::NetworkNameAndAddressMismatch,
|
132
|
-
|
133
|
-
|
133
|
+
ip_address: @options[:ip],
|
134
|
+
network_name: @options[:network_name]
|
134
135
|
end
|
135
136
|
else
|
136
137
|
# Network is not created, but name is set. We need to check,
|
137
138
|
# whether network name from config doesn't already exist.
|
138
139
|
if lookup_network_by_name @options[:network_name]
|
139
140
|
raise Errors::NetworkNameAndAddressMismatch,
|
140
|
-
|
141
|
-
|
141
|
+
ip_address: @options[:ip],
|
142
|
+
network_name: @options[:network_name]
|
142
143
|
end
|
143
144
|
|
144
145
|
# Network with 'name' doesn't exist. Set it as name for new
|
145
146
|
# network.
|
146
147
|
@interface_network[:name] = @options[:network_name]
|
147
|
-
end
|
148
|
+
end
|
148
149
|
end
|
149
150
|
|
150
151
|
# Do we need to create new network?
|
151
|
-
if
|
152
|
+
if !@interface_network[:created]
|
152
153
|
|
153
|
-
# TODO stop after some loops. Don't create infinite loops.
|
154
|
+
# TODO: stop after some loops. Don't create infinite loops.
|
154
155
|
|
155
156
|
# Is name for new network set? If not, generate a unique one.
|
156
157
|
count = 0
|
157
|
-
while @interface_network[:name]
|
158
|
+
while @interface_network[:name].nil?
|
158
159
|
|
159
160
|
# Generate a network name.
|
160
161
|
network_name = env[:root_path].basename.to_s.dup
|
@@ -169,7 +170,7 @@ module VagrantPlugins
|
|
169
170
|
|
170
171
|
# Generate a unique name for network bridge.
|
171
172
|
count = 0
|
172
|
-
while @interface_network[:bridge_name]
|
173
|
+
while @interface_network[:bridge_name].nil?
|
173
174
|
bridge_name = 'virbr'
|
174
175
|
bridge_name << count.to_s
|
175
176
|
count += 1
|
@@ -188,12 +189,12 @@ module VagrantPlugins
|
|
188
189
|
# @options and @available_networks should be filled before calling this
|
189
190
|
# function.
|
190
191
|
def handle_network_name_option
|
191
|
-
return if @options[:ip]
|
192
|
+
return if @options[:ip] || !@options[:network_name]
|
192
193
|
|
193
194
|
@interface_network = lookup_network_by_name(@options[:network_name])
|
194
|
-
if
|
195
|
+
if !@interface_network
|
195
196
|
raise Errors::NetworkNotAvailableError,
|
196
|
-
|
197
|
+
network_name: @options[:network_name]
|
197
198
|
end
|
198
199
|
end
|
199
200
|
|
@@ -214,9 +215,10 @@ module VagrantPlugins
|
|
214
215
|
network_address << "#{@interface_network[:netmask]}"
|
215
216
|
net = IPAddr.new(network_address)
|
216
217
|
|
217
|
-
# First is address of network, second is gateway.
|
218
|
+
# First is address of network, second is gateway.
|
219
|
+
# Start the range two
|
218
220
|
# addresses after network address.
|
219
|
-
# TODO Detect if this IP is not set on the interface.
|
221
|
+
# TODO: Detect if this IP is not set on the interface.
|
220
222
|
start_address = net.to_range.begin.succ.succ
|
221
223
|
|
222
224
|
# Stop address must not be broadcast.
|
@@ -233,13 +235,12 @@ module VagrantPlugins
|
|
233
235
|
@interface_network[:libvirt_network] = \
|
234
236
|
@libvirt_client.define_network_xml(to_xml('private_network'))
|
235
237
|
rescue => e
|
236
|
-
raise Errors::CreateNetworkError,
|
237
|
-
:error_message => e.message
|
238
|
+
raise Errors::CreateNetworkError, error_message: e.message
|
238
239
|
end
|
239
240
|
|
240
241
|
created_networks_file = env[:machine].data_dir + 'created_networks'
|
241
242
|
|
242
|
-
message =
|
243
|
+
message = 'Saving information about created network '
|
243
244
|
message << "#{@interface_network[:name]}, "
|
244
245
|
message << "UUID=#{@interface_network[:libvirt_network].uuid} "
|
245
246
|
message << "to file #{created_networks_file}."
|
@@ -254,8 +255,7 @@ module VagrantPlugins
|
|
254
255
|
begin
|
255
256
|
@interface_network[:libvirt_network].autostart = true
|
256
257
|
rescue => e
|
257
|
-
raise Errors::AutostartNetworkError,
|
258
|
-
:error_message => e.message
|
258
|
+
raise Errors::AutostartNetworkError, error_message: e.message
|
259
259
|
end
|
260
260
|
end
|
261
261
|
|
@@ -263,8 +263,7 @@ module VagrantPlugins
|
|
263
263
|
begin
|
264
264
|
@interface_network[:libvirt_network].create
|
265
265
|
rescue => e
|
266
|
-
raise Errors::ActivateNetworkError,
|
267
|
-
:error_message => e.message
|
266
|
+
raise Errors::ActivateNetworkError, error_message: e.message
|
268
267
|
end
|
269
268
|
end
|
270
269
|
|
@@ -5,7 +5,7 @@ module VagrantPlugins
|
|
5
5
|
module Action
|
6
6
|
class HandleBoxImage
|
7
7
|
def initialize(app, env)
|
8
|
-
@logger = Log4r::Logger.new(
|
8
|
+
@logger = Log4r::Logger.new('vagrant_libvirt::action::handle_box_image')
|
9
9
|
@app = app
|
10
10
|
end
|
11
11
|
|
@@ -30,7 +30,7 @@ module VagrantPlugins
|
|
30
30
|
|
31
31
|
# Get config options
|
32
32
|
config = env[:machine].provider_config
|
33
|
-
box_image_file = env[:machine].box.directory.join(
|
33
|
+
box_image_file = env[:machine].box.directory.join('box.img').to_s
|
34
34
|
env[:box_volume_name] = env[:machine].box.name.to_s.dup
|
35
35
|
env[:box_volume_name] << '_vagrant_box_image.img'
|
36
36
|
|
@@ -40,7 +40,7 @@ module VagrantPlugins
|
|
40
40
|
|
41
41
|
# Box is not available as a storage pool volume. Create and upload
|
42
42
|
# it as a copy of local box image.
|
43
|
-
env[:ui].info(I18n.t(
|
43
|
+
env[:ui].info(I18n.t('vagrant_libvirt.uploading_volume'))
|
44
44
|
|
45
45
|
# Create new volume in storage pool
|
46
46
|
box_image_size = File.size(box_image_file) # B
|
@@ -49,11 +49,11 @@ module VagrantPlugins
|
|
49
49
|
@logger.info(message)
|
50
50
|
begin
|
51
51
|
fog_volume = env[:libvirt_compute].volumes.create(
|
52
|
-
:
|
53
|
-
:
|
54
|
-
:
|
55
|
-
:
|
56
|
-
:
|
52
|
+
name: env[:box_volume_name],
|
53
|
+
allocation: "#{box_image_size/1024/1024}M",
|
54
|
+
capacity: "#{box_virtual_size}G",
|
55
|
+
format_type: box_format,
|
56
|
+
pool_name: config.storage_pool_name)
|
57
57
|
rescue Fog::Errors::Error => e
|
58
58
|
raise Errors::FogCreateVolumeError,
|
59
59
|
:error_message => e.message
|
@@ -72,7 +72,7 @@ module VagrantPlugins
|
|
72
72
|
|
73
73
|
# If upload failed or was interrupted, remove created volume from
|
74
74
|
# storage pool.
|
75
|
-
if env[:interrupted]
|
75
|
+
if env[:interrupted] || !ret
|
76
76
|
begin
|
77
77
|
fog_volume.destroy
|
78
78
|
rescue
|
@@ -99,7 +99,7 @@ module VagrantPlugins
|
|
99
99
|
|
100
100
|
# Exception ProviderLibvirt::RetrieveError can be raised if buffer is
|
101
101
|
# longer than length accepted by API send function.
|
102
|
-
#
|
102
|
+
#
|
103
103
|
# TODO: How to find out if buffer is too large and what is the
|
104
104
|
# length that send function will accept?
|
105
105
|
|
@@ -117,8 +117,11 @@ module VagrantPlugins
|
|
117
117
|
:error_message => e.message
|
118
118
|
end
|
119
119
|
|
120
|
-
|
121
|
-
|
120
|
+
if progress == image_size
|
121
|
+
return true
|
122
|
+
else
|
123
|
+
return false
|
124
|
+
end
|
122
125
|
end
|
123
126
|
|
124
127
|
end
|
@@ -9,9 +9,10 @@ module VagrantPlugins
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def call(env)
|
12
|
+
require 'securerandom'
|
12
13
|
env[:domain_name] = env[:root_path].basename.to_s.dup
|
13
14
|
env[:domain_name].gsub!(/[^-a-z0-9_]/i, "")
|
14
|
-
env[:domain_name] << "_#{
|
15
|
+
env[:domain_name] << "_#{SecureRandom.hex}"
|
15
16
|
|
16
17
|
# Check if the domain name is not already taken
|
17
18
|
domain = ProviderLibvirt::Util::Collection.find_matching(
|
@@ -1,14 +1,13 @@
|
|
1
1
|
begin
|
2
2
|
require 'vagrant'
|
3
3
|
rescue LoadError
|
4
|
-
raise
|
4
|
+
raise 'The Vagrant Libvirt plugin must be run within Vagrant.'
|
5
5
|
end
|
6
6
|
|
7
|
-
|
8
7
|
# This is a sanity check to make sure no one is attempting to install
|
9
8
|
# this into an early Vagrant version.
|
10
|
-
if Vagrant::VERSION < '1.
|
11
|
-
raise
|
9
|
+
if Vagrant::VERSION < '1.3.0'
|
10
|
+
raise 'The Vagrant Libvirt plugin is only compatible with Vagrant 1.3+'
|
12
11
|
end
|
13
12
|
|
14
13
|
module VagrantPlugins
|
@@ -19,36 +18,34 @@ module VagrantPlugins
|
|
19
18
|
Vagrant plugin to manage VMs in libvirt.
|
20
19
|
DESC
|
21
20
|
|
22
|
-
|
23
21
|
config('libvirt', :provider) do
|
24
22
|
require_relative 'config'
|
25
23
|
Config
|
26
24
|
end
|
27
25
|
|
28
|
-
provider
|
26
|
+
provider('libvirt', parallel: true) do
|
29
27
|
# Setup logging and i18n
|
30
28
|
setup_logging
|
31
29
|
setup_i18n
|
32
30
|
|
33
|
-
require_relative
|
31
|
+
require_relative 'provider'
|
34
32
|
Provider
|
35
33
|
end
|
36
34
|
|
37
|
-
|
38
35
|
# This initializes the internationalization strings.
|
39
36
|
def self.setup_i18n
|
40
|
-
I18n.load_path << File.expand_path(
|
37
|
+
I18n.load_path << File.expand_path('locales/en.yml',
|
38
|
+
ProviderLibvirt.source_root)
|
41
39
|
I18n.reload!
|
42
40
|
end
|
43
41
|
|
44
|
-
|
45
42
|
# This sets up our log level to be whatever VAGRANT_LOG is.
|
46
43
|
def self.setup_logging
|
47
|
-
require
|
44
|
+
require 'log4r'
|
48
45
|
|
49
46
|
level = nil
|
50
47
|
begin
|
51
|
-
level = Log4r.const_get(ENV[
|
48
|
+
level = Log4r.const_get(ENV['VAGRANT_LOG'].upcase)
|
52
49
|
rescue NameError
|
53
50
|
# This means that the logging constant wasn't found,
|
54
51
|
# which is fine. We just keep `level` as `nil`. But
|
@@ -64,7 +61,7 @@ module VagrantPlugins
|
|
64
61
|
# Set the logging level on all "vagrant" namespaced
|
65
62
|
# logs as long as we have a valid level.
|
66
63
|
if level
|
67
|
-
logger = Log4r::Logger.new(
|
64
|
+
logger = Log4r::Logger.new('vagrant_libvirt')
|
68
65
|
logger.outputters = Log4r::Outputter.stderr
|
69
66
|
logger.level = level
|
70
67
|
logger = nil
|
@@ -8,7 +8,7 @@ module VagrantPlugins
|
|
8
8
|
include Vagrant::Util::NetworkIP
|
9
9
|
|
10
10
|
# Return a list of all (active and inactive) libvirt networks as a list
|
11
|
-
# of hashes with their name, network address and status (active or not)
|
11
|
+
# of hashes with their name, network address and status (active or not)
|
12
12
|
def libvirt_networks(libvirt_client)
|
13
13
|
libvirt_networks = []
|
14
14
|
|
@@ -29,22 +29,22 @@ module VagrantPlugins
|
|
29
29
|
|
30
30
|
# Calculate network address of network from ip address and
|
31
31
|
# netmask.
|
32
|
-
if ip
|
32
|
+
if ip && netmask
|
33
33
|
network_address = network_address(ip, netmask)
|
34
34
|
else
|
35
35
|
network_address = nil
|
36
36
|
end
|
37
37
|
|
38
38
|
libvirt_networks << {
|
39
|
-
:
|
40
|
-
:
|
41
|
-
:netmask
|
42
|
-
:network_address
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:libvirt_network
|
39
|
+
name: network_name,
|
40
|
+
ip_address: ip,
|
41
|
+
netmask: netmask,
|
42
|
+
network_address: network_address,
|
43
|
+
bridge_name: libvirt_network.bridge_name,
|
44
|
+
created: true,
|
45
|
+
active: libvirt_network.active?,
|
46
|
+
autostart: libvirt_network.autostart?,
|
47
|
+
libvirt_network: libvirt_network
|
48
48
|
}
|
49
49
|
end
|
50
50
|
|
data/vagrant-libvirt.gemspec
CHANGED
@@ -12,13 +12,13 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.files = `git ls-files`.split($\)
|
13
13
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
14
14
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
15
|
-
gem.name =
|
16
|
-
gem.require_paths = [
|
15
|
+
gem.name = 'vagrant-libvirt'
|
16
|
+
gem.require_paths = ['lib']
|
17
17
|
gem.version = VagrantPlugins::ProviderLibvirt::VERSION
|
18
18
|
|
19
|
-
gem.add_runtime_dependency
|
20
|
-
gem.add_runtime_dependency
|
19
|
+
gem.add_runtime_dependency 'fog', '1.15.0'
|
20
|
+
gem.add_runtime_dependency 'ruby-libvirt', '~> 0.4.0'
|
21
21
|
|
22
|
-
gem.add_development_dependency
|
22
|
+
gem.add_development_dependency 'rake'
|
23
23
|
end
|
24
24
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-libvirt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-09-
|
13
|
+
date: 2013-09-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: fog
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
22
|
+
version: 1.15.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,7 +27,7 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - '='
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: 1.
|
30
|
+
version: 1.15.0
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
32
|
name: ruby-libvirt
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|