fog-vsphere 2.2.0 → 2.3.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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2802cab39cda0d34fbf317a0ef39e79b53a7ce20fd736e2f41ac86e0d95f494b
|
4
|
+
data.tar.gz: d173548894fdfed4a4c517e1e6b30b513420b2bf59be77ce1147350ba695a15f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62ec056eb0f333a9a80eb1d4ec523cb2e5f8893d8b0cdd9f5243210a920b2acfeeaa74dd5fe00770b5eb77bd5a255167dde730b8f89b257e1d8891133803e1e6
|
7
|
+
data.tar.gz: 4ac64f5bca359eb6e6290d137e1975644929f4eee39e0ad5f48d6c7fb2f58d8f6a235d557efe5bb26f1e0bfc98f88321a199b78bbf6b195aa92c3459e7b9bfd9
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## v2.3.0
|
2
|
+
* set volume unit_number when cloning a vm (#151)
|
3
|
+
* add unclustered esxi hosts back to cluster selection (#149)
|
4
|
+
* reduce the time required to list networks (#145)
|
5
|
+
|
1
6
|
## v2.2.0
|
2
7
|
* vm interface updating needs a datacenter as option (#140)
|
3
8
|
* improve vm saving to use a single api call and support network changes (#142)
|
@@ -8,9 +8,7 @@ module Fog
|
|
8
8
|
list_datacenters.map { |dc| list_clusters(datacenter: dc[:name]) }.flatten
|
9
9
|
else
|
10
10
|
raw_clusters(datacenter_name).map do |cluster|
|
11
|
-
|
12
|
-
cluster_attributes(cluster, datacenter_name)
|
13
|
-
end
|
11
|
+
cluster_attributes(cluster, datacenter_name)
|
14
12
|
end.compact
|
15
13
|
end
|
16
14
|
end
|
@@ -7,42 +7,83 @@ module Fog
|
|
7
7
|
cluster_name = filters.fetch(:cluster, nil)
|
8
8
|
# default to show all networks
|
9
9
|
only_active = filters[:accessible] || false
|
10
|
-
raw_networks(datacenter_name, cluster_name).map do |network|
|
11
|
-
next if only_active && !network.summary.accessible
|
12
|
-
network_attributes(network, datacenter_name)
|
13
|
-
end.compact
|
14
|
-
end
|
15
10
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
11
|
+
dc = find_raw_datacenter(datacenter_name)
|
12
|
+
|
13
|
+
results = property_collector_results(network_filter_spec(dc))
|
14
|
+
|
15
|
+
dvswitches = results.select { |result| result.obj.is_a?(RbVmomi::VIM::DistributedVirtualSwitch) }.each_with_object({}) do |dvswitch, obj|
|
16
|
+
obj[dvswitch.obj._ref] = dvswitch['summary.name']
|
21
17
|
end
|
18
|
+
|
19
|
+
if cluster_name
|
20
|
+
cluster = get_raw_cluster(cluster_name, datacenter_name)
|
21
|
+
cluster_networks = cluster.network.map(&:_ref)
|
22
|
+
end
|
23
|
+
|
24
|
+
results.select { |result| result.obj.is_a?(RbVmomi::VIM::DistributedVirtualPortgroup) || result.obj.is_a?(RbVmomi::VIM::Network) }.map do |network|
|
25
|
+
next if cluster_name && !cluster_networks.include?(network.obj._ref)
|
26
|
+
next if only_active && !network['summary.accessible']
|
27
|
+
if network.obj.is_a?(RbVmomi::VIM::DistributedVirtualPortgroup)
|
28
|
+
map_attrs_to_hash(network, network_dvportgroup_attribute_mapping).merge(
|
29
|
+
vlanid: raw_network_vlan(network['config.defaultPortConfig']),
|
30
|
+
virtualswitch: dvswitches[network['config.distributedVirtualSwitch']._ref]
|
31
|
+
)
|
32
|
+
else
|
33
|
+
map_attrs_to_hash(network, network_attribute_mapping).merge(
|
34
|
+
id: managed_obj_id(network.obj)
|
35
|
+
)
|
36
|
+
end.merge(
|
37
|
+
datacenter: datacenter_name,
|
38
|
+
_ref: network.obj._ref
|
39
|
+
)
|
40
|
+
end.compact
|
22
41
|
end
|
23
42
|
|
24
43
|
protected
|
25
44
|
|
26
|
-
def
|
27
|
-
if network.is_a?(RbVmomi::VIM::DistributedVirtualPortgroup)
|
28
|
-
id = network.key
|
29
|
-
virtualswitch = network.config.distributedVirtualSwitch.name
|
30
|
-
vlanid = raw_network_vlan(network.config.defaultPortConfig)
|
31
|
-
else
|
32
|
-
id = managed_obj_id(network)
|
33
|
-
virtualswitch = nil
|
34
|
-
vlanid = nil
|
35
|
-
end
|
45
|
+
def network_attribute_mapping
|
36
46
|
{
|
37
|
-
|
38
|
-
|
39
|
-
accessible: network.summary.accessible,
|
40
|
-
datacenter: datacenter,
|
41
|
-
virtualswitch: virtualswitch,
|
42
|
-
vlanid: vlanid
|
47
|
+
name: 'name',
|
48
|
+
accessible: 'summary.accessible'
|
43
49
|
}
|
44
50
|
end
|
45
51
|
|
52
|
+
def network_dvportgroup_attribute_mapping
|
53
|
+
network_attribute_mapping.merge(
|
54
|
+
id: 'config.key'
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
def folder_traversal_spec
|
59
|
+
RbVmomi::VIM.TraversalSpec(
|
60
|
+
name: 'FolderTraversalSpec',
|
61
|
+
type: 'Folder',
|
62
|
+
path: 'childEntity',
|
63
|
+
skip: false,
|
64
|
+
selectSet: [
|
65
|
+
RbVmomi::VIM.SelectionSpec(name: 'FolderTraversalSpec')
|
66
|
+
]
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
def network_filter_spec(obj)
|
71
|
+
RbVmomi::VIM.PropertyFilterSpec(
|
72
|
+
objectSet: [
|
73
|
+
obj: obj.networkFolder,
|
74
|
+
skip: true,
|
75
|
+
selectSet: [
|
76
|
+
folder_traversal_spec
|
77
|
+
]
|
78
|
+
],
|
79
|
+
propSet: [
|
80
|
+
{ type: 'DistributedVirtualSwitch', pathSet: ['summary.name'] },
|
81
|
+
{ type: 'Network', pathSet: network_attribute_mapping.values },
|
82
|
+
{ type: 'DistributedVirtualPortgroup', pathSet: network_dvportgroup_attribute_mapping.values + ['config.defaultPortConfig', 'config.distributedVirtualSwitch'] }
|
83
|
+
]
|
84
|
+
)
|
85
|
+
end
|
86
|
+
|
46
87
|
private
|
47
88
|
|
48
89
|
def raw_network_vlan(network)
|
@@ -59,6 +100,7 @@ module Fog
|
|
59
100
|
end
|
60
101
|
end
|
61
102
|
end
|
103
|
+
|
62
104
|
class Mock
|
63
105
|
def list_networks(filters)
|
64
106
|
datacenter_name = filters[:datacenter]
|
@@ -28,6 +28,7 @@ module Fog
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
# rubocop:disable ClassLength
|
31
32
|
class Real
|
32
33
|
include Shared
|
33
34
|
|
@@ -803,6 +804,7 @@ module Fog
|
|
803
804
|
device: template_volume }
|
804
805
|
end
|
805
806
|
end
|
807
|
+
new_volumes.map { |volume| volume.unit_number = volumes.index(volume) < 7 ? volumes.index(volume) : volumes.index(volume) + 1 }
|
806
808
|
specs.concat(new_volumes.map { |volume| create_disk(volume) })
|
807
809
|
specs
|
808
810
|
end
|
@@ -821,6 +823,7 @@ module Fog
|
|
821
823
|
end
|
822
824
|
end
|
823
825
|
|
826
|
+
# rubocop:enable ClassLength
|
824
827
|
class Mock
|
825
828
|
include Shared
|
826
829
|
def vm_clone(options = {})
|
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: 2.
|
4
|
+
version: 2.3.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: 2018-
|
11
|
+
date: 2018-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog-core
|