chef-provisioning-vsphere 2.0.2 → 2.0.3

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.
@@ -1,11 +1,14 @@
1
1
  # frozen_string_literal: true
2
- require 'json'
3
- require 'kitchen'
4
- require 'chef/provisioning/vsphere_driver'
5
- require 'chef/provisioning/machine_spec'
2
+ require "json"
3
+ require "kitchen"
4
+ require "chef/provisioning/vsphere_driver"
5
+ require "chef/provisioning/machine_spec"
6
6
 
7
+ # Main Kitchen Module
7
8
  module Kitchen
9
+ # Main Kitchen::Driver Module
8
10
  module Driver
11
+ # vSphere kitchen class extends the Kitchen::Driver::Base
9
12
  class Vsphere < Kitchen::Driver::Base
10
13
  @@chef_zero_server = false
11
14
 
@@ -17,20 +20,23 @@ module Kitchen
17
20
  bootstrap_options: {
18
21
  use_linked_clone: true,
19
22
  ssh: {
20
- user: 'root',
23
+ user: "root",
21
24
  paranoid: false,
22
- port: 22
25
+ port: 22,
23
26
  },
24
27
  convergence_options: {},
25
28
  customization_spec: {
26
- domain: 'local'
27
- }
29
+ domain: "local",
30
+ },
28
31
  }
29
32
 
30
33
  default_config(:vsphere_name) do |driver|
31
34
  "#{driver.instance.name}-#{SecureRandom.hex(4)}"
32
35
  end
33
36
 
37
+ # Creates VM on the vSphere cluster
38
+ #
39
+ # @param [Object] state Uses state of the machine from Chef provisioning.
34
40
  def create(state)
35
41
  state[:vsphere_name] = config[:vsphere_name]
36
42
  state[:username] = config[:machine_options][:bootstrap_options][:ssh][:user]
@@ -40,18 +46,21 @@ module Kitchen
40
46
  machine = with_provisioning_driver(state) do |action_handler, driver, machine_spec|
41
47
  driver.allocate_machine(action_handler, machine_spec, config[:machine_options])
42
48
  driver.ready_machine(action_handler, machine_spec, config[:machine_options])
43
- state[:server_id] = machine_spec.location['server_id']
44
- state[:hostname] = machine_spec.location['ipaddress']
49
+ state[:server_id] = machine_spec.location["server_id"]
50
+ state[:hostname] = machine_spec.location["ipaddress"]
45
51
  machine_spec.save(action_handler)
46
52
  end
47
53
  end
48
54
 
55
+ # Destroys VM on the vSphere cluster
56
+ #
57
+ # @param [Object] state Uses state of the machine from Chef provisioning.
49
58
  def destroy(state)
50
59
  return if state[:server_id].nil?
51
60
 
52
61
  with_provisioning_driver(state) do |action_handler, driver, machine_spec|
53
- machine_spec.location = { 'driver_url' => driver.driver_url,
54
- 'server_id' => state[:server_id] }
62
+ machine_spec.location = { "driver_url" => driver.driver_url,
63
+ "server_id" => state[:server_id] }
55
64
  driver.destroy_machine(action_handler, machine_spec, config[:machine_options])
56
65
  end
57
66
 
@@ -60,6 +69,9 @@ module Kitchen
60
69
  state.delete(:vsphere_name)
61
70
  end
62
71
 
72
+ # Leverages the chef provisioning driver options
73
+ #
74
+ # @param [Object] state Uses state of the machine from Chef provisioning.
63
75
  def with_provisioning_driver(state)
64
76
  config[:machine_options][:convergence_options] = { chef_server: chef_server }
65
77
  machine_spec = Chef::Provisioning.chef_managed_entry_store(chef_server).get(:machine, state[:vsphere_name])
@@ -73,13 +85,15 @@ module Kitchen
73
85
  yield(action_handler, driver, machine_spec)
74
86
  end
75
87
 
88
+ # Uses either a remote Chef server or Chef Zero
89
+ #
76
90
  def chef_server
77
91
  unless @@chef_zero_server
78
92
  vsphere_mutex.synchronize do
79
93
  unless @@chef_zero_server
80
94
  Chef::Config.local_mode = true
81
95
  Chef::Config.chef_repo_path = Chef::Config.find_chef_repo_path(Dir.pwd)
82
- require 'chef/local_mode'
96
+ require "chef/local_mode"
83
97
  Chef::LocalMode.setup_server_connectivity
84
98
  @@chef_zero_server = true
85
99
  end
@@ -89,6 +103,8 @@ module Kitchen
89
103
  Cheffish.default_chef_server
90
104
  end
91
105
 
106
+ # Creates a new mutex object for Kitchen
107
+ #
92
108
  def vsphere_mutex
93
109
  @@vsphere_mutex ||= begin
94
110
  Kitchen.mutex.synchronize do
@@ -0,0 +1,19 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.start do
4
+ # add_filter do |source_file|
5
+ # # source_file.lines.count < 5
6
+ # source.filename =~ /^#{SimpleCov.root}\/chef-provisioning-fake/)
7
+ # end
8
+ end
9
+
10
+ RSpec.configure do |config|
11
+ config.run_all_when_everything_filtered = true
12
+ config.filter_run :focus
13
+
14
+ # Run specs in random order to surface order dependencies. If you find an
15
+ # order dependency and want to debug it, you can fix the order by providing
16
+ # the seed, which is printed after each run.
17
+ # --seed 1234
18
+ config.order = 'random'
19
+ 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.0.2
4
+ version: 2.0.3
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-05-13 00:00:00.000000000 Z
12
+ date: 2017-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rbvmomi
@@ -191,6 +191,34 @@ dependencies:
191
191
  - - ">="
192
192
  - !ruby/object:Gem::Version
193
193
  version: '0'
194
+ - !ruby/object:Gem::Dependency
195
+ name: simplecov
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ type: :development
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ - !ruby/object:Gem::Dependency
209
+ name: yard
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
194
222
  description: Provisioner for creating vSphere VM instances in Chef Provisioning.
195
223
  email: jj@chef.io
196
224
  executables: []
@@ -198,6 +226,8 @@ extensions: []
198
226
  extra_rdoc_files:
199
227
  - README.md
200
228
  files:
229
+ - ".github/ISSUE_TEMPLATE.md"
230
+ - ".github/PULL_REQUEST_TEMPLATE.md"
201
231
  - ".gitignore"
202
232
  - ".rubocop.yml"
203
233
  - ".rubocop_todo.yml"
@@ -221,6 +251,7 @@ files:
221
251
  - lib/kitchen/driver/vsphere.rb
222
252
  - spec/integration_tests/.gitignore
223
253
  - spec/integration_tests/vsphere_driver_spec.rb
254
+ - spec/spec_helper.rb
224
255
  - spec/unit_tests/VsphereDriver_spec.rb
225
256
  - spec/unit_tests/VsphereUrl_spec.rb
226
257
  - spec/unit_tests/clone_spec_builder_spec.rb
@@ -253,6 +284,7 @@ summary: Provisioner for creating vSphere VM instances in Chef Provisioning.
253
284
  test_files:
254
285
  - spec/integration_tests/.gitignore
255
286
  - spec/integration_tests/vsphere_driver_spec.rb
287
+ - spec/spec_helper.rb
256
288
  - spec/unit_tests/VsphereDriver_spec.rb
257
289
  - spec/unit_tests/VsphereUrl_spec.rb
258
290
  - spec/unit_tests/clone_spec_builder_spec.rb