chef-provisioning-vsphere 2.0.8 → 2.0.9
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/CHANGELOG.md +13 -2
- data/Rakefile +1 -1
- data/chef-provisioning-vsphere.gemspec +1 -1
- data/lib/chef/provisioning/vsphere_driver/clone_spec_builder.rb +1 -1
- data/lib/chef/provisioning/vsphere_driver/driver.rb +14 -3
- data/lib/chef/provisioning/vsphere_driver/version.rb +1 -1
- data/lib/chef/provisioning/vsphere_driver/vsphere_helpers.rb +22 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e151627320d531a6712a2336485d7cf03f61519
|
4
|
+
data.tar.gz: b565bf4a774b636ccb3448ff3ba3f07d3fab1b33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 355bc3e74e5719ff8731eaee695939add96bd675433ba79a11e19841d2a02d5c858ddba678f5f2769fb20b448af190bc0c4129894776d2c03bf4069ccd5fb56e
|
7
|
+
data.tar.gz: 443b85c9e3f5994a586b97a5c3a6c8875bec4f563cc25dc4eb4446c09ed977b647cd8c611efb744524e43534f7617291a2f4c782d1890011db20661d31805840
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,18 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
## [2.0.
|
4
|
-
[Full Changelog](https://github.com/chef-partners/chef-provisioning-vsphere/compare/v2.0.
|
3
|
+
## [2.0.9](https://github.com/chef-partners/chef-provisioning-vsphere/tree/2.0.9) (2017-10-30)
|
4
|
+
[Full Changelog](https://github.com/chef-partners/chef-provisioning-vsphere/compare/v2.0.8...2.0.9)
|
5
|
+
|
6
|
+
**Closed issues:**
|
7
|
+
|
8
|
+
- Networks under a distributed switch not at the rootFolder cannot be found [\#56](https://github.com/chef-partners/chef-provisioning-vsphere/issues/56)
|
9
|
+
|
10
|
+
**Merged pull requests:**
|
11
|
+
|
12
|
+
- Several small fixes [\#63](https://github.com/chef-partners/chef-provisioning-vsphere/pull/63) ([algaut](https://github.com/algaut))
|
13
|
+
|
14
|
+
## [v2.0.8](https://github.com/chef-partners/chef-provisioning-vsphere/tree/v2.0.8) (2017-10-23)
|
15
|
+
[Full Changelog](https://github.com/chef-partners/chef-provisioning-vsphere/compare/v2.0.7...v2.0.8)
|
5
16
|
|
6
17
|
**Closed issues:**
|
7
18
|
|
data/Rakefile
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.homepage = 'https://github.com/chef-partners/chef-provisioning-vsphere'
|
17
17
|
s.license = 'MIT'
|
18
18
|
s.bindir = 'bin'
|
19
|
-
s.executables = %w
|
19
|
+
s.executables = %w()
|
20
20
|
s.require_path = 'lib'
|
21
21
|
s.files = `git ls-files -z`.split("\x0")
|
22
22
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
@@ -178,7 +178,7 @@ module ChefProvisioningVsphere
|
|
178
178
|
def hostname_from(options, vm_name)
|
179
179
|
hostname = options[:hostname] || vm_name
|
180
180
|
test = /^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])$/
|
181
|
-
unless hostname
|
181
|
+
unless hostname.match?(test)
|
182
182
|
raise 'Only letters, numbers or hyphens in hostnames allowed'
|
183
183
|
end
|
184
184
|
RbVmomi::VIM::CustomizationFixedName.new(name: hostname)
|
@@ -14,7 +14,7 @@ require 'chef/provisioning/vsphere_driver/vm_helper'
|
|
14
14
|
# Provisions machines in vSphere.
|
15
15
|
module ChefProvisioningVsphere
|
16
16
|
# Inherits the Chef::Provisioning::Driver attirbutes
|
17
|
-
class VsphereDriver < Chef::Provisioning::Driver
|
17
|
+
class VsphereDriver < Chef::Provisioning::Driver # rubocop:disable Metrics/ClassLength
|
18
18
|
include Chef::Mixin::ShellOut
|
19
19
|
|
20
20
|
# Creates the new object via the URL
|
@@ -670,11 +670,18 @@ module ChefProvisioningVsphere
|
|
670
670
|
Chef::Log.debug("Clone spec: #{clone_spec.pretty_inspect}")
|
671
671
|
|
672
672
|
vm_folder = vsphere_helper.find_folder(bootstrap_options[:vm_folder])
|
673
|
+
last_progress = 0
|
673
674
|
vm_template.CloneVM_Task(
|
674
675
|
name: machine_name,
|
675
676
|
folder: vm_folder,
|
676
677
|
spec: clone_spec
|
677
|
-
).
|
678
|
+
).wait_for_progress do |progress|
|
679
|
+
if (progress.is_a? Numeric) && (progress / 10).floor != (last_progress / 10).floor
|
680
|
+
print "\n#{machine_name} progress: #{progress}%"
|
681
|
+
last_progress = progress
|
682
|
+
end
|
683
|
+
end
|
684
|
+
print "\n#{machine_name} done!"
|
678
685
|
|
679
686
|
vm = vsphere_helper.find_vm(vm_folder, machine_name)
|
680
687
|
|
@@ -882,7 +889,11 @@ module ChefProvisioningVsphere
|
|
882
889
|
else
|
883
890
|
## Check if true available
|
884
891
|
vm_ip = bootstrap_options[:customization_spec][:ipsettings][:ip] unless vm_helper.ip?
|
885
|
-
|
892
|
+
nb_attempts = 0
|
893
|
+
until @vm_helper.open_port?(vm_ip, @vm_helper.port, 1) || nb_attempts > bootstrap_options[:ready_timeout]
|
894
|
+
print '.'
|
895
|
+
nb_attempts += 1
|
896
|
+
end
|
886
897
|
end
|
887
898
|
else
|
888
899
|
if use_ipv4_during_bootstrap?(bootstrap_options)
|
@@ -178,11 +178,11 @@ module ChefProvisioningVsphere
|
|
178
178
|
def add_extra_nic(action_handler, vm_template, options, vm)
|
179
179
|
deviceAdditions, changes = network_device_changes(action_handler, vm_template, options)
|
180
180
|
|
181
|
-
if deviceAdditions.count
|
181
|
+
if deviceAdditions.count.positive?
|
182
182
|
current_networks = find_ethernet_cards_for(vm).map { |card| network_id_for(card.backing) }
|
183
183
|
new_devices = deviceAdditions.reject { |device| current_networks.include?(network_id_for(device.device.backing)) }
|
184
184
|
|
185
|
-
if new_devices.count
|
185
|
+
if new_devices.count.positive?
|
186
186
|
action_handler.report_progress 'Adding extra NICs'
|
187
187
|
task = vm.ReconfigVM_Task(spec: RbVmomi::VIM.VirtualMachineConfigSpec(deviceChange: new_devices))
|
188
188
|
task.wait_for_completion
|
@@ -396,13 +396,7 @@ module ChefProvisioningVsphere
|
|
396
396
|
base = datacenter.networkFolder
|
397
397
|
entity_array = name.split('/').reject(&:empty?)
|
398
398
|
entity_array.each do |item|
|
399
|
-
|
400
|
-
when RbVmomi::VIM::Folder
|
401
|
-
base = base.find(item)
|
402
|
-
when RbVmomi::VIM::VmwareDistributedVirtualSwitch
|
403
|
-
idx = base.summary.portgroupName.find_index(item)
|
404
|
-
base = idx.nil? ? nil : base.portgroup[idx]
|
405
|
-
end
|
399
|
+
base = traverse_folders_for_network(base, item)
|
406
400
|
end
|
407
401
|
|
408
402
|
raise "vSphere Network not found [#{name}]" if base.nil?
|
@@ -410,6 +404,25 @@ module ChefProvisioningVsphere
|
|
410
404
|
base
|
411
405
|
end
|
412
406
|
|
407
|
+
# Search the item through the base's children
|
408
|
+
# @param base vSphere object where to search
|
409
|
+
# @param [String] item the name of the network to look for
|
410
|
+
def traverse_folders_for_network(base, item)
|
411
|
+
Chef::Log.debug("Searching #{item} in #{base.name}")
|
412
|
+
case base
|
413
|
+
when RbVmomi::VIM::Folder
|
414
|
+
res = base.find(item)
|
415
|
+
return res unless res.nil?
|
416
|
+
base.childEntity.each do |child|
|
417
|
+
res = traverse_folders_for_network(child, item)
|
418
|
+
return res unless res.nil?
|
419
|
+
end
|
420
|
+
when RbVmomi::VIM::VmwareDistributedVirtualSwitch
|
421
|
+
idx = base.summary.portgroupName.find_index(item)
|
422
|
+
idx.nil? ? nil : base.portgroup[idx]
|
423
|
+
end
|
424
|
+
end
|
425
|
+
|
413
426
|
# Locate the Customization Spec in vSphere.
|
414
427
|
#
|
415
428
|
# @param [String] customization_spec The name of the Customization Spec.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-provisioning-vsphere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CenturyLink Cloud
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-10-
|
12
|
+
date: 2017-10-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chef
|