fog-vsphere 3.2.1 → 3.4.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 +4 -4
- data/.travis.yml +0 -1
- data/CHANGELOG.md +21 -0
- data/CONTRIBUTORS.md +2 -1
- data/fog-vsphere.gemspec +2 -2
- data/lib/fog/vsphere/compute.rb +4 -1
- data/lib/fog/vsphere/requests/compute/create_resource_pool.rb +49 -0
- data/lib/fog/vsphere/requests/compute/create_vm.rb +4 -2
- data/lib/fog/vsphere/requests/compute/destroy_resource_pool.rb +15 -0
- data/lib/fog/vsphere/requests/compute/list_networks.rb +5 -0
- data/lib/fog/vsphere/requests/compute/list_resource_pools.rb +2 -2
- data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +8 -4
- data/lib/fog/vsphere/requests/compute/list_vm_volumes.rb +5 -0
- data/lib/fog/vsphere/requests/compute/update_resource_pool.rb +31 -0
- data/lib/fog/vsphere/requests/compute/upload_iso.rb +1 -1
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +5 -1
- data/lib/fog/vsphere/version.rb +1 -1
- metadata +14 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1090356cd911b5f4d34de083d7ebd0c26fc10d976155a4896767dbc8c4593001
|
4
|
+
data.tar.gz: c52e89e4fb8fbb66654d8555abf1c3d962fa1baf915b8bd5ab45f85a6ae6b789
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5031553aa6291340875c681f9ec771668bc1465e5b09fca9681713a0bab8feda8c5f08e95c11f99f0ffc7a82c18e76e8f1fba6b7dce923641885ccea0dbc1746
|
7
|
+
data.tar.gz: c1207ec44317315c925f77efe93b8c5469677fb0807cf3163654052eb63ea5941320672a20cf4a36f8fd92a91a747153846d9f474cd7c16bad335be4679809bb
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
## v3.4.0
|
2
|
+
* list_resource_pools returns incorrect resource pool name (#256)
|
3
|
+
* Add ability to create update and delete Resource Pools (#253)
|
4
|
+
* Check datastore for existence prior vm_clone
|
5
|
+
|
6
|
+
## v3.3.1
|
7
|
+
Fixes eager zero flag (#251, #252)
|
8
|
+
|
9
|
+
## v3.3.0
|
10
|
+
* Add support for nsx-t (#248)
|
11
|
+
|
12
|
+
## v3.2.5
|
13
|
+
* Check cluster existance properly (#239)
|
14
|
+
|
15
|
+
## ~~v3.2.3~~
|
16
|
+
* Check cluster existance (#239)
|
17
|
+
|
18
|
+
## v3.2.2
|
19
|
+
* Load simple clusters (#237)
|
20
|
+
* ISO upload: correctly check if upload directory exists
|
21
|
+
|
1
22
|
## v3.2.1
|
2
23
|
|
3
24
|
* Fix VM creation on storagePod (#234)
|
data/CONTRIBUTORS.md
CHANGED
@@ -56,9 +56,10 @@
|
|
56
56
|
* Paul Thornthwaite <paul@brightbox.co.uk>
|
57
57
|
* Paul Thornthwaite <tokengeek@gmail.com>
|
58
58
|
* Paulo Henrique Lopes Ribeiro <plribeiro3000@gmail.com>
|
59
|
-
* Rohan Arora <roarora@redhat.com>
|
60
59
|
* Rich Daley <rdaley@williamhill.co.uk>
|
61
60
|
* Rich Lane <rlane@club.cc.cmu.edu>
|
61
|
+
* Rohan Arora <roarora@redhat.com>
|
62
|
+
* Roman Lazoryshchak <lazoryshchak@gmail.com>
|
62
63
|
* Samuel Keeley <samuel@dropbox.com>
|
63
64
|
* Sergio Cambra <sergio@programatica.es>
|
64
65
|
* Shlomi Zadok <shlomi@ben-hanna.com>
|
data/fog-vsphere.gemspec
CHANGED
@@ -24,9 +24,9 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_runtime_dependency 'fog-core'
|
25
25
|
spec.add_runtime_dependency 'rbvmomi', '>= 1.9', '< 3'
|
26
26
|
|
27
|
-
spec.add_development_dependency 'bundler'
|
27
|
+
spec.add_development_dependency 'bundler'
|
28
28
|
spec.add_development_dependency 'pry', '~> 0.10'
|
29
|
-
spec.add_development_dependency 'rake', '
|
29
|
+
spec.add_development_dependency 'rake', '>= 12.3.3'
|
30
30
|
spec.add_development_dependency 'minitest', '~> 5.8'
|
31
31
|
spec.add_development_dependency 'rubocop', '~> 0.50.0'
|
32
32
|
spec.add_development_dependency 'mocha', '~> 1.8'
|
data/lib/fog/vsphere/compute.rb
CHANGED
@@ -71,6 +71,9 @@ module Fog
|
|
71
71
|
request :get_cluster
|
72
72
|
request :list_resource_pools
|
73
73
|
request :get_resource_pool
|
74
|
+
request :create_resource_pool
|
75
|
+
request :update_resource_pool
|
76
|
+
request :destroy_resource_pool
|
74
77
|
request :list_networks
|
75
78
|
request :get_network
|
76
79
|
request :list_datastores
|
@@ -276,7 +279,7 @@ module Fog
|
|
276
279
|
when :datacenter
|
277
280
|
RbVmomi::VIM::Datacenter
|
278
281
|
when :cluster
|
279
|
-
RbVmomi::VIM::
|
282
|
+
RbVmomi::VIM::ComputeResource
|
280
283
|
when :host
|
281
284
|
RbVmomi::VIM::HostSystem
|
282
285
|
else
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vsphere
|
3
|
+
class Compute
|
4
|
+
class Real
|
5
|
+
def create_resource_pool(attributes = {})
|
6
|
+
cluster = get_raw_cluster(attributes[:cluster], attributes[:datacenter])
|
7
|
+
|
8
|
+
root_resource_pool = if attributes[:root_resource_pool_name]
|
9
|
+
cluster.resourcePool.find attributes[:root_resource_pool_name]
|
10
|
+
else
|
11
|
+
cluster.resourcePool
|
12
|
+
end
|
13
|
+
|
14
|
+
root_resource_pool.CreateResourcePool(
|
15
|
+
name: attributes[:name],
|
16
|
+
spec: get_resource_pool_spec(attributes)
|
17
|
+
)
|
18
|
+
|
19
|
+
get_resource_pool(attributes[:name], attributes[:cluster], attributes[:datacenter])
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def get_resource_pool_spec(attributes = {})
|
25
|
+
RbVmomi::VIM.ResourceConfigSpec(
|
26
|
+
cpuAllocation: get_resource_pool_allocation_spec(attributes.fetch(:cpu, {})),
|
27
|
+
memoryAllocation: get_resource_pool_allocation_spec(attributes.fetch(:memory, {}))
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_resource_pool_allocation_spec(attributes = {})
|
32
|
+
RbVmomi::VIM.ResourceAllocationInfo(
|
33
|
+
reservation: attributes.fetch(:reservation, 0),
|
34
|
+
limit: attributes.fetch(:limit, -1),
|
35
|
+
expandableReservation: attributes.fetch(:expandable_reservation, false),
|
36
|
+
shares: RbVmomi::VIM.SharesInfo(
|
37
|
+
level: RbVmomi::VIM.SharesLevel(attributes.fetch(:shares_level, 'normal')),
|
38
|
+
shares: attributes.fetch(:shares, 0)
|
39
|
+
)
|
40
|
+
)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class Mock
|
45
|
+
def create_resource_pool(attributes = {}); end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -4,6 +4,8 @@ module Fog
|
|
4
4
|
class Real
|
5
5
|
def create_vm(attributes = {})
|
6
6
|
# build up vm configuration
|
7
|
+
cluster = get_raw_cluster(attributes[:cluster], attributes[:datacenter])
|
8
|
+
raise Fog::Vsphere::Compute::NotFound, "Cluster #{attributes[:cluster]} Doesn't Exist in the DC!" unless cluster
|
7
9
|
|
8
10
|
vm_cfg = {
|
9
11
|
name: attributes[:name],
|
@@ -24,7 +26,7 @@ module Fog
|
|
24
26
|
resource_pool = if attributes[:resource_pool] && attributes[:resource_pool] != 'Resources'
|
25
27
|
get_raw_resource_pool(attributes[:resource_pool], attributes[:cluster], attributes[:datacenter])
|
26
28
|
else
|
27
|
-
|
29
|
+
cluster.resourcePool
|
28
30
|
end
|
29
31
|
vmFolder = get_raw_vmfolder(attributes[:path], attributes[:datacenter])
|
30
32
|
host = if attributes.key?(:host)
|
@@ -298,7 +300,7 @@ module Fog
|
|
298
300
|
file_operation = options[:file_operation] || (:create if operation == :add)
|
299
301
|
payload[:fileOperation] = file_operation if file_operation
|
300
302
|
|
301
|
-
if operation == :add && disk.thin
|
303
|
+
if operation == :add && !disk.thin && disk.eager_zero
|
302
304
|
payload[:device][:backing][:eagerlyScrub] = disk.eager_zero
|
303
305
|
end
|
304
306
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vsphere
|
3
|
+
class Compute
|
4
|
+
class Real
|
5
|
+
def destroy_resource_pool(attributes = {})
|
6
|
+
get_raw_resource_pool_by_ref(attributes).Destroy_Task().wait_for_completion
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Mock
|
11
|
+
def destroy_resource_pool(attributes = {}); end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -29,6 +29,11 @@ module Fog
|
|
29
29
|
vlanid: raw_network_vlan(network['config.defaultPortConfig']),
|
30
30
|
virtualswitch: dvswitches[network['config.distributedVirtualSwitch']._ref]
|
31
31
|
)
|
32
|
+
elsif network.obj.is_a?(RbVmomi::VIM::OpaqueNetwork)
|
33
|
+
map_attrs_to_hash(network, network_dvportgroup_attribute_mapping).merge(
|
34
|
+
id: network.obj._ref,
|
35
|
+
opaqueNetworkId: network.obj.summary.opaqueNetworkId
|
36
|
+
)
|
32
37
|
else
|
33
38
|
map_attrs_to_hash(network, network_attribute_mapping).merge(
|
34
39
|
id: network.obj._ref
|
@@ -36,8 +36,8 @@ module Fog
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def resource_pool_attributes(resource_pool, cluster, datacenter)
|
39
|
-
|
40
|
-
name = 'Resources'
|
39
|
+
folder_path(resource_pool) =~ /(?<=Resources\/)(.+)/
|
40
|
+
name = Regexp.last_match(1) || 'Resources'
|
41
41
|
{
|
42
42
|
id: managed_obj_id(resource_pool),
|
43
43
|
name: name,
|
@@ -29,12 +29,12 @@ module Fog
|
|
29
29
|
# unitNumber: 7,
|
30
30
|
#
|
31
31
|
def list_vm_interfaces(vm_id, datacenter = nil)
|
32
|
-
get_raw_interfaces(vm_id, datacenter).map { |nic| raw_to_hash
|
32
|
+
get_raw_interfaces(vm_id, datacenter).map { |nic| raw_to_hash(nic, datacenter) }
|
33
33
|
end
|
34
34
|
|
35
35
|
def get_vm_interface(vm_id, options = {})
|
36
36
|
raw = get_raw_interface(vm_id, options)
|
37
|
-
raw_to_hash(raw) if raw
|
37
|
+
raw_to_hash(raw, options[:datacenter]) if raw
|
38
38
|
end
|
39
39
|
|
40
40
|
def get_raw_interfaces(vm_id, datacenter = nil)
|
@@ -61,12 +61,16 @@ module Fog
|
|
61
61
|
|
62
62
|
private
|
63
63
|
|
64
|
-
|
65
|
-
def raw_to_hash(nic)
|
64
|
+
def raw_to_hash(nic, datacenter)
|
66
65
|
if nic.backing.respond_to?(:network)
|
67
66
|
network = nic.backing.network.name
|
68
67
|
elsif nic.backing.respond_to?(:port)
|
69
68
|
network = nic.backing.port.portgroupKey
|
69
|
+
elsif nic.backing.respond_to?(:opaqueNetworkId)
|
70
|
+
opaquenetworks = list_networks(:datacenter => datacenter).select { |net| net.key?(:opaqueNetworkId) }
|
71
|
+
network = opaquenetworks.find do |opaquenetwork|
|
72
|
+
nic.backing.opaqueNetworkId == opaquenetwork[:opaqueNetworkId]
|
73
|
+
end[:id]
|
70
74
|
else
|
71
75
|
network = nil
|
72
76
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Fog
|
2
|
+
module Vsphere
|
3
|
+
class Compute
|
4
|
+
class Real
|
5
|
+
def update_resource_pool(attributes = {})
|
6
|
+
raw_resource_pool = get_raw_resource_pool_by_ref(attributes)
|
7
|
+
|
8
|
+
raw_resource_pool.UpdateConfig(
|
9
|
+
name: attributes[:name],
|
10
|
+
config: get_resource_pool_spec(attributes)
|
11
|
+
)
|
12
|
+
|
13
|
+
get_resource_pool(attributes[:name], attributes[:cluster], attributes[:datacenter])
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def get_raw_resource_pool_by_ref(attributes = {})
|
19
|
+
dc = find_raw_datacenter(attributes[:datacenter])
|
20
|
+
cluster = dc.find_compute_resource(attributes[:cluster])
|
21
|
+
|
22
|
+
list_raw_resource_pools(cluster).detect { |rp| rp._ref == attributes[:ref] }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Mock
|
27
|
+
def update_resource_pool(attributes = {}); end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -21,7 +21,7 @@ module Fog
|
|
21
21
|
datastore = get_raw_datastore(options['datastore'], options['datacenter'])
|
22
22
|
datacenter = get_raw_datacenter(options['datacenter'])
|
23
23
|
filename = options['filename'] || File.basename(options['local_path'])
|
24
|
-
unless datastore.exists?
|
24
|
+
unless datastore.exists?(options['upload_directory'])
|
25
25
|
connection.serviceContent.fileManager.MakeDirectory name: "[#{options['datastore']}] #{options['upload_directory']}",
|
26
26
|
datacenter: datacenter,
|
27
27
|
createParentDirectories: false
|
@@ -24,6 +24,9 @@ module Fog
|
|
24
24
|
raise Fog::Vsphere::Compute::NotFound, "Template #{options['template_path']} Doesn't Exist!" unless get_virtual_machine(options['template_path'], options['datacenter'])
|
25
25
|
raise Fog::Vsphere::Compute::NotFound, "Cluster #{options['resource_pool'][0]} Doesn't Exist in the DC!" unless get_raw_cluster(options["resource_pool"][0], options['datacenter'])
|
26
26
|
raise ArgumentError, 'path option is required' unless options.fetch('dest_folder', '/')
|
27
|
+
if options.key?('datastore') && !options['datastore'].nil? && !get_raw_datastore(options['datastore'], options['datacenter'])
|
28
|
+
raise Fog::Vsphere::Compute::NotFound, "Datastore #{options['datastore']} Doesn't Exist!"
|
29
|
+
end
|
27
30
|
if options.key?('storage_pod') && !options['storage_pod'].nil? && !get_raw_storage_pod(options['storage_pod'], options['datacenter'])
|
28
31
|
raise Fog::Vsphere::Compute::NotFound, "Storage Pod #{options['storage_pod']} Doesn't Exist!"
|
29
32
|
end
|
@@ -800,7 +803,7 @@ module Fog
|
|
800
803
|
device: template_nic
|
801
804
|
}
|
802
805
|
else
|
803
|
-
interface = Fog::Vsphere::Compute::Interface.new(raw_to_hash(template_nic))
|
806
|
+
interface = Fog::Vsphere::Compute::Interface.new(raw_to_hash(template_nic, datacenter))
|
804
807
|
specs << create_interface(interface, interface.key, :remove, datacenter: datacenter)
|
805
808
|
end
|
806
809
|
end
|
@@ -838,6 +841,7 @@ module Fog
|
|
838
841
|
end
|
839
842
|
template_volume.backing.diskMode = new_volume.mode
|
840
843
|
template_volume.backing.thinProvisioned = new_volume.thin
|
844
|
+
template_volume.backing.eagerlyScrub = !new_volume.thin && new_volume.eager_zero
|
841
845
|
specs << { operation: :edit, device: template_volume }
|
842
846
|
else
|
843
847
|
specs << { operation: :remove,
|
data/lib/fog/vsphere/version.rb
CHANGED
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: 3.
|
4
|
+
version: 3.4.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:
|
11
|
+
date: 2020-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog-core
|
@@ -48,16 +48,16 @@ dependencies:
|
|
48
48
|
name: bundler
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - "
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: pry
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,16 +76,16 @@ dependencies:
|
|
76
76
|
name: rake
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
81
|
+
version: 12.3.3
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
88
|
+
version: 12.3.3
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: minitest
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -240,10 +240,12 @@ files:
|
|
240
240
|
- lib/fog/vsphere/requests/compute/cloudinit_to_customspec.rb
|
241
241
|
- lib/fog/vsphere/requests/compute/create_folder.rb
|
242
242
|
- lib/fog/vsphere/requests/compute/create_group.rb
|
243
|
+
- lib/fog/vsphere/requests/compute/create_resource_pool.rb
|
243
244
|
- lib/fog/vsphere/requests/compute/create_rule.rb
|
244
245
|
- lib/fog/vsphere/requests/compute/create_vm.rb
|
245
246
|
- lib/fog/vsphere/requests/compute/current_time.rb
|
246
247
|
- lib/fog/vsphere/requests/compute/destroy_group.rb
|
248
|
+
- lib/fog/vsphere/requests/compute/destroy_resource_pool.rb
|
247
249
|
- lib/fog/vsphere/requests/compute/destroy_rule.rb
|
248
250
|
- lib/fog/vsphere/requests/compute/folder_destroy.rb
|
249
251
|
- lib/fog/vsphere/requests/compute/get_cluster.rb
|
@@ -293,6 +295,7 @@ files:
|
|
293
295
|
- lib/fog/vsphere/requests/compute/modify_vm_volume.rb
|
294
296
|
- lib/fog/vsphere/requests/compute/revert_to_snapshot.rb
|
295
297
|
- lib/fog/vsphere/requests/compute/set_vm_customvalue.rb
|
298
|
+
- lib/fog/vsphere/requests/compute/update_resource_pool.rb
|
296
299
|
- lib/fog/vsphere/requests/compute/update_vm.rb
|
297
300
|
- lib/fog/vsphere/requests/compute/upload_iso.rb
|
298
301
|
- lib/fog/vsphere/requests/compute/vm_acquire_ticket.rb
|
@@ -335,8 +338,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
335
338
|
- !ruby/object:Gem::Version
|
336
339
|
version: '0'
|
337
340
|
requirements: []
|
338
|
-
|
339
|
-
rubygems_version: 2.7.6.2
|
341
|
+
rubygems_version: 3.1.2
|
340
342
|
signing_key:
|
341
343
|
specification_version: 4
|
342
344
|
summary: Module for the 'fog' gem to support VMware vSphere.
|