chef-provisioning-vsphere 2.2.1 → 2.2.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: 92dd7232f0e413e7c361d52694f55afaa06ff284
4
- data.tar.gz: e2fade153c0e0fc4afa2743fd3fa630cd5edc722
3
+ metadata.gz: 37f82ea348c58634c6971b8714c71b31c91c0cc5
4
+ data.tar.gz: d31a7417afd87dd0b475a81ffb529a6c990de31e
5
5
  SHA512:
6
- metadata.gz: 8ec7e70b47e2297b91cba24d7c22e5d95ae67e873a472c269a988c95f3e04a92de2a29ba9dee10de014dd47d78f65e77ec5f2bc4983f4d6f4661a07442ee2288
7
- data.tar.gz: 2f6e4e64d1dffeb4880463c6e8d3ee991924068d38aa8f9e159022c727bacda2a1d5c4ebee386f7aed9b03473392904b99529d9e003e282f5214b2ee0d523789
6
+ metadata.gz: 2653688852fe8b84876266ffc34a674cc82f038b39958af172c378d80ddabf7e0921a0daaaff11c5d4a7be69ea670faae77a744ef136df41dbd81d421bfff0a5
7
+ data.tar.gz: da5199536bf1a4122085fab98ab11b5db08cecad6ef346b19fc17337b1d2c948d9c0f6b3c3e911c89650ab24a19ee9f0d2342b728b97cc80baf8e7d731b5621f
@@ -1,7 +1,14 @@
1
1
  # Change Log
2
2
 
3
- ## [v2.2.1](https://github.com/chef-partners/chef-provisioning-vsphere/tree/v2.2.1)
3
+ ## [v2.2.2](https://github.com/chef-partners/chef-provisioning-vsphere/tree/v2.2.2)
4
4
 
5
+ [Full Changelog](https://github.com/chef-partners/chef-provisioning-vsphere/compare/v2.2.1...v2.2.2)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - Fix bug where ip address is not returned from guest tools [\#85](https://github.com/chef-partners/chef-provisioning-vsphere/pull/85) ([josh-barker](https://github.com/josh-barker))
10
+
11
+ ## [v2.2.1](https://github.com/chef-partners/chef-provisioning-vsphere/tree/v2.2.1) (2018-06-04)
5
12
  [Full Changelog](https://github.com/chef-partners/chef-provisioning-vsphere/compare/v2.2.0...v2.2.1)
6
13
 
7
14
  **Merged pull requests:**
data/Rakefile CHANGED
@@ -38,4 +38,4 @@ YARD::Rake::YardocTask.new do |t|
38
38
  t.stats_options = ['--list-undoc'] # optional
39
39
  end
40
40
 
41
- task default: %i[style unit]
41
+ task default: %i(style unit)
@@ -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.match(test)
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)
@@ -868,26 +868,27 @@ module ChefProvisioningVsphere
868
868
  def ip_to_bootstrap(bootstrap_options, vm)
869
869
  start_time = Time.now.utc
870
870
  timeout = bootstrap_ip_ready_timeout(bootstrap_options)
871
- @vm_helper.find_port?(vm, bootstrap_options) unless vm_helper.port?
871
+ vm_helper.find_port?(vm, bootstrap_options) unless vm_helper.port?
872
+
872
873
  # First get the IP to be tested
873
874
  if has_static_ip(bootstrap_options)
874
875
  if bootstrap_options[:customization_spec].is_a?(String)
875
876
  spec = vsphere_helper.find_customization_spec(bootstrap_options[:customization_spec])
876
- vm_ip = spec.nicSettingMap[0].adapter.ip.ipAddress # Use a direct return here?
877
+ vm_ip = spec.nicSettingMap[0].adapter.ip.ipAddress
877
878
  else
878
879
  ## Check if true available
879
- vm_ip = bootstrap_options[:customization_spec][:ipsettings][:ip] unless vm_helper.ip?
880
- nb_attempts = 0
881
- until @vm_helper.open_port?(vm_ip, @vm_helper.port, 1) || (nb_attempts > (bootstrap_options[:ready_timeout] || 90))
882
- print '.'
883
- nb_attempts += 1
884
- end
880
+ vm_ip = bootstrap_options[:customization_spec][:ipsettings][:ip]
885
881
  end
886
882
  elsif use_ipv4_during_bootstrap?(bootstrap_options)
887
883
  vm_ip = wait_for_ipv4(bootstrap_ipv4_timeout(bootstrap_options), vm)
888
884
  else
889
- vm_ip = vm.guest.ipAddress until vm_guest_ip?(vm) || Time.now.utc - start_time > timeout
885
+ until vm_guest_ip?(vm) || Time.now.utc - start_time > timeout
886
+ print '.'
887
+ sleep 1
888
+ end
889
+ vm_ip = vm.guest.ipAddress
890
890
  end
891
+
891
892
  # Then check that it is reachable
892
893
  until Time.now.utc - start_time > timeout
893
894
  print '.'
@@ -3,5 +3,5 @@
3
3
  # Provisions machines in vSphere.
4
4
  module ChefProvisioningVsphere
5
5
  # The version of this awesome Gem. BOOM.
6
- VERSION = '2.2.1'.freeze
6
+ VERSION = '2.2.2'.freeze
7
7
  end
@@ -17,12 +17,6 @@ module ChefProvisioningVsphere
17
17
  Timeout::Error, IPAddr::AddressFamilyError
18
18
  ].freeze
