fog-ovirt 1.1.1 → 1.1.2

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
  SHA1:
3
- metadata.gz: 0db74060b4baf3e164228414dea50eee4b190456
4
- data.tar.gz: 37ac7fce1061b02648cf17b1650f8266ab264a0f
3
+ metadata.gz: 88ead8cc94b6a7acb2e54a922633619a62e86d54
4
+ data.tar.gz: 2ced4f951fa5a6950bdf854bbae056437410e26f
5
5
  SHA512:
6
- metadata.gz: cc1bdbba0adf313e68d6e2278cb8d0bbe642f6ec5b708c7ed649e028c3202867394696418a36cee09958207d24c603765e91d40ab70cb1aac40c8bc2f659acf6
7
- data.tar.gz: 9aa2938661ac3506c0f84e85de7fe1c1ca9914d5598dc85e7d2b32e3e1f6b2854a74e1313a400abf4f262a1dcb87bb1d9fff678acad3cf71f7bcfced78fdefb2
6
+ metadata.gz: f8ab39302130b3697d45fc13dfd8693f2b58e00b28d15386654e8e7551633bb8c644bb7fe5c525bb6059620b1b9ecb4ea43c2c9b4681210e1aaaf1b9caefbd59
7
+ data.tar.gz: c2fe9a22bd7f3821cb226d3afa92eb39c5cdf1ead6d5886d0a49a46745b18eb0e18776d05c015100419995c0b56ff7d14aefc529b4cb08acfb9c3c7d6b1941c3
data/README.md CHANGED
@@ -46,7 +46,7 @@ Version 1.0.2 adds support API V4 as well.
46
46
  The first version does not give full support.
47
47
  The supported requests for API V4 are:
48
48
 
49
- :vm_action, :destroy_vm, :create_vm
49
+ :vm_action, :destroy_vm, :create_vm, :update_vm (without os changes)
50
50
  :datacenters
51
51
  :storage_domains
52
52
  :list_virtual_machines, :get_virtual_machine
@@ -56,7 +56,7 @@ module Fog
56
56
  end
57
57
 
58
58
  if key == :provisioned_size
59
- opts[:size] = value
59
+ opts[:size] = value.to_s
60
60
  next
61
61
  end
62
62
 
@@ -148,7 +148,6 @@ module Fog
148
148
  :username => username,
149
149
  :password => password
150
150
  }
151
-
152
151
  @datacenter = options[:ovirt_datacenter]
153
152
  connection_opts[:ca_file] = options[:ca_file]
154
153
  connection_opts[:ca_certs] = [OpenSSL::X509::Certificate.new(options[:public_key])] if options[:public_key].present?
@@ -167,6 +166,7 @@ module Fog
167
166
  end
168
167
 
169
168
  def datacenter_hash
169
+ @datacenter_hash ||= datacenters.find { |x| x[:id] == @datacenter } if @datacenter
170
170
  @datacenter_hash ||= datacenters.first
171
171
  end
172
172
 
@@ -174,6 +174,13 @@ module Fog
174
174
  @blank_template ||= client.system_service.get.special_objects.blank_template
175
175
  end
176
176
 
177
+ def create_search_by_datacenter(search:, datacenter:, page: nil)
178
+ search ||= ""
179
+ search += " datacenter=#{datacenter}" if datacenter
180
+ search += " page #{page}" if page
181
+ search
182
+ end
183
+
177
184
  private
178
185
 
179
186
  attr_reader :client
@@ -13,11 +13,11 @@ module Fog
13
13
  disk_attachments_service.add(disk)
14
14
  end
15
15
 
16
- # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
16
+ # rubocop:disable Metrics/AbcSize
17
17
  def add_options_defaults(options)
18
18
  options = options.dup
19
19
  search = options[:search] || format("datacenter=%<datacenter>s", :datacenter => datacenter)
20
- options[:bootable] ||= "true"
20
+ options[:bootable] = options.delete(:bootable) == "true"
21
21
  options[:interface] ||= OvirtSDK4::DiskInterface::VIRTIO
