fog-libvirt 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41b14c1f0524040fcbc157e504813ffe2514dbd3430c88909da1d531ec36c140
4
- data.tar.gz: c0fedd19c37d2e5a864336ac9a51f1c4de026f1c6f6120e186153afcbfc5792a
3
+ metadata.gz: f3f3d3db14311de4008b43186334103d78f393b03f30282fc6276c1c5f3a7bd3
4
+ data.tar.gz: acdeffc9be9ca8fa2d2fe5065616b9c7a14c4415b03359437500cfd7c47f63f0
5
5
  SHA512:
6
- metadata.gz: 584d715816d4ccea8933a43182288aa76f0c49d39f5358892c0e72e3c55c8649fe70092bf4e7046202e95e6e15e8a7de6ebcc07042b55fb1635c6168841adf29
7
- data.tar.gz: 61804dd8912bfdee1299275fe0961c0f36e3328233b65db9a23e9f21dd9843134c071c70562c7abec6643ba35b817201b25a9eea4787abaef0639e551ffd6fa9
6
+ metadata.gz: e0cb8dbd4c13fd8aa4540e8da830d5853b4507c87795edb3aeb03f644d68d895405e7ed804795b70cf0921fb3a54586f6c912ee67eb52abb4e8e7ee07212bfa6
7
+ data.tar.gz: 8e0f16895181fc4becbf81a3a08d215b39be6d77414425fd2238b696b313c9fd9931f23ce38af538f109d403e50aa4430fa674266050c3698f703331762cdec5
@@ -44,6 +44,7 @@ module Fog
44
44
  request :list_interfaces
45
45
  request :destroy_interface
46
46
  request :get_node_info
47
+ request :update_autostart
47
48
  request :update_display
48
49
  request :libversion
49
50
 
@@ -35,10 +35,13 @@ port=6789
35
35
  libvirt_ceph_pool=rbd_pool_name
36
36
  auth_username=libvirt
37
37
  auth_uuid=uuid_of_libvirt_secret