19
19
 
20
- # If the IP is true
21
- #
22
- def ip?
23
- @ip
24
- end
25
-
26
20
  # If the port is true
27
21
  #
28
22
  def port?
@@ -23,12 +23,12 @@ module Kitchen
23
23
  ssh: {
24
24
  user: 'root',
25
25
  paranoid: false,
26
- port: 22,
26
+ port: 22
27
27
  },
28
28
  convergence_options: {},
29
29
  customization_spec: {
30
- domain: 'local',
31
- },
30
+ domain: 'local'
31
+ }
32
32
  }
33
33
 
34
34
  default_config(:vsphere_name) do |driver|
@@ -130,4 +130,94 @@ describe ChefProvisioningVsphere::VsphereDriver do
130
130
  end
131
131
  end
132
132
  end
133
+
134
+ context "#ip_to_bootstrap" do
135
+ let(:metal_config) { {} }
136
+ let(:vm) { double("vm") }
137
+ let(:vm_helper) do
138
+ double("vm_helper")
139
+ end
140
+ before do
141
+ allow_any_instance_of(Kernel).to receive(:print)
142
+ end
143
+
144
+ before do
145
+ allow(subject).to receive(:vm_helper).and_return(vm_helper)
146
+
147
+ allow(vm_helper).to receive(:find_port?)
148
+ allow(vm_helper).to receive(:port?)
149
+ allow(vm_helper).to receive(:port).and_return(port)
150
+ end
151
+
152
+ let(:port) { 22 }
153
+ let(:bootstrap_conf) { {} }
154
+
155
+ context "has_static_ip" do
156
+ let(:bootstrap_conf) { { customization_spec: "some spec" } }
157
+ context "customization_spec is named" do
158
+ let(:vsphere_helper) { double("vsphere_helper") }
159
+ let(:fake_spec) { double("fake_spec") }
160
+ let(:fake_adapter) { double("fake_adapter") }
161
+ let(:fake_ip) do
162
+ RbVmomi::VIM::CustomizationFixedIp(
163
+ ipAddress: "1.1.1.1"
164
+ )
165
+ end
166
+
167
+ it "return ip address" do
168
+ allow(subject).to receive(:vsphere_helper).and_return(vsphere_helper)
169
+ allow(fake_adapter).to receive_message_chain(:adapter, :ip).and_return(fake_ip)
170
+ allow(fake_spec).to receive(:nicSettingMap).and_return([fake_adapter])
171
+ allow(vsphere_helper).to receive(:find_customization_spec).and_return(fake_spec)
172
+ allow(vm_helper).to receive(:open_port?).with("1.1.1.1", port, 1).and_return(true)
173
+
174
+ result = subject.send :ip_to_bootstrap, bootstrap_conf, vm
175
+ expect(result).to eq "1.1.1.1"
176
+ end
177
+ end
178
+
179
+ context "customization_spec has an ip address" do
180
+ let(:bootstrap_conf) do
181
+ {
182
+ customization_spec: {
183
+ ipsettings: {
184
+ ip: "2.2.2.2"
185
+ }
186
+ }
187
+ }
188
+ end
189
+
190
+ it "returns ip address" do
191
+ allow(vm_helper).to receive(:ip?)
192
+ allow(vm_helper).to receive(:open_port?).with("2.2.2.2", port, 1).and_return(true)
193
+ result = subject.send :ip_to_bootstrap, bootstrap_conf, vm
194
+ expect(result).to eq "2.2.2.2"
195
+ end
196
+ end
197
+ end
198
+
199
+ context "use_ipv4_during_bootstrap" do
200
+ let(:bootstrap_conf) { { bootstrap_ipv4: true } }
201
+
202
+ it "returns ip address" do
203
+ allow(subject).to receive(:wait_for_ipv4).and_return("3.3.3.3")
204
+ allow(vm_helper).to receive(:open_port?).with("3.3.3.3", port, 1).and_return(true)
205
+
206
+ result = subject.send :ip_to_bootstrap, bootstrap_conf, vm
207
+ expect(result).to eq "3.3.3.3"
208
+ end
209
+ end
210
+
211
+ context "wait until guest tools returns an IP address" do
212
+ it "returns ip address" do
213
+ allow_any_instance_of(Kernel).to receive(:sleep)
214
+ expect(subject).to receive(:vm_guest_ip?).exactly(3).times.and_return(false, false, true)
215
+ allow(vm).to receive_message_chain(:guest, :ipAddress).and_return("4.4.4.4")
216
+
217
+ allow(vm_helper).to receive(:open_port?).exactly(1).times.with("4.4.4.4", port, 1).and_return(true)
218
+ result = subject.send :ip_to_bootstrap, bootstrap_conf, vm
219
+ expect(result).to eq "4.4.4.4"
220
+ end
221
+ end
222
+ end
133
223
  end
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.2.1
4
+ version: 2.2.2
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: 2018-06-04 00:00:00.000000000 Z
12
+ date: 2018-06-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef