clc-chef-metal-vsphere 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30ca8337aad8fb990cd2be047ae531f283da2a5a
|
4
|
+
data.tar.gz: e9d7037e74152546784045c3821bd96dd342008f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc1fdc88af6f42f22d995b43e6bec397f9b1119fb01c054329b07c18101c1c1f09972a9e6ef14b51aad39da431bb50624de1063e8ecc3e1b591cdd70751ab7f1
|
7
|
+
data.tar.gz: 22327524c3ca5b889de9c4bfca907a9479445b384c67d5981a27989a599268223b84eeab3c220dabc1b5ad0326883f232f77611cc375a82dcd23b5e8ab1bf522
|
@@ -94,9 +94,14 @@ module ChefMetalVsphere
|
|
94
94
|
|
95
95
|
def do_vm_clone(dc_name, vm_template, vm_name, options)
|
96
96
|
datacenter = dc(dc_name)
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
if options.has_key?(:host)
|
98
|
+
host = find_host(datacenter, options[:host])
|
99
|
+
rspec = RbVmomi::VIM.VirtualMachineRelocateSpec(host: host)
|
100
|
+
else
|
101
|
+
pool = options[:resource_pool] ? find_pool(datacenter, options[:resource_pool]) : vm_template.resourcePool
|
102
|
+
rspec = RbVmomi::VIM.VirtualMachineRelocateSpec(pool: pool)
|
103
|
+
raise 'either :host or :resource_pool must be specified when cloning from a VM Template' if pool.nil?
|
104
|
+
end
|
100
105
|
|
101
106
|
unless options[:datastore].to_s.empty?
|
102
107
|
rspec.datastore = find_datastore(datacenter, options[:datastore])
|
@@ -216,6 +221,29 @@ module ChefMetalVsphere
|
|
216
221
|
baseEntity.find { |f| f.info.name == datastore_name } or raise "no such datastore #{datastore_name}"
|
217
222
|
end
|
218
223
|
|
224
|
+
def find_host(dc, host_name)
|
225
|
+
baseEntity = dc.hostFolder
|
226
|
+
entityArray = host_name.split('/')
|
227
|
+
entityArray.each do |entityArrItem|
|
228
|
+
if entityArrItem != ''
|
229
|
+
if baseEntity.is_a? RbVmomi::VIM::Folder
|
230
|
+
baseEntity = baseEntity.childEntity.find { |f| f.name == entityArrItem } or nil
|
231
|
+
elsif baseEntity.is_a? RbVmomi::VIM::ClusterComputeResource or baseEntity.is_a? RbVmomi::VIM::ComputeResource
|
232
|
+
baseEntity = baseEntity.host.find { |f| f.name == entityArrItem } or nil
|
233
|
+
elsif baseEntity.is_a? RbVmomi::VIM::HostSystem
|
234
|
+
baseEntity = baseEntity.host.find { |f| f.name == entityArrItem } or nil
|
235
|
+
else
|
236
|
+
baseEntity = nil
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
raise "vSphere Host not found [#{host_name}]" if baseEntity.nil?
|
242
|
+
|
243
|
+
baseEntity = baseEntity.host if not baseEntity.is_a?(RbVmomi::VIM::HostSystem) and baseEntity.respond_to?(:host)
|
244
|
+
baseEntity
|
245
|
+
end
|
246
|
+
|
219
247
|
def find_pool(dc, pool_name)
|
220
248
|
baseEntity = dc.hostFolder
|
221
249
|
entityArray = pool_name.split('/')
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
:driver_options => {
|
3
|
-
:host => '172.
|
4
|
-
:user => 'vmapi',
|
3
|
+
:host => '172.22.10.11',
|
4
|
+
:user => 'qa4t3nvc01\\vmapi',
|
5
5
|
:password => 'Pass@word1',
|
6
6
|
:insecure => true
|
7
7
|
},
|
@@ -9,14 +9,14 @@
|
|
9
9
|
:start_timeout => 600,
|
10
10
|
:create_timeout => 600,
|
11
11
|
:bootstrap_options => {
|
12
|
-
:datacenter => '
|
12
|
+
:datacenter => 'QA3HPC',
|
13
13
|
:template_name => 'UBUNTU-12-64-TEMPLATE',
|
14
14
|
:vm_folder => 'DLAB',
|
15
|
-
:datastore => '
|
15
|
+
:datastore => 'QA3-VMTEMPLATES-HPC-A01',
|
16
16
|
:num_cpus => 2,
|
17
|
-
:network_name => '
|
17
|
+
:network_name => 'vlan_388_172.22.188',
|
18
18
|
:memory_mb => 4096,
|
19
|
-
:
|
19
|
+
:host => 'QA3HPCCL01/qa4t3nesx02.t3n.dom',
|
20
20
|
:additional_disk_size_gb => 50,
|
21
21
|
:ssh => {
|
22
22
|
:user => 'root',
|
@@ -27,9 +27,9 @@
|
|
27
27
|
:convergence_options => {},
|
28
28
|
:customization_spec => {
|
29
29
|
:ipsettings => {
|
30
|
-
:ip => "172.
|
30
|
+
:ip => "172.22.188.197",
|
31
31
|
:subnetMask => '255.255.255.0',
|
32
|
-
:gateway => ["172.
|
32
|
+
:gateway => ["172.22.188.1"],
|
33
33
|
:dnsServerList => ["172.17.1.26","172.17.1.27"]
|
34
34
|
},
|
35
35
|
:domain => 'local'
|
@@ -80,10 +80,19 @@ describe "vsphere_driver" do
|
|
80
80
|
expect(@vm.datastore[0].name).to eq(@metal_config[:machine_options][:bootstrap_options][:datastore])
|
81
81
|
end
|
82
82
|
it "is in the correct resource pool" do
|
83
|
-
|
83
|
+
if @metal_config[:machine_options][:bootstrap_options].has_key?(:resource_pool)
|
84
|
+
expect(@vm.resourcePool.name).to eq(@metal_config[:machine_options][:bootstrap_options][:resource_pool].split('/')[1])
|
85
|
+
end
|
86
|
+
end
|
87
|
+
it "is in the correct host" do
|
88
|
+
if @metal_config[:machine_options][:bootstrap_options].has_key?(:host)
|
89
|
+
expect(@vm.runtime.host.name).to eq(@metal_config[:machine_options][:bootstrap_options][:host].split('/')[1])
|
90
|
+
end
|
84
91
|
end
|
85
92
|
it "is in the correct cluster" do
|
86
|
-
|
93
|
+
if @metal_config[:machine_options][:bootstrap_options].has_key?(:resource_pool)
|
94
|
+
expect(@vm.resourcePool.owner.name).to eq(@metal_config[:machine_options][:bootstrap_options][:resource_pool].split('/')[0])
|
95
|
+
end
|
87
96
|
end
|
88
97
|
it "is in the correct datacenter" do
|
89
98
|
expect(@connection.serviceInstance.find_datacenter(@metal_config[:machine_options][:bootstrap_options][:datacenter]).find_vm("#{@vm.parent.name}/#{@vm_name}")).not_to eq(nil)
|