38
+ bus_type=virtio
38
39
  ```
39
40
  For more recent versions of libvirt which support using the secret by name (`usage` attribute in the `secret` tag),
40
41
  you can also drop `auth_uuid` and specify `auth_usage` instead. If both are specified, `auth_uuid` will be preferred for maximum compatibility.
41
42
 
43
+ The `bus_type` can be set to `virtio` or `scsi`. If it is ommited, the default is `scsi`.
44
+
42
45
  ## Configuration
43
46
 
44
47
  The URI can be configured in two ways:
@@ -30,6 +30,7 @@ module Fog
30
30
  attribute :cpu
31
31
  attribute :hugepages
32
32
  attribute :guest_agent
33
+ attribute :virtio_rng
33
34
 
34
35
  attribute :state
35
36
 
@@ -77,6 +78,10 @@ module Fog
77
78
  action_status
78
79
  end
79
80
 
81
+ def update_autostart(value)
82
+ service.update_autostart(uuid, value)
83
+ end
84
+
80
85
  def mac
81
86
  nics.first.mac if nics && nics.first
82
87
  end
@@ -131,9 +136,10 @@ module Fog
131
136
  end
132
137
 
133
138
  #alias methods
134
- alias_method :halt, :poweroff
135
- alias_method :stop, :shutdown
136
- alias_method :active?, :active
139
+ alias_method :halt, :poweroff
140
+ alias_method :stop, :shutdown
141
+ alias_method :active?, :active
142
+ alias_method :autostart?, :autostart
137
143
 
138
144
  def volumes
139
145
  # lazy loading of volumes
@@ -473,6 +479,7 @@ module Fog
473
479
  :os_type => "hvm",
474
480
  :arch => "x86_64",
475
481
  :domain_type => "kvm",
482
+ :autostart => false,
476
483
  :iso_dir => default_iso_dir,
477
484
  :network_interface_type => "network",
478
485
  :network_nat_network => "default",
@@ -482,6 +489,7 @@ module Fog
482
489
  :cpu => {},
483
490
  :hugepages => false,
484
491
  :guest_agent => true,
492
+ :virtio_rng => {},
485
493
  }
486
494
  end
487
495
 
@@ -52,9 +52,11 @@
52
52
  <disk type='network' device='disk'>
53
53
  <driver name='qemu' type='<%= vol.format_type %>' cache='writeback' discard='unmap'/>
54
54
  <source protocol='rbd' name='<%= vol.path %>'>
55
+ <% if args.key?("monitor") -%>
55
56
  <% args["monitor"].split(",").each do |mon| %>
56
57
  <host name='<%= mon %>' port='<%= args["port"] %>'/>
57
58
  <% end %>
59
+ <% end %>
58
60
  </source>
59
61
  <auth username='<%= args["auth_username"] %>'>
60
62
  <% if args.key?("auth_uuid") -%>
@@ -63,7 +65,11 @@
63
65
  <secret type='ceph' usage='<%= args["auth_usage"] %>'/>
64
66
  <% end -%>
65
67
  </auth>
66
- <target dev='sd<%= ('a'..'z').to_a[volumes.index(vol)] %>' bus='scsi'/>
68
+ <% if args['bus_type'] == 'virtio' %>
69
+ <target dev='vd<%= ('a'..'z').to_a[volumes.index(vol)] %>' bus='virtio'/>
70
+ <% else %>
71
+ <target dev='sd<%= ('a'..'z').to_a[volumes.index(vol)] %>' bus='scsi'/>
72
+ <% end %>
67
73
  </disk>
68
74
  <% else %>
69
75
  <disk type='file' device='disk'>
@@ -94,6 +100,16 @@
94
100
  <target type='virtio' name='org.qemu.guest_agent.0'/>
95
101
  </channel>
96
102
  <% end -%>
103
+ <rng model='virtio'>
104
+ <%
105
+ rng_backend_model = virtio_rng[:backend_model] ? virtio_rng[:backend_model] : 'random'
106
+ -%>
107
+ <% if virtio_rng[:backend_path] -%>
108
+ <backend model='<%= rng_backend_model %>'><%= virtio_rng[:backend_path] %></backend>
109
+ <% else -%>
110
+ <backend model='<%= rng_backend_model %>'/>
111
+ <% end -%>
112
+ </rng>
97
113
  <serial type='pty'>
98
114
  <target port='0'/>
99
115
  </serial>
@@ -25,12 +25,20 @@ module Fog
25
25
  end
26
26
  end
27
27
 
28
+ # bridge name may not be defined in some networks, we should skip that in such case
28
29
  def network_to_attributes(net)
29
30
  return if net.nil?
31
+
32
+ begin
33
+ bridge_name = net.bridge_name
34
+ rescue Libvirt::Error
35
+ bridge_name = ''
36
+ end
37
+
30
38
  {
31
39
  :uuid => net.uuid,
32
40
  :name => net.name,
33
- :bridge_name => net.bridge_name
41
+ :bridge_name => bridge_name
34
42
  }
35
43
  end
36
44
  end
@@ -17,7 +17,7 @@ module Fog
17
17
  end
18
18
  end
19
19
  else
20
- return [get_volume(filter)]
20
+ data << get_volume(filter)
21
21
  end
22
22
  data.compact
23
23
  end
@@ -69,7 +69,8 @@ module Fog
69
69
  return raw ? vol : volume_to_attributes(vol)
70
70
  end
71
71
  end
72
- { }
72
+
73
+ nil
73
74
  end
74
75
  end
75
76
 
@@ -77,15 +78,22 @@ module Fog
77
78
  def list_volumes(filters={ })
78
79
  vol1 = mock_volume 'vol1'
79
80
  vol2 = mock_volume 'vol2'
80
- [vol1, vol2]
81
+ vols = [vol1, vol2]
82
+
83
+ if filters.keys.empty?
84
+ return vols
85
+ end
86
+
87
+ key = filters.keys.first
88
+ vols.select { |v| v[key] == filters[key] }
81
89
  end
82
90
 
83
91
  def mock_volume name
84
92
  {
85
93
  :pool_name => 'vol.pool.name',
86
- :key => 'vol.key',
87
- :id => 'vol.key',
88
- :path => 'vol.path',
94
+ :key => "vol.#{name}", # needs to match id
95
+ :id => "vol.#{name}",
96
+ :path => "path/to/disk", # used by in mock_files/domain.xml
89
97
  :name => name,
90
98
  :format_type => 'raw',
91
99
  :allocation => 123,
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Libvirt
3
+ class Compute
4
+ class Real
5
+ def update_autostart(uuid, value)
6
+ domain = client.lookup_domain_by_uuid(uuid)
7
+ domain.autostart = value
8
+ end
9
+ end
10
+
11
+ class Mock
12
+ def update_autostart(uuid, value)
13
+ value
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Libvirt
3
- VERSION = '0.7.0'
3
+ VERSION = '0.8.0'
4
4
  end
5
5
  end
@@ -9,7 +9,8 @@ Shindo.tests('Fog::Compute[:libvirt]', ['libvirt']) do
9
9
  end
10
10
 
11
11
  tests("Compute requests") do
12
- %w{ create_domain create_volume define_domain define_pool destroy_interface destroy_network get_node_info list_domains
12
+ %w{ create_domain create_volume define_domain define_pool destroy_interface destroy_network get_node_info
13
+ update_autostart list_domains
13
14
  list_interfaces list_networks list_pools list_pool_volumes list_volumes pool_action vm_action volume_action
14
15
  dhcp_leases }.each do |request|
15
16
  test("it should respond to #{request}") { compute.respond_to? request }
@@ -5,6 +5,8 @@ Shindo.tests('Fog::Compute[:libvirt] | server model', ['libvirt']) do
5
5
 
6
6
  tests('The server model should') do
7
7
  tests('have the action') do
8
+ test('autostart') { server.respond_to? 'autostart' }
9
+ test('update_autostart') { server.respond_to? 'update_autostart' }
8
10
  test('reload') { server.respond_to? 'reload' }
9
11
  %w{ start stop destroy reboot suspend }.each do |action|
10
12
  test(action) { server.respond_to? action }
@@ -9,6 +9,7 @@ Shindo.tests('Fog::Compute[:libvirt] | volumes collection', ['libvirt']) do
9
9
  tests('should be able to get a model') do
10
10
  tests('by instance uuid').succeeds { volumes.get volumes.first.id }
11
11
  end
12
+ test('filtered should be empty') { volumes.all(:name => "does-not-exist").empty? }
12
13
  end
13
14
 
14
15
  end
@@ -0,0 +1,12 @@
1
+ Shindo.tests('Fog::Compute[:libvirt] | update_autostart request', ['libvirt']) do
2
+
3
+ servers = Fog::Compute[:libvirt].servers
4
+
5
+ tests('The response should') do
6
+ test('should not be empty') { not servers.empty? }
7
+ server = servers.first
8
+ tests('should be false').succeeds { server.autostart == false }
9
+ server.update_autostart(true)
10
+ end
11
+
12
+ 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.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - geemus (Wesley Beary)
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-28 00:00:00.000000000 Z
11
+ date: 2021-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog-core
@@ -276,6 +276,7 @@ files:
276
276
  - lib/fog/libvirt/requests/compute/list_volumes.rb
277
277
  - lib/fog/libvirt/requests/compute/mock_files/domain.xml
278
278
  - lib/fog/libvirt/requests/compute/pool_action.rb
279
+ - lib/fog/libvirt/requests/compute/update_autostart.rb
279
280
  - lib/fog/libvirt/requests/compute/update_display.rb
280
281
  - lib/fog/libvirt/requests/compute/upload_volume.rb
281
282
  - lib/fog/libvirt/requests/compute/vm_action.rb
@@ -305,12 +306,13 @@ files:
305
306
  - tests/libvirt/requests/compute/create_domain_tests.rb
306
307
  - tests/libvirt/requests/compute/define_domain_tests.rb
307
308
  - tests/libvirt/requests/compute/dhcp_leases_tests.rb
309
+ - tests/libvirt/requests/compute/update_autostart_tests.rb
308
310
  - tests/libvirt/requests/compute/update_display.rb
309
311
  homepage: http://github.com/fog/fog-libvirt
310
312
  licenses:
311
313
  - MIT
312
314
  metadata: {}
313
- post_install_message:
315
+ post_install_message:
314
316
  rdoc_options:
315
317
  - "--charset=UTF-8"
316
318
  require_paths:
@@ -326,8 +328,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
326
328
  - !ruby/object:Gem::Version
327
329
  version: '0'
328
330
  requirements: []
329
- rubygems_version: 3.0.3
330
- signing_key:
331
+ rubygems_version: 3.1.4
332
+ signing_key:
331
333
  specification_version: 2
332
334
  summary: Module for the 'fog' gem to support libvirt
333
335
  test_files:
@@ -352,4 +354,5 @@ test_files:
352
354
  - tests/libvirt/requests/compute/create_domain_tests.rb
353
355
  - tests/libvirt/requests/compute/define_domain_tests.rb
354
356
  - tests/libvirt/requests/compute/dhcp_leases_tests.rb
357
+ - tests/libvirt/requests/compute/update_autostart_tests.rb
355
358
  - tests/libvirt/requests/compute/update_display.rb