22
22
  options[:provisioned_size] = options[:size_gb].to_i * Fog::Compute::Ovirt::DISK_SIZE_TO_GB if options[:size_gb]
23
23
 
@@ -32,12 +32,12 @@ module Fog
32
32
  options[:disk] ||= {}
33
33
  options[:disk][:storage_domains] ||= [client.system_service.storage_domains_service.storage_domain_service(options[:storage_domain_id]).get]
34
34
  options[:disk][:provisioned_size] ||= options.delete(:provisioned_size)
35
- options[:disk][:type] ||= options.delete(:type)
36
35
  options[:disk][:format] ||= options.delete(:format)
37
- options[:disk][:sparse] = options.delete(:sparse) unless options[:disk][:sparse].present?
36
+ options[:disk][:sparse] ||= options.delete(:sparse) == "true"
37
+ options[:disk][:wipe_after_delete] ||= options.delete(:wipe_after_delete) == "true"
38
38
  options
39
39
  end
40
- # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
40
+ # rubocop:enable Metrics/AbcSize
41
41
  end
42
42
 
43
43
  class Mock
@@ -24,7 +24,7 @@ module Fog
24
24
  end
25
25
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
26
26
 
27
- # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
27
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
28
28
  def create_vm(attrs)
29
29
  attrs = attrs.dup
30
30
 
@@ -44,11 +44,12 @@ module Fog
44
44
  vms_service = client.system_service.vms_service
45
45
  attrs[:instance_type] = attrs[:instance_type].present? ? client.system_service.instance_types_service.instance_type_service(attrs[:instance_type]).get : nil
46
46
 
47
- attrs[:template] = if attrs[:template].present?
48
- client.system_service.templates_service.template_service(attrs[:template]).get
49
- else
50
- client.system_service.get.special_objects.blank_template
51
- end
47
+ if attrs[:template].present?
48
+ attrs[:template] = client.system_service.templates_service.template_service(attrs[:template]).get
49
+ else
50
+ attrs[:template] = client.system_service.get.special_objects.blank_template
51
+ update_os_attrs(attrs)
52
+ end
52
53
 
53
54
  attrs[:comment] ||= ""
54
55
  attrs[:quota] = attrs[:quota].present? ? client.system_service.data_centers_service.data_center_service(datacenter).quotas_service.quota_service(attrs[:quota]).get : nil
@@ -56,15 +57,26 @@ module Fog
56
57
  cpu_topology = OvirtSDK4::CpuTopology.new(:cores => attrs.fetch(:cores, "1"), :sockets => attrs.fetch(:sockets, "1"))
57
58
  attrs[:cpu] = OvirtSDK4::Cpu.new(:topology => cpu_topology)
58
59
  end
59
-
60
60
  attrs[:memory_policy] = OvirtSDK4::MemoryPolicy.new(:guaranteed => attrs[:memory]) if attrs[:memory].to_i < Fog::Compute::Ovirt::DISK_SIZE_TO_GB
61
+ attrs[:high_availability] = OvirtSDK4::HighAvailability.new(:enabled => attrs[:ha] == "1") if attrs[:ha].present?
61
62
 
62
63
  # TODO: handle cloning from template
63
64
  process_vm_opts(attrs)
64
65
  new_vm = OvirtSDK4::Vm.new(attrs)
65
66
  vms_service.add(new_vm)
66
67
  end
67
- # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
68
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
69
+
70
+ # rubocop:disable Metrics/AbcSize
71
+ def update_os_attrs(attrs)
72
+ attrs[:os] ||= {}
73
+ attrs[:os][:type] ||= "Other OS"
74
+ attrs[:os][:boot] ||= [attrs.fetch(:boot_dev1, OvirtSDK4::BootDevice::NETWORK), attrs.fetch(:boot_dev2, OvirtSDK4::BootDevice::HD)]
75
+ attrs[:os][:boot] = attrs[:os][:boot].without(attrs["first_boot_dev"]).prepend(attrs["first_boot_dev"]) if attrs["first_boot_dev"]
76
+
77
+ attrs[:os] = OvirtSDK4::OperatingSystem.new(:type => attrs[:os][:type], :boot => OvirtSDK4::Boot.new(:devices => attrs[:os][:boot]))
78
+ end
79
+ # rubocop:enable Metrics/AbcSize
68
80
  end
