fog-ovirt 1.1.1 → 1.1.2

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
  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