fog-vsphere 1.8.0 → 1.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
  SHA1:
3
- metadata.gz: 6d2a460b175971c18ddb06c47d33cc5e4d5a099e
4
- data.tar.gz: f62a8ae39ab07aac91a035a62ab5c3bdbfe896fd
3
+ metadata.gz: 6be1e2a1637899ea613c7b58dbab33a4414d252e
4
+ data.tar.gz: c52b5f6072294919ff343ce384213b6ef2eb04b2
5
5
  SHA512:
6
- metadata.gz: 29a92d9093e495a578fe28dffc698fa3c0f6cb8288f2470abceb4dc0becde7233a909b8004a22bab7db880191019f595ff457431ad8d6baf5e43bd0f8f17d993
7
- data.tar.gz: cf4faa5926d2f6572faafc2cb2da2e65dcf3cb6185062f66d10cc8cf29d0e3035e5fdef8161bb6f0c0fc9710bae66237be63271134a22685af12e38fe8fa49fe
6
+ metadata.gz: 07c537deccc790717d3166a6de38eba43338e7c59ea12d5073bcf4c2090cb7f4f1f094669d8d262de3c412a83b6f05d59f7940fc725dd54c76361da436206a2b
7
+ data.tar.gz: 010e3c52e24594f2088f5649145cae621a2aa874250680f48d92815a568017016e73b979f55357e841355bc68595fbc095d9b339d5366659d4181d2d2958a18e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## v1.9.0
2
+
3
+ * Add :connectable option to `update_vm_interface`
4
+ * Add ability to detach volume from VM
5
+
1
6
  ## v1.8.0
2
7
 
3
8
  * Add `suspend` to server model
@@ -36,6 +36,14 @@ module Fog
36
36
  name
37
37
  end
38
38
 
39
+ def detach
40
+ requires :server_id, :key, :unit_number
41
+
42
+ service.remove_vm_volume(self)
43
+ server.volumes -= [self]
44
+ true
45
+ end
46
+
39
47
  def destroy
40
48
  requires :server_id, :key, :unit_number
41
49
 
@@ -102,7 +102,7 @@ module Fog
102
102
  end
103
103
 
104
104
  if (disks = attributes[:volumes])
105
- devices << disks.map { |disk| create_disk(disk, :add, get_storage_pod(attributes)) }
105
+ devices << disks.map { |disk| create_disk(disk, :add, storage_pod: get_storage_pod(attributes)) }
106
106
  end
107
107
 
108
108
  if (cdroms = attributes[:cdroms])
@@ -230,9 +230,9 @@ module Fog
230
230
  end
231
231
  end
232
232
 
233
- def create_disk(disk, operation = :add, storage_pod = nil)
233
+ def create_disk(disk, operation = :add, options = {})
234
234
  # If we deploy the vm on a storage pod, datastore has to be an empty string
235
- if storage_pod
235
+ if options[:storage_pod]
236
236
  datastore = ''
237
237
  else
238
238
  datastore = "[#{disk.datastore}]"
@@ -243,11 +243,10 @@ module Fog
243
243
 
244
244
  payload = {
245
245
  :operation => operation,
246
- :fileOperation => operation == :add ? :create : :destroy,
247
246
  :device => RbVmomi::VIM.VirtualDisk(
248
247
  :key => disk.key,
249
248
  :backing => RbVmomi::VIM.VirtualDiskFlatVer2BackingInfo(
250
- :fileName => datastore,
249
+ :fileName => options[:filename] || datastore,
251
250
  :diskMode => disk.mode.to_sym,
252
251
  :thinProvisioned => disk.thin
253
252
  ),
@@ -256,6 +255,8 @@ module Fog
256
255
  :capacityInKB => disk.size
257
256
  )
258
257
  }
258
+ file_operation = options[:file_operation] || (:create if operation == :add)
259
+ payload[:fileOperation] = file_operation if file_operation
259
260
 
260
261
  if operation == :add && disk.thin == 'false' && disk.eager_zero == 'true'
261
262
  payload[:device][:backing][:eagerlyScrub] = disk.eager_zero
@@ -26,15 +26,16 @@ module Fog
26
26
  backing = create_nic_backing(interface, {})
27
27
  raw_interface.backing = backing
28
28
  end
29
+ apply_options_to_raw_interface(raw_interface, options)
29
30
  spec = {
30
31
  operation: :edit,
31
32
  device: raw_interface
32
- }
33
+ }
33
34
  vm_reconfig_hardware('instance_uuid' => vmid, 'hardware_spec' => {'deviceChange'=>[spec]})
34
35
  end
35
36
 
36
37
  private
37
-
38
+
38
39
  def get_interface_from_options(vmid, options)
39
40
  if options and options[:interface]
40
41
  options[:interface]
@@ -50,6 +51,15 @@ module Fog
50
51
  raise ArgumentError, "interface is a required parameter or pass options with type and network"
51
52
  end
52
53
  end
54
+
55
+ def apply_options_to_raw_interface(raw_interface, options)
56
+ if options[:connectable]
57
+ options[:connectable].each do |key, value|
58
+ raw_interface.connectable.send("#{key}=", value)
59
+ end
60
+ end
61
+ raw_interface
62
+ end
53
63
  end
54
64
 
55
65
  class Mock
@@ -64,7 +74,7 @@ module Fog
64
74
  raise ArgumentError, "interface is a required parameter" unless options and options[:interface]
65
75
  true
66
76
  end
67
-
77
+
68
78
  def update_vm_interface(vmid, options = {})
69
79
  return unless options[:interface]
70
80
  options[:interface].network = options[:network]
@@ -6,9 +6,15 @@ module Fog
6
6
  vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {'deviceChange'=>[create_disk(volume, :add)]})
7
7
  end
8
8
 
9
- def destroy_vm_volume(volume)
9
+ def remove_vm_volume(volume)
10
10
  vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {'deviceChange'=>[create_disk(volume, :remove)]})
11
11
  end
12
+
13
+ def destroy_vm_volume(volume)
14
+ vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {
15
+ 'deviceChange'=>[create_disk(volume, :remove, file_operation: :destroy)]
16
+ })
17
+ end
12
18
  end
13
19
 
14
20
  class Mock
@@ -16,6 +22,10 @@ module Fog
16
22
  vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {'deviceChange'=>[create_cdrom(volume, :add)]})
17
23
  end
18
24
 
25
+ def remove_vm_volume(volume)
26
+ true
27
+ end
28
+
19
29
  def destroy_vm_volume(volume)
20
30
  true
21
31
  end
@@ -9,16 +9,7 @@ module Fog
9
9
  deviceChange: []
10
10
  }
11
11
  options['volumes'].each do |volume|
12
- hardware_spec[:deviceChange].push({
13
- :operation=>:edit,
14
- device: RbVmomi::VIM::VirtualDisk(
15
- backing: RbVmomi::VIM::VirtualDiskFlatVer2BackingInfo( diskMode: volume.mode, fileName: volume.filename ),
16
- unitNumber: volume.unit_number,
17
- key: volume.key,
18
- controllerKey: volume.controller_key,
19
- capacityInKB: volume.size,
20
- )
21
- })
12
+ hardware_spec[:deviceChange].push(create_disk(volume, :edit, filename: volume.filename))
22
13
  end
23
14
  vm_reconfig_hardware('instance_uuid' => options['instance_uuid'], 'hardware_spec' => hardware_spec )
24
15
  end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Vsphere
3
- VERSION = '1.8.0'
3
+ VERSION = '1.9.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-vsphere
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - J.R. Garcia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-16 00:00:00.000000000 Z
11
+ date: 2017-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog-core