kitchen-dsc 0.8.0 → 0.8.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d72d58d0319e21aff93818d1ef18619e54ed76ec
4
- data.tar.gz: 732c13ad0c646ccd2f446e4f953f1821a7690774
3
+ metadata.gz: db8e9466934c88648b2716777580c81c8ac81f81
4
+ data.tar.gz: f9fdb9ac31e4ca3a375d76f9703aefec4091efeb
5
5
  SHA512:
6
- metadata.gz: 3d5f65251c7829f715229a83328ee07ffe7bad6eaec69021cd293c6cbfe16ed73522ff76185e2cf52cc7e576785c2cc4363b4b24e0c9ca7f639d9ac949cce213
7
- data.tar.gz: 7b7a308187d63be5a59e838d2592b7cb4371c338c398188d84ee6eda9a30c80b0eccc26265ff4c99303573c76d323bc142bb748f6d7581702ab90de095112717
6
+ metadata.gz: 4cd11a166f9c02099d9616e97b310c9be11b458687465f7bb42d379f2fe5964e19c148bdc2de1264c086417a0ea1d72ea118a0f73372d78bcc5dff3586edafe6
7
+ data.tar.gz: 04071da119ed739ef0cc4dffba8cc374102447b5fdaee609039074db00a4a51b7e0ebf87623a7642aa046162a871e4cd63be30b41a6671fe348bb9b95b44c618
data/README.md CHANGED
@@ -62,6 +62,13 @@ You will see a delay in the return of the run details due to an difference in ho
62
62
  * Requires WMF 5
63
63
  * Takes a string (for one module) or an array (for multiple) to install from the gallery
64
64
 
65
+ * gallery_name
66
+ * Custom PowerShell gallery name to install modules from.
67
+ * If there is no package source with this name registered on the machine, then gallery_uri must be configured as well.
68
+
69
+ * gallery_uri
70
+ * URI for a custom PowerShell gallery feed.
71
+
65
72
  ### Specific to repository style testing
66
73
  * modules_path
67
74
  * Defaults to 'modules'.
data/kitchen-dsc.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.name = 'kitchen-dsc'
8
8
  s.version = Kitchen::Dsc::VERSION
9
9
  s.authors = ['Steven Murawski']
10
- s.email = ['steven.murawski@gmail.com']
10
+ s.email = ['smurawski@chef.io']
11
11
  s.homepage = 'https://github.com/test-kitchen/kitchen-dsc'
12
12
  s.summary = 'PowerShell DSC provisioner for test-kitchen'
13
13
  candidates = Dir.glob('lib/**/*') + ['README.md', 'kitchen-dsc.gemspec']
@@ -26,16 +26,16 @@ DSC Provisioner for Test Kitchen
26
26
  TBD
27
27
 
28
28
  EOF
29
- s.add_dependency "test-kitchen", "~> 1.4"
29
+ s.add_dependency 'test-kitchen', '~> 1.4'
30
30
 
31
- s.add_development_dependency "countloc", "~> 0.4"
32
- s.add_development_dependency "rake"
33
- s.add_development_dependency "rspec", "~> 3.2"
34
- s.add_development_dependency "simplecov", "~> 0.9"
31
+ s.add_development_dependency 'countloc', '~> 0.4'
32
+ s.add_development_dependency 'rake'
33
+ s.add_development_dependency 'rspec', '~> 3.2'
34
+ s.add_development_dependency 'simplecov', '~> 0.9'
35
35
 
36
36
  # style and complexity libraries are tightly version pinned as newer releases
37
37
  # may introduce new and undesireable style choices which would be immediately
38
38
  # enforced in CI
39
- s.add_development_dependency "finstyle", "1.4.0"
40
- s.add_development_dependency "cane", "2.6.2"
39
+ s.add_development_dependency 'finstyle', '1.4.0'
40
+ s.add_development_dependency 'cane', '2.6.2'
41
41
  end
@@ -13,7 +13,6 @@ require 'kitchen/provisioner/base'
13
13
  require 'kitchen/util'
14
14
 
15
15
  module Kitchen
16
-
17
16
  module Provisioner
18
17
  class Dsc < Base
19
18
  kitchen_provisioner_api_version 2
@@ -31,6 +30,9 @@ module Kitchen
31
30
  default_config :configuration_data_variable, 'ConfigurationData'
32
31
  default_config :configuration_data
33
32
 
33
+ default_config :nuget_force_bootstrap, true
34
+ default_config :gallery_uri
35
+ default_config :gallery_name
34
36
  default_config :modules_from_gallery
35
37
 
36
38
  default_config :dsc_local_configuration_manager_version, 'wmf4'
@@ -61,13 +63,10 @@ module Kitchen
61
63
  configuration_mode: (resolve_lcm_setting 'configuration_mode', 'ApplyAndAutoCorrect'),
62
64
  debug_mode: (resolve_lcm_setting 'debug_mode', 'All'),
63
65
  reboot_if_needed: (resolve_lcm_setting 'reboot_if_needed', false),
64
- refresh_mode: (resolve_lcm_setting 'refresh_mode' , 'PUSH')
66
+ refresh_mode: (resolve_lcm_setting 'refresh_mode', 'PUSH')
65
67
  }
66
68
  end
67
69
 
68
-
69
- # Disable line length check, it is all embedded script.
70
- # rubocop:disable Metrics/LineLength
71
70
  def install_command
