fog-libvirt 0.8.0 → 0.9.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3f3d3db14311de4008b43186334103d78f393b03f30282fc6276c1c5f3a7bd3
4
- data.tar.gz: acdeffc9be9ca8fa2d2fe5065616b9c7a14c4415b03359437500cfd7c47f63f0
3
+ metadata.gz: 6c5d75c89309efc19a2a8e70db7f95dc754fe127358089bd8ebe0cd0f2ecf896
4
+ data.tar.gz: 2270fa713728f8824dffc45dca9344c1b244feeb3add91130d26fff493c00f18
5
5
  SHA512:
6
- metadata.gz: e0cb8dbd4c13fd8aa4540e8da830d5853b4507c87795edb3aeb03f644d68d895405e7ed804795b70cf0921fb3a54586f6c912ee67eb52abb4e8e7ee07212bfa6
7
- data.tar.gz: 8e0f16895181fc4becbf81a3a08d215b39be6d77414425fd2238b696b313c9fd9931f23ce38af538f109d403e50aa4430fa674266050c3698f703331762cdec5
6
+ metadata.gz: 1834c04363667e8bb7632055010f7544ec72aec0f49254e8c708bc1b73c0d731aa6474acd01644de9fa35d43491bfd5d7e60d3a6636d6301ba2446f6470b80cd
7
+ data.tar.gz: f6834023432a36058571b78e8c1b8f5ec5a5043990d8f738cbf7c986a9038a8a723415214fa702bc7ad09c83fbd119b961ea4ee5c0bc6ebd328b0ab744f12158
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  fog-libvirt is a libvirt provider for [fog](https://github.com/fog/fog).
4
4
 
5
- [![Build Status](https://secure.travis-ci.org/fog/fog.png?branch=master)](http://travis-ci.org/fog/fog-libvirt)
5
+ [![Build Status](https://github.com/fog/fog-libvirt/actions/workflows/ruby.yml/badge.svg)](https://github.com/fog/fog-libvirt/actions/workflows/ruby.yml)
6
6
  [![Dependency Status](https://gemnasium.com/fog/fog.png)](https://gemnasium.com/fog/fog-libvirt)
7
7
  [![Code Climate](https://codeclimate.com/github/fog/fog.png)](https://codeclimate.com/github/fog/fog-libvirt)
8
8
  [![Gem Version](https://fury-badge.herokuapp.com/rb/fog.png)](http://badge.fury.io/rb/fog-libvirt)
data/fog-libvirt.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.rdoc_options = ["--charset=UTF-8"]
24
24
  s.extra_rdoc_files = %w[README.md]
25
25
 
26
- s.required_ruby_version = '>= 2.0.0'
26
+ s.required_ruby_version = '>= 2.5.0'
27
27
 
28
28
  s.add_dependency("fog-core", ">= 1.27.4")
29
29
  s.add_dependency("fog-json")
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
40
40
  s.add_development_dependency("shindo", "~> 0.3.4")
41
41
  s.add_development_dependency("simplecov")
42
42
  s.add_development_dependency("yard")
43
- s.add_development_dependency("mocha", "~> 1.1.0")
43
+ s.add_development_dependency("mocha", "~> 1.13.0")
44
44
 
45
45
  # Let's not ship dot files and gemfiles
46
46
  git_files = `git ls-files`.split("\n")
@@ -120,16 +120,16 @@ module Fog
120
120
  # on macosx, chances are we are using libvirt through homebrew
121
121
  # the client will default to a socket location based on it's own location (/opt)
122
122
  # we conveniently point it to /var/run/libvirt/libvirt-sock
123
- # if no socket option has been specified explicitly
123
+ # if no socket option has been specified explicitly and
124
+ # if the socket exists
124
125
 
125
- if RUBY_PLATFORM =~ /darwin/
126
+ socketpath="/var/run/libvirt/libvirt-sock"
127
+ if RUBY_PLATFORM =~ /darwin/ && File.exist?(socketpath)
126
128
  querystring=::URI.parse(uri).query
127
129
  if querystring.nil?
128
- append="?socket=/var/run/libvirt/libvirt-sock"
129
- else
130
- if !::CGI.parse(querystring).key?("socket")
131
- append="&socket=/var/run/libvirt/libvirt-sock"
132
- end
130
+ append="?socket=#{socketpath}"
131
+ elsif !::CGI.parse(querystring).key?("socket")
132
+ append="&socket=#{socketpath}"
133
133
  end
134
134
  end
135
135
  uri+append
@@ -347,6 +347,9 @@ module Fog
347
347
  ip_address.chomp
348
348
  end
349
349
 
350
+ # Locale-friendly removal of non-alpha nums
351
+ DOMAIN_CLEANUP_REGEXP = Regexp.compile('[\W_-]')
352
+
350
353
  # This retrieves the ip address of the mac address using ip_command
351
354
  # It returns an array of public and private ip addresses
352
355
  # Currently only one ip address is returned, but in the future this could be multiple
@@ -360,7 +363,7 @@ module Fog
360
363
  ip_command_global=service_arg.ip_command.nil? ? 'grep $mac /var/log/arpwatch.log|sed -e "s/new station//"|sed -e "s/changed ethernet address//g" |sed -e "s/reused old ethernet //" |tail -1 |cut -d ":" -f 4-| cut -d " " -f 3' : service_arg.ip_command
361
364
  ip_command_local=options[:ip_command].nil? ? ip_command_global : options[:ip_command]
362
365
 
363
- ip_command="mac=#{mac}; server_name=#{name}; "+ip_command_local
366
+ ip_command="mac=#{mac}; server_name=#{name.gsub(DOMAIN_CLEANUP_REGEXP, '_')}; "+ip_command_local
364
367
 
365
368
  ip_address=nil
366
369
 
@@ -110,6 +110,13 @@
110
110
  <backend model='<%= rng_backend_model %>'/>
111
111
  <% end -%>
112
112
  </rng>
113
+ <% if arch == "s390x" -%>
114
+ <controller type="scsi" index="0" model="virtio-scsi"/>
115
+ <console type="pty">
116
+ <target type="sclp"/>
117
+ </console>
118
+ <memballoon model="virtio"/>
119
+ <% else -%>
113
120
  <serial type='pty'>
114
121
  <target port='0'/>
115
122
  </serial>
@@ -118,6 +125,7 @@
118
125
  </console>
119
126
  <input type='tablet' bus='usb'/>
120
127
  <input type='mouse' bus='ps2'/>
128
+ <% end -%>
121
129
  <%
122
130
  display_type = display[:type]
123
131
 
@@ -137,9 +145,11 @@ unless display[:password].empty?
137
145
  display_password = "passwd='#{display[:password]}'"
138
146
  end
139
147
  -%>
148
+ <% if arch != "s390x" -%>
140
149
  <graphics type='<%= display_type %>' port='<%= display_port %>' autoport='<%= autoport %>' <%= display_listen %> <%= display_password %> />
141
150
  <video>
142
151
  <model type='cirrus' vram='9216' heads='1'/>
143
152
  </video>
153
+ <% end -%>
144
154
  </devices>
145
155
  </domain>
@@ -5,8 +5,12 @@
5
5
  <target>
6
6
  <format type="<%= format_type %>"/>
7
7
  <permissions>
8
+ <% if owner -%>
8
9
  <owner><%= owner %></owner>
10
+ <% end -%>
11
+ <% if group -%>
9
12
  <group><%= group %></group>
13
+ <% end -%>
10
14
  <mode>0744</mode>
11
15
  <label>virt_image_t</label>
12
16
  </permissions>
@@ -108,8 +108,8 @@ module Fog
108
108
  :name => randomized_name,
109
109
  :capacity => "10G",
110
110
  :allocation => "1G",
111
- :owner => "0",
112
- :group => "0",
111
+ :owner => nil,
112
+ :group => nil,
113
113
  }
114
114
  end
115
115
 
@@ -31,7 +31,7 @@ module Fog
31
31
 
32
32
  begin
33
33
  bridge_name = net.bridge_name
34
- rescue Libvirt::Error
34
+ rescue ::Libvirt::Error
35
35
  bridge_name = ''
36
36
  end
37
37
 
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Libvirt
3
- VERSION = '0.8.0'
3
+ VERSION = '0.9.0'
4
4
  end
5
5
  end
@@ -32,7 +32,6 @@ class UserDataIsoTest < Minitest::Test
32
32
  end
33
33
 
34
34
  def test_volume_is_created_during_user_data_iso_generation
35
- iso_path = "iso_file_path"
36
35
  @server.stubs(:system).returns(true)
37
36
  Fog::Libvirt::Compute::Volumes.any_instance.expects(:create).
38
37
  with(has_entries(:name => @server.cloud_init_volume_name)).
@@ -43,7 +42,6 @@ class UserDataIsoTest < Minitest::Test
43
42
  end
44
43
 
45
44
  def test_volume_is_uploaded_during_user_data_iso_generation
46
- iso_path = "iso_file_path"
47
45
  @server.stubs(:system).returns(true)
48
46
  Fog::Libvirt::Compute::Volumes.any_instance.stubs(:create).returns(@compute.volumes.new)
49
47
  Fog::Libvirt::Compute::Volume.any_instance.expects(:upload_image).returns(true)
@@ -52,7 +50,6 @@ class UserDataIsoTest < Minitest::Test
52
50
  end
53
51
 
54
52
  def test_iso_file_is_set_during_user_data_iso_generation
55
- iso_path = "iso_file_path"
56
53
  @server.stubs(:system).returns(true)
57
54
  Fog::Libvirt::Compute::Volumes.any_instance.stubs(:create).returns(@compute.volumes.new)
58
55
  Fog::Libvirt::Compute::Volume.any_instance.stubs(:upload_image)
@@ -1,5 +1,5 @@
1
1
  require 'minitest/autorun'
2
- require 'mocha/mini_test'
2
+ require 'mocha/minitest'
3
3
  require 'fileutils'
4
4
 
5
5
  $: << File.join(File.dirname(__FILE__), '..', 'lib')
data/tests/helper.rb CHANGED
@@ -3,7 +3,7 @@ ENV['FOG_CREDENTIAL'] = ENV['FOG_CREDENTIAL'] || 'default'
3
3
 
4
4
  require 'fog/libvirt'
5
5
 
6
- Excon.defaults.merge!(:debug_request => true, :debug_response => true)
6
+ Excon.defaults.merge!(debug_request: true, debug_response: true)
7
7
 
8
8
  require File.expand_path(File.join(File.dirname(__FILE__), 'helpers', 'mock_helper'))
9
9
 
@@ -1,4 +1,6 @@
1
- require "fog/schema/data_validator"
1
+ # frozen_string_literal: true
2
+
3
+ require 'fog/schema/data_validator'
2
4
 
3
5
  # format related hackery
4
6
  # allows both true.is_a?(Fog::Boolean) and false.is_a?(Fog::Boolean)
@@ -15,62 +17,62 @@ module Fog
15
17
  module Array; end
16
18
  end
17
19
  end
18
- [FalseClass, TrueClass].each {|klass| klass.send(:include, Fog::Boolean)}
19
- [FalseClass, TrueClass, NilClass, Fog::Boolean].each {|klass| klass.send(:include, Fog::Nullable::Boolean)}
20
- [NilClass, String].each {|klass| klass.send(:include, Fog::Nullable::String)}
21
- [NilClass, Time].each {|klass| klass.send(:include, Fog::Nullable::Time)}
22
- [Integer, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Integer)}
23
- [Float, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Float)}
24
- [Hash, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Hash)}
25
- [Array, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Array)}
20
+ [FalseClass, TrueClass].each { |klass| klass.send(:include, Fog::Boolean) }
21
+ [FalseClass, TrueClass, NilClass, Fog::Boolean].each { |klass| klass.send(:include, Fog::Nullable::Boolean) }
22
+ [NilClass, String].each { |klass| klass.send(:include, Fog::Nullable::String) }
23
+ [NilClass, Time].each { |klass| klass.send(:include, Fog::Nullable::Time) }
24
+ [Integer, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Integer) }
25
+ [Float, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Float) }
26
+ [Hash, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Hash) }
27
+ [Array, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Array) }
26
28
 
27
29
  module Shindo
30
+ # Generates a Shindo test that compares a hash schema to the result
31
+ # of the passed in block returning true if they match.
32
+ #
33
+ # The schema that is passed in is a Hash or Array of hashes that
34
+ # have Classes in place of values. When checking the schema the
35
+ # value should match the Class.
36
+ #
37
+ # Strict mode will fail if the data has additional keys. Setting
38
+ # +strict+ to +false+ will allow additional keys to appear.
39
+ #
40
+ # @param [Hash] schema A Hash schema
41
+ # @param [Hash] options Options to change validation rules
42
+ # @option options [Boolean] :allow_extra_keys
43
+ # If +true+ does not fail when keys are in the data that are
44
+ # not specified in the schema. This allows new values to
45
+ # appear in API output without breaking the check.
46
+ # @option options [Boolean] :allow_optional_rules
47
+ # If +true+ does not fail if extra keys are in the schema
48
+ # that do not match the data. Not recommended!
49
+ # @yield Data to check with schema
50
+ #
51
+ # @example Using in a test
52
+ # Shindo.tests("comparing welcome data against schema") do
53
+ # data = {:welcome => "Hello" }
54
+ # data_matches_schema(:welcome => String) { data }
55
+ # end
56
+ #
57
+ # comparing welcome data against schema
58
+ # + data matches schema
59
+ #
60
+ # @example Example schema
61
+ # {
62
+ # "id" => String,
63
+ # "ram" => Integer,
64
+ # "disks" => [
65
+ # {
66
+ # "size" => Float
67
+ # }
68
+ # ],
69
+ # "dns_name" => Fog::Nullable::String,
70
+ # "active" => Fog::Boolean,
71
+ # "created" => DateTime
72
+ # }
73
+ #
74
+ # @return [Boolean]
28
75
  class Tests
29
- # Generates a Shindo test that compares a hash schema to the result
30
- # of the passed in block returning true if they match.
31
- #
32
- # The schema that is passed in is a Hash or Array of hashes that
33
- # have Classes in place of values. When checking the schema the
34
- # value should match the Class.
35
- #
36
- # Strict mode will fail if the data has additional keys. Setting
37
- # +strict+ to +false+ will allow additional keys to appear.
38
- #
39
- # @param [Hash] schema A Hash schema
40
- # @param [Hash] options Options to change validation rules
41
- # @option options [Boolean] :allow_extra_keys
42
- # If +true+ does not fail when keys are in the data that are
43
- # not specified in the schema. This allows new values to
44
- # appear in API output without breaking the check.
45
- # @option options [Boolean] :allow_optional_rules
46
- # If +true+ does not fail if extra keys are in the schema
47
- # that do not match the data. Not recommended!
48
- # @yield Data to check with schema
49
- #
50
- # @example Using in a test
51
- # Shindo.tests("comparing welcome data against schema") do
52
- # data = {:welcome => "Hello" }
53
- # data_matches_schema(:welcome => String) { data }
54
- # end
55
- #
56
- # comparing welcome data against schema
57
- # + data matches schema
58
- #
59
- # @example Example schema
60
- # {
61
- # "id" => String,
62
- # "ram" => Integer,
63
- # "disks" => [
64
- # {
65
- # "size" => Float
66
- # }
67
- # ],
68
- # "dns_name" => Fog::Nullable::String,
69
- # "active" => Fog::Boolean,
70
- # "created" => DateTime
71
- # }
72
- #
73
- # @return [Boolean]
74
76
  def data_matches_schema(schema, options = {})
75
77
  test('data matches schema') do
76
78
  validator = Fog::Schema::DataValidator.new
@@ -84,9 +86,9 @@ module Shindo
84
86
  def formats(format, strict = true)
85
87
  test('has proper format') do
86
88
  if strict
87
- options = {:allow_extra_keys => false, :allow_optional_rules => true}
89
+ options = { allow_extra_keys: false, allow_optional_rules: true }
88
90
  else
89
- options = {:allow_extra_keys => true, :allow_optional_rules => true}
91
+ options = { allow_extra_keys: true, allow_optional_rules: true }
90
92
  end
91
93
  validator = Fog::Schema::DataValidator.new
92
94
  valid = validator.validate(yield, format, options)
@@ -1,37 +1,37 @@
1
1
  Shindo.tests('test_helper', 'meta') do
2
2
 
3
3
  tests('comparing welcome data against schema') do
4
- data = {:welcome => "Hello" }
5
- data_matches_schema(:welcome => String) { data }
4
+ data = { welcome: 'Hello' }
5
+ data_matches_schema(welcome: String) { data }
6
6
  end
7
7
 
8
8
  tests('#data_matches_schema') do
9
9
  tests('when value matches schema expectation') do
10
- data_matches_schema({"key" => String}) { {"key" => "Value"} }
10
+ data_matches_schema('key' => String) { { 'key' => 'Value' } }
11
11
  end
12
12
 
13
13
  tests('when values within an array all match schema expectation') do
14
- data_matches_schema({"key" => [Integer]}) { {"key" => [1, 2]} }
14
+ data_matches_schema('key' => [Integer]) { { 'key' => [1, 2] } }
15
15
  end
16
16
 
17
17
  tests('when nested values match schema expectation') do
18
- data_matches_schema({"key" => {:nested_key => String}}) { {"key" => {:nested_key => "Value"}} }
18
+ data_matches_schema('key' => { nested_key: String }) { { 'key' => { nested_key: 'Value' } } }
19
19
  end
20
20
 
21
21
  tests('when collection of values all match schema expectation') do
22
- data_matches_schema([{"key" => String}]) { [{"key" => "Value"}, {"key" => "Value"}] }
22
+ data_matches_schema([{ 'key' => String }]) { [{ 'key' => 'Value' }, { 'key' => 'Value' }] }
23
23
  end
24
24
 
25
25
  tests('when collection is empty although schema covers optional members') do
26
- data_matches_schema([{"key" => String}], {:allow_optional_rules => true}) { [] }
26
+ data_matches_schema([{ 'key' => String }], allow_optional_rules: true) { [] }
27
27
  end
28
28
 
29
29
  tests('when additional keys are passed and not strict') do
30
- data_matches_schema({"key" => String}, {:allow_extra_keys => true}) { {"key" => "Value", :extra => "Bonus"} }
30
+ data_matches_schema({ 'key' => String }, allow_extra_keys: true) { { 'key' => 'Value', extra: 'Bonus' } }
31
31
  end
32
32
 
33
33
  tests('when value is nil and schema expects NilClass') do
34
- data_matches_schema({"key" => NilClass}) { {"key" => nil} }
34
+ data_matches_schema('key' => NilClass) { { 'key' => nil } }
35
35
  end
36
36
 
37
37
  tests('when value and schema match as hashes') do
@@ -43,46 +43,45 @@ Shindo.tests('test_helper', 'meta') do
43
43
  end
44
44
 
45
45
  tests('when value is a Time') do
46
- data_matches_schema({"time" => Time}) { {"time" => Time.now} }
46
+ data_matches_schema('time' => Time) { { 'time' => Time.now } }
47
47
  end
48
48
 
49
49
  tests('when key is missing but value should be NilClass (#1477)') do
50
- data_matches_schema({"key" => NilClass}, {:allow_optional_rules => true}) { {} }
50
+ data_matches_schema({ 'key' => NilClass }, allow_optional_rules: true) { {} }
51
51
  end
52
52
 
53
53
  tests('when key is missing but value is nullable (#1477)') do
54
- data_matches_schema({"key" => Fog::Nullable::String}, {:allow_optional_rules => true}) { {} }
54
+ data_matches_schema({ 'key' => Fog::Nullable::String }, allow_optional_rules: true) { {} }
55
55
  end
56
56
  end
57
57
 
58
58
  tests('#formats backwards compatible changes') do
59
-
60
59
  tests('when value matches schema expectation') do
61
- formats({"key" => String}) { {"key" => "Value"} }
60
+ formats('key' => String) { { 'key' => 'Value' } }
62
61
  end
63
62
 
64
63
  tests('when values within an array all match schema expectation') do
65
- formats({"key" => [Integer]}) { {"key" => [1, 2]} }
64
+ formats('key' => [Integer]) { { 'key' => [1, 2] } }
66
65
  end
67
66
 
68
67
  tests('when nested values match schema expectation') do
69
- formats({"key" => {:nested_key => String}}) { {"key" => {:nested_key => "Value"}} }
68
+ formats('key' => { nested_key: String }) { { 'key' => { nested_key: 'Value' } } }
70
69
  end
71
70
 
72
71
  tests('when collection of values all match schema expectation') do
73
- formats([{"key" => String}]) { [{"key" => "Value"}, {"key" => "Value"}] }
72
+ formats([{ 'key' => String }]) { [{ 'key' => 'Value' }, { 'key' => 'Value' }] }
74
73
  end
75
74
 
76
75
  tests('when collection is empty although schema covers optional members') do
77
- formats([{"key" => String}]) { [] }
76
+ formats([{ 'key' => String }]) { [] }
78
77
  end
79
78
 
80
79
  tests('when additional keys are passed and not strict') do
81
- formats({"key" => String}, false) { {"key" => "Value", :extra => "Bonus"} }
80
+ formats({ 'key' => String }, false) { { 'key' => 'Value', :extra => 'Bonus' } }
82
81
  end
83
82
 
84
83
  tests('when value is nil and schema expects NilClass') do
85
- formats({"key" => NilClass}) { {"key" => nil} }
84
+ formats('key' => NilClass) { { 'key' => nil } }
86
85
  end
87
86
 
88
87
  tests('when value and schema match as hashes') do
@@ -94,17 +93,15 @@ Shindo.tests('test_helper', 'meta') do
94
93
  end
95
94
 
96
95
  tests('when value is a Time') do
97
- formats({"time" => Time}) { {"time" => Time.now} }
96
+ formats('time' => Time) { { 'time' => Time.now } }
98
97
  end
99
98
 
100
99
  tests('when key is missing but value should be NilClass (#1477)') do
101
- formats({"key" => NilClass}) { {} }
100
+ formats('key' => NilClass) { {} }
102
101
  end
103
102
 
104
103
  tests('when key is missing but value is nullable (#1477)') do
105
- formats({"key" => Fog::Nullable::String}) { {} }
104
+ formats('key' => Fog::Nullable::String) { {} }
106
105
  end
107
-
108
106
  end
109
-
110
107
  end
@@ -9,6 +9,6 @@ end
9
9
  # if in mocked mode, fill in some fake credentials for us
10
10
  if Fog.mock?
11
11
  Fog.credentials = {
12
- :libvirt_uri => 'qemu://libvirt/system',
12
+ libvirt_uri: 'qemu://libvirt/system',
13
13
  }.merge(Fog.credentials)
14
14
  end
@@ -1,8 +1,8 @@
1
1
  module Shindo
2
2
  class Tests
3
- def succeeds
3
+ def succeeds(&block)
4
4
  test('succeeds') do
5
- !!instance_eval(&Proc.new)
5
+ !instance_eval(&Proc.new(&block)).nil?
6
6
  end
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-libvirt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - geemus (Wesley Beary)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-09 00:00:00.000000000 Z
11
+ date: 2021-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog-core
@@ -212,14 +212,14 @@ dependencies:
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: 1.1.0
215
+ version: 1.13.0
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: 1.1.0
222
+ version: 1.13.0
223
223
  description: This library can be used as a module for 'fog' or as standalone libvirt
224
224
  provider.
225
225
  email: geemus@gmail.com
@@ -321,14 +321,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
321
321
  requirements:
322
322
  - - ">="
323
323
  - !ruby/object:Gem::Version
324
- version: 2.0.0
324
+ version: 2.5.0
325
325
  required_rubygems_version: !ruby/object:Gem::Requirement
326
326
  requirements:
327
327
  - - ">="
328
328
  - !ruby/object:Gem::Version
329
329
  version: '0'
330
330
  requirements: []
331
- rubygems_version: 3.1.4
331
+ rubygems_version: 3.2.15
332
332
  signing_key:
333
333
  specification_version: 2
334
334
  summary: Module for the 'fog' gem to support libvirt