vagrant-libvirt 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -249,40 +249,38 @@ module VagrantPlugins
249
249
  end
250
250
  end
251
251
 
252
-
253
- action_root = Pathname.new(File.expand_path("../action", __FILE__))
254
- autoload :ConnectLibvirt, action_root.join("connect_libvirt")
255
- autoload :IsCreated, action_root.join("is_created")
256
- autoload :IsRunning, action_root.join("is_running")
257
- autoload :IsSuspended, action_root.join("is_suspended")
258
- autoload :MessageAlreadyCreated, action_root.join("message_already_created")
259
- autoload :MessageNotCreated, action_root.join("message_not_created")
260
- autoload :MessageNotRunning, action_root.join("message_not_running")
261
- autoload :MessageNotSuspended, action_root.join("message_not_suspended")
262
- autoload :HandleStoragePool, action_root.join("handle_storage_pool")
263
- autoload :HandleBoxUrl, "vagrant/action/builtin/handle_box_url"
264
- autoload :HandleBoxImage, action_root.join("handle_box_image")
265
- autoload :SetNameOfDomain, action_root.join("set_name_of_domain")
266
- autoload :CreateDomainVolume, action_root.join("create_domain_volume")
267
- autoload :CreateDomain, action_root.join("create_domain")
268
- autoload :CreateNetworks, action_root.join("create_networks")
269
- autoload :CreateNetworkInterfaces, action_root.join("create_network_interfaces")
270
- autoload :DestroyDomain, action_root.join("destroy_domain")
271
- autoload :DestroyNetworks, action_root.join("destroy_networks")
272
- autoload :StartDomain, action_root.join("start_domain")
273
- autoload :HaltDomain, action_root.join("halt_domain")
274
- autoload :SuspendDomain, action_root.join("suspend_domain")
275
- autoload :ResumeDomain, action_root.join("resume_domain")
276
- autoload :ReadState, action_root.join("read_state")
277
- autoload :ReadSSHInfo, action_root.join("read_ssh_info")
278
- autoload :TimedProvision, action_root.join("timed_provision")
279
- autoload :WaitTillUp, action_root.join("wait_till_up")
280
- autoload :SyncFolders, action_root.join("sync_folders")
281
- autoload :SSHRun, "vagrant/action/builtin/ssh_run"
282
- autoload :PrepareNFSSettings, action_root.join("prepare_nfs_settings")
283
- autoload :PruneNFSExports, action_root.join("prune_nfs_exports")
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("vagrant_libvirt::action::create_network_interfaces")
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("vagrant.actions.vm.network.configuring")
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
- for i in start..stop
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
- @logger = Log4r::Logger.new("vagrant_libvirt::action::create_networks")
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
- :netmask => '255.255.255.0',
48
- :dhcp_enabled => true,
49
- :forward_mode => 'nat',
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
- :name => nil,
55
- :ip_address => nil,
56
- :netmask => @options[:netmask],
57
- :network_address => nil,
58
- :bridge_name => nil,
59
- :created => false,
60
- :active => false,
61
- :autostart => false,
62
- :libvirt_network => nil,
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 not @interface_network
73
+ if !@interface_network
73
74
  raise Errors::NetworkNotAvailableError,
74
- :network_name => 'default'
75
- end
75
+ network_name: 'default'
76
+ end
76
77
  end
77
78
 
78
- autostart_network if not @interface_network[:autostart]
79
- activate_network if not @interface_network[:active]
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 not @options[:ip]
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
- :ip_address => @options[:ip],
133
- :network_name => @options[:network_name]
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
- :ip_address => @options[:ip],
141
- :network_name => @options[:network_name]
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 not @interface_network[:created]
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] == nil do
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] == nil do
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] or not @options[:network_name]
192
+ return if @options[:ip] || !@options[:network_name]
192
193
 
193
194
  @interface_network = lookup_network_by_name(@options[:network_name])
194
- if not @interface_network
195
+ if !@interface_network
195
196
  raise Errors::NetworkNotAvailableError,
196
- :network_name => @options[:network_name]
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. Start the range two
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 = "Saving information about created network "
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("vagrant_libvirt::action::handle_box_image")
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("box.img").to_s
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("vagrant_libvirt.uploading_volume"))
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
- :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)
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] or !ret
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
- return true if progress == image_size
121
- false
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] << "_#{Time.now.to_i}"
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(
@@ -4,7 +4,7 @@ module VagrantPlugins
4
4
  module ProviderLibvirt
5
5
  module Errors
6
6
  class VagrantLibvirtError < Vagrant::Errors::VagrantError
7
- error_namespace("vagrant_libvirt.errors")
7
+ error_namespace('vagrant_libvirt.errors')
8
8
  end
9
9
 
10
10
  # Storage pools and volumes exceptions
@@ -1,14 +1,13 @@
1
1
  begin
2
2
  require 'vagrant'
3
3
  rescue LoadError
4
- raise "The Vagrant Libvirt plugin must be run within Vagrant."
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.1.0'
11
- raise "The Vagrant Libvirt plugin is only compatible with Vagrant 1.1+"
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 "libvirt" do
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 "provider"
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("locales/en.yml", ProviderLibvirt.source_root)
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 "log4r"
44
+ require 'log4r'
48
45
 
49
46
  level = nil
50
47
  begin
51
- level = Log4r.const_get(ENV["VAGRANT_LOG"].upcase)
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("vagrant_libvirt")
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 and netmask
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
- :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,
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
 
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ProviderLibvirt
3
- VERSION = "0.0.7"
3
+ VERSION = '0.0.8'
4
4
  end
5
5
  end
@@ -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 = "vagrant-libvirt"
16
- gem.require_paths = ["lib"]
15
+ gem.name = 'vagrant-libvirt'
16
+ gem.require_paths = ['lib']
17
17
  gem.version = VagrantPlugins::ProviderLibvirt::VERSION
18
18
 
19
- gem.add_runtime_dependency "fog", "1.10.0"
20
- gem.add_runtime_dependency "ruby-libvirt", "~> 0.4.0"
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 "rake"
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.7
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-23 00:00:00.000000000 Z
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.10.0
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.10.0
30
+ version: 1.15.0
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: ruby-libvirt
33
33
  requirement: !ruby/object:Gem::Requirement