72
71
  lcm_config = lcm_settings
73
72
  case config[:dsc_local_configuration_manager_version]
@@ -142,14 +141,34 @@ module Kitchen
142
141
 
143
142
  def powershell_modules
144
143
  Array(config[:modules_from_gallery]).map do |powershell_module|
145
- "install-module '#{powershell_module}' -force | out-null"
144
+ info("Installing #{powershell_module} from #{psmodule_repository_name}.")
145
+ "install-module '#{powershell_module}' -Repository #{psmodule_repository_name} -force | out-null"
146
146
  end
147
147
  end
148
148
 
149
+ def nuget_force_bootstrap
150
+ return unless config[:nuget_force_bootstrap]
151
+ info('Bootstrapping the nuget package provider for PowerShell PackageManagement.')
152
+ 'install-packageprovider nuget -force -forcebootstrap | out-null'
153
+ end
154
+
155
+ def psmodule_repository_name
156
+ return 'PSGallery' if config[:gallery_name].nil? && config[:gallery_uri].nil?
157
+ return 'testing' if config[:gallery_name].nil?
158
+ config[:gallery_name]
159
+ end
160
+
161
+ def register_psmodule_repository
162
+ return if config[:gallery_uri].nil?
163
+ info("Registering a new PowerShellGet Repository - #{psmodule_repository_name}")
164
+ "register-packagesource -providername PowerShellGet -name '#{psmodule_repository_name}' -location '#{config[:gallery_uri]}' -force -trusted"
165
+ end
166
+
149
167
  def install_module_script
150
168
  return if config[:modules_from_gallery].nil?
151
- script = <<-EOH
152
- install-packageprovider nuget -force -forcebootstrap | out-null
169
+ <<-EOH
170
+ #{nuget_force_bootstrap}
171
+ #{register_psmodule_repository}
153
172
  #{powershell_modules.join("\n")}
154
173
  EOH
155
174
  end
@@ -179,8 +198,6 @@ module Kitchen
179
198
  prepare_configuration_script
180
199
  end
181
200
 
182
- # Disable line length check, it is all logging and embedded script.
183
- # rubocop:disable Metrics/LineLength
184
201
  def prepare_command
185
202
  info('Moving DSC Resources onto PSModulePath')
186
203
  info("Generating the MOF script for the configuration #{config[:configuration_name]}")
@@ -259,7 +276,7 @@ module Kitchen
259
276
  def list_files(path)
260
277
  base_directory_content = Dir.glob(File.join(path, '*'))
261
278
  nested_directory_content = Dir.glob(File.join(path, '*/**/*'))
262
- all_directory_content =([base_directory_content, nested_directory_content]).flatten
279
+ all_directory_content = [base_directory_content, nested_directory_content].flatten
263
280
 
264
281
  ignore_files = ['Gemfile', 'Gemfile.lock', 'README.md', 'LICENSE.txt']
265
282
  all_directory_content.reject do |f|
@@ -290,10 +307,10 @@ module Kitchen
290
307
  sandbox_module_path = File.join(sandbox_path, 'modules')
291
308
 
292
309
  if Dir.exist?(module_path)
293
- debug("Moving #{module_path} to #{sandbox_module_path}")
294
- FileUtils.cp_r(module_path, sandbox_module_path)
310
+ debug("Moving #{module_path} to #{sandbox_module_path}")
311
+ FileUtils.cp_r(module_path, sandbox_module_path)
295
312
  else
296
- debug("The modules path #{module_path} was not found. Not moving to #{sandbox_module_path}.")
313
+ debug("The modules path #{module_path} was not found. Not moving to #{sandbox_module_path}.")
297
314
  end
298
315
  end
299
316
 
@@ -302,19 +319,19 @@ module Kitchen
302
319
  end
303
320
 
304
321
  def pad(depth = 0)
305
- " " * depth
322
+ ' ' * depth
306
323
  end
307
324
 
308
325
  def ps_hash(obj, depth = 0)
309
326
  if obj.is_a?(Hash)
310
- obj.map { |k, v|
311
- %{#{pad(depth + 2)}#{ps_hash(k)} = #{ps_hash(v, depth + 2)}}
312
- }.join(";\n").insert(0, "@{\n").insert(-1, "\n#{pad(depth)}}")
327
+ obj.map do |k, v|
328
+ %(#{pad(depth + 2)}#{ps_hash(k)} = #{ps_hash(v, depth + 2)})
329
+ end.join(";\n").insert(0, "@{\n").insert(-1, "\n#{pad(depth)}}")
313
330
  elsif obj.is_a?(Array)
314
- array_string = obj.map { |v| ps_hash(v, depth+4)}.join(",")
331
+ array_string = obj.map { |v| ps_hash(v, depth + 4) }.join(',')
315
332
  "#{pad(depth)}@(\n#{array_string}\n)"
316
333
  else
317
- %{"#{obj}"}
334
+ %("#{obj}")
318
335
  end
319
336
  end
320
337
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kitchen
4
4
  module Dsc
5
- VERSION = '0.8.0'
5
+ VERSION = '0.8.1'.freeze
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-dsc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Murawski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen
@@ -118,7 +118,7 @@ description: |+
118
118
  TBD
119
119
 
120
120
  email:
121
- - steven.murawski@gmail.com
121
+ - smurawski@chef.io
122
122
  executables: []
123
123
  extensions: []
124
124
  extra_rdoc_files: []