69
81
 
70
82
  class Mock
@@ -3,8 +3,9 @@ module Fog
3
3
  class Ovirt
4
4
  class V4
5
5
  class Real
6
- def list_clusters(filters = {})
7
- client.system_service.clusters_service.list(filters).map { |ovirt_obj| ovirt_attrs ovirt_obj }
6
+ def list_clusters(opts = {})
7
+ opts[:search] = create_search_by_datacenter(:search => opts[:search], :datacenter => datacenter_hash[:name])
8
+ client.system_service.clusters_service.list(opts).map { |ovirt_obj| ovirt_attrs(ovirt_obj) }
8
9
  end
9
10
  end
10
11
  class Mock
@@ -7,10 +7,8 @@ module Fog
7
7
  filters = filters.dup
8
8
  page = filters.delete(:page)
9
9
  without_details = filters.delete(:without_details)
10
-
11
10
  filters[:all_content] = true unless without_details
12
- filters[:search] ||= ""
13
- filters[:search] += " page #{page}"
11
+ filters[:search] = create_search_by_datacenter(:search => filters[:search], :datacenter => datacenter_hash[:name], :page => page)
14
12
  client.system_service.vms_service.list(filters).map { |ovirt_obj| ovirt_attrs ovirt_obj }
15
13
  end
16
14
  end
@@ -3,18 +3,22 @@ module Fog
3
3
  class Ovirt
4
4
  class V4
5
5
  class Real
6
+ # rubocop:disable Metrics/AbcSize
6
7
  def list_vm_volumes(vm_id)
7
- # disk_attachments_service = client.system_service.vms_service.vm_service(vm_id).disk_attachments_service
8
- # disk_attachments_service.list.map {|ovirt_obj| ovirt_attrs client.system_service.disks_service.disk_service(ovirt_obj.id).get}
9
-
10
8
  vm = client.system_service.vms_service.vm_service(vm_id).get
11
-
12
9
  attachments = client.follow_link(vm.disk_attachments)
13
-
14
10
  attachments.map do |attachment|
15
- ovirt_attrs client.follow_link(attachment.disk)
11
+ attachment_disk = client.follow_link(attachment.disk)
12
+ attachment = client.follow_link(attachment)
13
+ bootable = attachment.bootable
14
+ interface = attachment.interface
15
+ attachment_disk.bootable = bootable if attachment_disk.bootable.nil?
16
+ attachment_disk.interface = interface if attachment_disk.interface.nil?
17
+ attachment_disk.storage_domain = attachment_disk.storage_domains[0].id
18
+ ovirt_attrs attachment_disk
16
19
  end
17
20
  end
21
+ # rubocop:enable Metrics/AbcSize
18
22
  end
19
23
  class Mock
20
24
  def list_vm_volumes(_vm_id)
@@ -25,7 +25,7 @@ module Fog
25
25
  wrap_attribute(attrs, :host, OvirtSDK4::Host)
26
26
  wrap_attribute(attrs, :quota, OvirtSDK4::Quota)
27
27
  wrap_attribute(attrs, :instance_type, OvirtSDK4::InstanceType)
28
- attrs[:high_availability] = OvirtSDK4::HighAvailability.new(:enabled => attrs[:ha]) unless attrs[:ha].nil?
28
+ attrs[:high_availability] = OvirtSDK4::HighAvailability.new(:enabled => attrs[:ha] == "1") if attrs[:ha].present?
29
29
  attrs[:original_template] = if attrs[:original_template].present?
30
30
  OvirtSDK4::Template.new(:id => attrs[:original_template])
31
31
  else
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Ovirt
3
- VERSION = "1.1.1".freeze
3
+ VERSION = "1.1.2".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-ovirt
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ori Rabin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-12 00:00:00.000000000 Z
11
+ date: 2018-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog-core