fog-vsphere 1.1.0 → 1.2.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/lib/fog/vsphere/compute.rb +4 -0
- data/lib/fog/vsphere/requests/compute/create_group.rb +52 -0
- data/lib/fog/vsphere/requests/compute/destroy_group.rb +27 -0
- data/lib/fog/vsphere/requests/compute/get_host.rb +4 -0
- data/lib/fog/vsphere/requests/compute/list_groups.rb +30 -0
- data/lib/fog/vsphere/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8f624e20813963c149bbc3431f915c5a64253ca
|
4
|
+
data.tar.gz: bd06d1bf3e396c00ee9c440b4d4f6fa513845dda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60bddac43701180f347749259cc99346ad6b1f9b6d5345829ead5bcee5142bbb10ffdee03422726096545d2a69c50737ef07d725cac7e4bc0353a306835d3ebf
|
7
|
+
data.tar.gz: 419b957fc118175d7f60b54cbfae755ebca6c8802923105a748b79e30730f2227259489a7036c3488adcebff420943d74c7040cf537283cdaa3dce7eef12e68c
|
data/lib/fog/vsphere/compute.rb
CHANGED
@@ -0,0 +1,52 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Vsphere
|
4
|
+
class Real
|
5
|
+
def create_group(attributes={})
|
6
|
+
cluster = get_raw_cluster(attributes[:cluster], attributes[:datacenter])
|
7
|
+
group = cluster.configurationEx.group.find {|n| n[:name] == attributes[:name]}
|
8
|
+
if group
|
9
|
+
raise ArgumentError, "Group #{attributes[:name]} already exists!"
|
10
|
+
end
|
11
|
+
spec = get_spec attributes
|
12
|
+
cluster_spec = RbVmomi::VIM.ClusterConfigSpecEx(groupSpec: [
|
13
|
+
RbVmomi::VIM.ClusterGroupSpec(
|
14
|
+
operation: RbVmomi::VIM.ArrayUpdateOperation('add'),
|
15
|
+
info: spec
|
16
|
+
)
|
17
|
+
])
|
18
|
+
cluster.ReconfigureComputeResource_Task(spec: cluster_spec, modify: true).wait_for_completion
|
19
|
+
group = cluster.configurationEx.group.find {|n| n[:name] == attributes[:name]}
|
20
|
+
if group
|
21
|
+
return group[:name]
|
22
|
+
else
|
23
|
+
raise Fog::Vsphere::Errors::ServiceError, "Unknown error creating group #{attributes[:name]}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def get_spec(attributes={})
|
30
|
+
if attributes[:type].to_s == 'ClusterVmGroup'
|
31
|
+
vms = attributes[:vm_ids].to_a.map {|id| get_vm_ref(id, attributes[:datacenter])}
|
32
|
+
attributes[:type].new(
|
33
|
+
name: attributes[:name],
|
34
|
+
vm: vms
|
35
|
+
)
|
36
|
+
elsif attributes[:type].to_s == 'ClusterHostGroup'
|
37
|
+
attributes[:type].new(
|
38
|
+
name: attributes[:name],
|
39
|
+
host: attributes[:host_refs]
|
40
|
+
)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class Mock
|
46
|
+
def create_group(attributes={})
|
47
|
+
self.data[:groups][attributes[:name]] = attributes
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Vsphere
|
4
|
+
class Real
|
5
|
+
def destroy_group(attributes = {})
|
6
|
+
cluster = get_raw_cluster(attributes[:cluster], attributes[:datacenter])
|
7
|
+
group = cluster.configurationEx.group.find {|g| g.name == attributes[:name]}
|
8
|
+
raise Fog::Vsphere::Error::NotFound, "group #{attributes[:name]} not found" unless group
|
9
|
+
delete_spec = RbVmomi::VIM.ClusterConfigSpecEx(groupSpec: [
|
10
|
+
RbVmomi::VIM.ClusterGroupSpec(
|
11
|
+
operation: RbVmomi::VIM.ArrayUpdateOperation('remove'),
|
12
|
+
removeKey: group.name
|
13
|
+
)
|
14
|
+
])
|
15
|
+
cluster.ReconfigureComputeResource_Task(spec: delete_spec, modify: true).wait_for_completion
|
16
|
+
end
|
17
|
+
end
|
18
|
+
class Mock
|
19
|
+
def destroy_group(attributes = {})
|
20
|
+
group = self.data[:groups][attributes[:name]]
|
21
|
+
raise Fog::Vsphere::Error::NotFound unless group
|
22
|
+
self.data[:groups].delete(attributes[:name])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Vsphere
|
4
|
+
class Real
|
5
|
+
def list_groups(filters = {})
|
6
|
+
cluster = get_raw_cluster(filters[:cluster], filters[:datacenter])
|
7
|
+
cluster.configurationEx.group.map {|g| group_attributes g, filters}
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def group_attributes(group, filters)
|
13
|
+
attributes = {}
|
14
|
+
attributes[:datacenter] = filters[:datacenter]
|
15
|
+
attributes[:cluster] = filters[:cluster]
|
16
|
+
attributes[:name] = group[:name]
|
17
|
+
attributes[:type] = group.class
|
18
|
+
if group.class.to_s == 'ClusterVmGroup' then attributes[:vm_ids] = group[:vm].map {|vm| vm.config.instanceUuid} end
|
19
|
+
if group.class.to_s == 'ClusterHostGroup' then attributes[:hosts] = group[:host].map {|host| host.name} end
|
20
|
+
return attributes
|
21
|
+
end
|
22
|
+
end
|
23
|
+
class Mock
|
24
|
+
def list_groups(filters = {})
|
25
|
+
self.data[:groups].values.select {|g| g[:datacenter] == filters[:datacenter] && g[:cluster] == filters[:cluster]}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
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: 1.
|
4
|
+
version: 1.2.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: 2016-09-
|
11
|
+
date: 2016-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog-core
|
@@ -186,9 +186,11 @@ files:
|
|
186
186
|
- lib/fog/vsphere/models/compute/volumes.rb
|
187
187
|
- lib/fog/vsphere/requests/compute/cloudinit_to_customspec.rb
|
188
188
|
- lib/fog/vsphere/requests/compute/create_folder.rb
|
189
|
+
- lib/fog/vsphere/requests/compute/create_group.rb
|
189
190
|
- lib/fog/vsphere/requests/compute/create_rule.rb
|
190
191
|
- lib/fog/vsphere/requests/compute/create_vm.rb
|
191
192
|
- lib/fog/vsphere/requests/compute/current_time.rb
|
193
|
+
- lib/fog/vsphere/requests/compute/destroy_group.rb
|
192
194
|
- lib/fog/vsphere/requests/compute/destroy_rule.rb
|
193
195
|
- lib/fog/vsphere/requests/compute/folder_destroy.rb
|
194
196
|
- lib/fog/vsphere/requests/compute/get_cluster.rb
|
@@ -212,6 +214,7 @@ files:
|
|
212
214
|
- lib/fog/vsphere/requests/compute/list_datacenters.rb
|
213
215
|
- lib/fog/vsphere/requests/compute/list_datastores.rb
|
214
216
|
- lib/fog/vsphere/requests/compute/list_folders.rb
|
217
|
+
- lib/fog/vsphere/requests/compute/list_groups.rb
|
215
218
|
- lib/fog/vsphere/requests/compute/list_hosts.rb
|
216
219
|
- lib/fog/vsphere/requests/compute/list_interface_types.rb
|
217
220
|
- lib/fog/vsphere/requests/compute/list_networks.rb
|