chef 16.4.35 → 16.6.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (320) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Rakefile +2 -2
  4. data/bin/knife +1 -1
  5. data/chef.gemspec +2 -1
  6. data/lib/chef/api_client/registration.rb +6 -6
  7. data/lib/chef/application.rb +19 -22
  8. data/lib/chef/application/apply.rb +12 -7
  9. data/lib/chef/application/base.rb +26 -25
  10. data/lib/chef/application/client.rb +16 -8
  11. data/lib/chef/application/exit_code.rb +13 -4
  12. data/lib/chef/application/knife.rb +22 -11
  13. data/lib/chef/application/solo.rb +2 -1
  14. data/lib/chef/application/windows_service.rb +14 -14
  15. data/lib/chef/application/windows_service_manager.rb +6 -6
  16. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  18. data/lib/chef/chef_fs/knife.rb +2 -2
  19. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  20. data/lib/chef/client.rb +12 -42
  21. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  22. data/lib/chef/cookbook/gem_installer.rb +1 -1
  23. data/lib/chef/cookbook/synchronizer.rb +2 -2
  24. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  25. data/lib/chef/cookbook_uploader.rb +1 -1
  26. data/lib/chef/data_collector.rb +7 -6
  27. data/lib/chef/data_collector/config_validation.rb +22 -13
  28. data/lib/chef/data_collector/run_end_message.rb +2 -2
  29. data/lib/chef/data_collector/run_start_message.rb +1 -1
  30. data/lib/chef/deprecated.rb +1 -1
  31. data/lib/chef/deprecation/warnings.rb +2 -2
  32. data/lib/chef/digester.rb +2 -2
  33. data/lib/chef/dsl/chef_vault.rb +1 -1
  34. data/lib/chef/dsl/data_query.rb +2 -2
  35. data/lib/chef/dsl/platform_introspection.rb +1 -1
  36. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  37. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  38. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  39. data/lib/chef/environment.rb +2 -2
  40. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  41. data/lib/chef/exceptions.rb +4 -4
  42. data/lib/chef/file_access_control/windows.rb +5 -1
  43. data/lib/chef/file_content_management/tempfile.rb +1 -1
  44. data/lib/chef/formatters/doc.rb +7 -6
  45. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  46. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  47. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  48. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  49. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  50. data/lib/chef/formatters/indentable_output_stream.rb +2 -2
  51. data/lib/chef/formatters/minimal.rb +5 -4
  52. data/lib/chef/http.rb +6 -4
  53. data/lib/chef/http/auth_credentials.rb +5 -1
  54. data/lib/chef/http/authenticator.rb +1 -1
  55. data/lib/chef/http/basic_client.rb +4 -2
  56. data/lib/chef/http/decompressor.rb +1 -1
  57. data/lib/chef/http/http_request.rb +7 -5
  58. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  59. data/lib/chef/http/ssl_policies.rb +1 -1
  60. data/lib/chef/json_compat.rb +1 -1
  61. data/lib/chef/knife.rb +4 -4
  62. data/lib/chef/knife/bootstrap.rb +16 -14
  63. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  64. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  65. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  66. data/lib/chef/knife/client_create.rb +3 -3
  67. data/lib/chef/knife/config_get.rb +8 -97
  68. data/lib/chef/knife/config_get_profile.rb +9 -9
  69. data/lib/chef/knife/config_list.rb +139 -0
  70. data/lib/chef/knife/config_list_profiles.rb +8 -98
  71. data/lib/chef/knife/config_show.rb +127 -0
  72. data/lib/chef/knife/config_use.rb +61 -0
  73. data/lib/chef/knife/config_use_profile.rb +9 -24
  74. data/lib/chef/knife/configure.rb +4 -2
  75. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  76. data/lib/chef/knife/core/object_loader.rb +1 -1
  77. data/lib/chef/knife/core/ui.rb +1 -1
  78. data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
  79. data/lib/chef/knife/exec.rb +2 -2
  80. data/lib/chef/knife/node_policy_set.rb +2 -2
  81. data/lib/chef/knife/node_run_list_add.rb +1 -1
  82. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  83. data/lib/chef/knife/node_run_list_set.rb +1 -1
  84. data/lib/chef/knife/node_show.rb +2 -2
  85. data/lib/chef/knife/role_env_run_list_add.rb +1 -1
  86. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  87. data/lib/chef/knife/role_run_list_add.rb +1 -1
  88. data/lib/chef/knife/role_run_list_set.rb +1 -1
  89. data/lib/chef/knife/search.rb +0 -1
  90. data/lib/chef/knife/serve.rb +3 -3
  91. data/lib/chef/knife/ssh.rb +18 -3
  92. data/lib/chef/knife/ssl_check.rb +3 -3
  93. data/lib/chef/knife/status.rb +2 -2
  94. data/lib/chef/knife/tag_create.rb +1 -1
  95. data/lib/chef/knife/tag_delete.rb +1 -1
  96. data/lib/chef/knife/user_create.rb +2 -2
  97. data/lib/chef/knife/yaml_convert.rb +1 -1
  98. data/lib/chef/local_mode.rb +2 -2
  99. data/lib/chef/log/syslog.rb +2 -2
  100. data/lib/chef/log/winevt.rb +2 -2
  101. data/lib/chef/mixin/deep_merge.rb +0 -12
  102. data/lib/chef/mixin/openssl_helper.rb +1 -4
  103. data/lib/chef/mixin/powershell_exec.rb +22 -10
  104. data/lib/chef/mixin/powershell_out.rb +12 -5
  105. data/lib/chef/mixin/template.rb +3 -3
  106. data/lib/chef/mixin/uris.rb +4 -2
  107. data/lib/chef/mixin/versioned_api.rb +1 -2
  108. data/lib/chef/monkey_patches/net_http.rb +4 -4
  109. data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
  110. data/lib/chef/node_map.rb +4 -4
  111. data/lib/chef/policy_builder/dynamic.rb +2 -0
  112. data/lib/chef/policy_builder/policyfile.rb +2 -2
  113. data/lib/chef/powershell.rb +3 -2
  114. data/lib/chef/provider.rb +1 -5
  115. data/lib/chef/provider/file.rb +2 -2
  116. data/lib/chef/provider/ifconfig.rb +2 -2
  117. data/lib/chef/provider/ifconfig/debian.rb +33 -15
  118. data/lib/chef/provider/ifconfig/redhat.rb +51 -17
  119. data/lib/chef/provider/launchd.rb +2 -2
  120. data/lib/chef/provider/link.rb +0 -9
  121. data/lib/chef/provider/mount/linux.rb +63 -0
  122. data/lib/chef/provider/package/dpkg.rb +3 -12
  123. data/lib/chef/provider/package/homebrew.rb +1 -1
  124. data/lib/chef/provider/package/rubygems.rb +21 -18
  125. data/lib/chef/provider/package/snap.rb +0 -1
  126. data/lib/chef/provider/package/windows.rb +2 -2
  127. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
  128. data/lib/chef/provider/package/zypper.rb +1 -1
  129. data/lib/chef/provider/powershell_script.rb +12 -1
  130. data/lib/chef/provider/remote_file/content.rb +3 -0
  131. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  132. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  133. data/lib/chef/provider/route.rb +2 -6
  134. data/lib/chef/provider/service/macosx.rb +2 -2
  135. data/lib/chef/provider/service/redhat.rb +1 -1
  136. data/lib/chef/provider/template_finder.rb +2 -10
  137. data/lib/chef/provider/user/dscl.rb +5 -5
  138. data/lib/chef/provider/user/mac.rb +3 -3
  139. data/lib/chef/provider/windows_task.rb +1 -2
  140. data/lib/chef/provider/zypper_repository.rb +2 -2
  141. data/lib/chef/provider_resolver.rb +1 -1
  142. data/lib/chef/providers.rb +1 -0
  143. data/lib/chef/pwsh.rb +64 -0
  144. data/lib/chef/recipe.rb +2 -2
  145. data/lib/chef/resource.rb +2 -2
  146. data/lib/chef/resource/apt_repository.rb +6 -5
  147. data/lib/chef/resource/bff_package.rb +22 -0
  148. data/lib/chef/resource/breakpoint.rb +57 -2
  149. data/lib/chef/resource/build_essential.rb +1 -1
  150. data/lib/chef/resource/cab_package.rb +29 -0
  151. data/lib/chef/resource/chef_client_config.rb +313 -0
  152. data/lib/chef/resource/chef_client_cron.rb +35 -28
  153. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  154. data/lib/chef/resource/chef_client_scheduled_task.rb +24 -21
  155. data/lib/chef/resource/chef_client_systemd_timer.rb +27 -20
  156. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  157. data/lib/chef/resource/chef_gem.rb +10 -10
  158. data/lib/chef/resource/chef_handler.rb +149 -4
  159. data/lib/chef/resource/chef_sleep.rb +3 -3
  160. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  161. data/lib/chef/resource/cookbook_file.rb +2 -2
  162. data/lib/chef/resource/cron/_cron_shared.rb +1 -0
  163. data/lib/chef/resource/cron/cron_d.rb +2 -3
  164. data/lib/chef/resource/dnf_package.rb +2 -2
  165. data/lib/chef/resource/dsc_resource.rb +0 -1
  166. data/lib/chef/resource/dsc_script.rb +2 -2
  167. data/lib/chef/resource/execute.rb +6 -6
  168. data/lib/chef/resource/file.rb +4 -4
  169. data/lib/chef/resource/gem_package.rb +5 -5
  170. data/lib/chef/resource/homebrew_package.rb +3 -3
  171. data/lib/chef/resource/homebrew_update.rb +5 -5
  172. data/lib/chef/resource/hostname.rb +2 -2
  173. data/lib/chef/resource/kernel_module.rb +1 -1
  174. data/lib/chef/resource/launchd.rb +17 -16
  175. data/lib/chef/resource/locale.rb +2 -2
  176. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  177. data/lib/chef/resource/mount.rb +1 -1
  178. data/lib/chef/resource/notify_group.rb +0 -1
  179. data/lib/chef/resource/ohai.rb +46 -3
  180. data/lib/chef/resource/ohai_hint.rb +33 -0
  181. data/lib/chef/resource/openssl_dhparam.rb +27 -5
  182. data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
  183. data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
  184. data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
  185. data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
  186. data/lib/chef/resource/openssl_x509_crl.rb +19 -10
  187. data/lib/chef/resource/openssl_x509_request.rb +14 -16
  188. data/lib/chef/resource/osx_profile.rb +77 -13
  189. data/lib/chef/resource/plist.rb +1 -1
  190. data/lib/chef/resource/powershell_package_source.rb +5 -5
  191. data/lib/chef/resource/powershell_script.rb +7 -1
  192. data/lib/chef/resource/reboot.rb +2 -2
  193. data/lib/chef/resource/remote_file.rb +3 -3
  194. data/lib/chef/resource/rhsm_register.rb +22 -10
  195. data/lib/chef/resource/ruby_block.rb +2 -2
  196. data/lib/chef/resource/scm/subversion.rb +2 -2
  197. data/lib/chef/resource/service.rb +3 -3
  198. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  199. data/lib/chef/resource/support/client.erb +65 -0
  200. data/lib/chef/resource/support/cron.d.erb +1 -1
  201. data/lib/chef/resource/support/cron_access.erb +1 -1
  202. data/lib/chef/resource/support/sudoer.erb +1 -1
  203. data/lib/chef/resource/support/ulimit.erb +1 -1
  204. data/lib/chef/resource/sysctl.rb +1 -5
  205. data/lib/chef/resource/systemd_unit.rb +2 -2
  206. data/lib/chef/resource/template.rb +2 -2
  207. data/lib/chef/resource/timezone.rb +112 -73
  208. data/lib/chef/resource/windows_ad_join.rb +10 -3
  209. data/lib/chef/resource/windows_audit_policy.rb +26 -24
  210. data/lib/chef/resource/windows_certificate.rb +6 -4
  211. data/lib/chef/resource/windows_firewall_profile.rb +22 -20
  212. data/lib/chef/resource/windows_package.rb +28 -5
  213. data/lib/chef/resource/windows_printer.rb +5 -3
  214. data/lib/chef/resource/windows_printer_port.rb +6 -4
  215. data/lib/chef/resource/windows_user_privilege.rb +53 -54
  216. data/lib/chef/resource/windows_workgroup.rb +3 -3
  217. data/lib/chef/resource/yum_package.rb +2 -2
  218. data/lib/chef/resource_reporter.rb +0 -2
  219. data/lib/chef/resources.rb +4 -1
  220. data/lib/chef/run_context.rb +2 -2
  221. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  222. data/lib/chef/run_lock.rb +2 -2
  223. data/lib/chef/search/query.rb +6 -5
  224. data/lib/chef/shell.rb +31 -26
  225. data/lib/chef/shell/ext.rb +11 -11
  226. data/lib/chef/shell/shell_session.rb +2 -2
  227. data/lib/chef/train_transport.rb +5 -104
  228. data/lib/chef/util/backup.rb +1 -1
  229. data/lib/chef/util/diff.rb +3 -3
  230. data/lib/chef/util/powershell/cmdlet.rb +3 -1
  231. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  232. data/lib/chef/util/threaded_job_queue.rb +0 -2
  233. data/lib/chef/version.rb +1 -1
  234. data/lib/chef/win32/crypto.rb +1 -1
  235. data/lib/chef/win32/file.rb +1 -1
  236. data/lib/chef/win32/registry.rb +1 -2
  237. data/lib/chef/win32/unicode.rb +1 -1
  238. data/spec/data/shef-config.rb +1 -1
  239. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  240. data/spec/functional/mixin/powershell_out_spec.rb +9 -1
  241. data/spec/functional/resource/aix_service_spec.rb +2 -2
  242. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  243. data/spec/functional/resource/insserv_spec.rb +1 -1
  244. data/spec/functional/resource/powershell_script_spec.rb +57 -14
  245. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  246. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  247. data/spec/functional/resource/windows_task_spec.rb +13 -13
  248. data/spec/functional/version_spec.rb +3 -3
  249. data/spec/integration/client/client_spec.rb +4 -4
  250. data/spec/integration/client/exit_code_spec.rb +3 -2
  251. data/spec/integration/client/ipv6_spec.rb +1 -1
  252. data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
  253. data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
  254. data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
  255. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  256. data/spec/integration/ohai/ohai_spec.rb +61 -0
  257. data/spec/integration/recipes/remote_directory.rb +1 -1
  258. data/spec/integration/solo/solo_spec.rb +5 -5
  259. data/spec/spec_helper.rb +8 -6
  260. data/spec/stress/win32/file_spec.rb +1 -1
  261. data/spec/support/chef_helpers.rb +2 -2
  262. data/spec/support/matchers/leak.rb +2 -2
  263. data/spec/support/platform_helpers.rb +22 -35
  264. data/spec/support/shared/functional/securable_resource.rb +108 -27
  265. data/spec/support/shared/functional/win32_service.rb +1 -1
  266. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  267. data/spec/tiny_server.rb +0 -1
  268. data/spec/unit/application/client_spec.rb +2 -2
  269. data/spec/unit/application/exit_code_spec.rb +10 -0
  270. data/spec/unit/application_spec.rb +4 -6
  271. data/spec/unit/chef_fs/config_spec.rb +1 -1
  272. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  273. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  274. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  275. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  276. data/spec/unit/cookbook_spec.rb +2 -2
  277. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  278. data/spec/unit/data_collector_spec.rb +6 -117
  279. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  280. data/spec/unit/file_access_control_spec.rb +1 -1
  281. data/spec/unit/knife/bootstrap_spec.rb +6 -6
  282. data/spec/unit/knife/core/ui_spec.rb +1 -0
  283. data/spec/unit/knife/ssh_spec.rb +2 -2
  284. data/spec/unit/lwrp_spec.rb +3 -3
  285. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  286. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  287. data/spec/unit/mixin/powershell_exec_spec.rb +39 -2
  288. data/spec/unit/mixin/powershell_out_spec.rb +14 -0
  289. data/spec/unit/mixin/securable_spec.rb +2 -2
  290. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  291. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  292. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  293. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  294. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  295. data/spec/unit/provider/powershell_script_spec.rb +11 -0
  296. data/spec/unit/provider/route_spec.rb +0 -2
  297. data/spec/unit/recipe_spec.rb +1 -1
  298. data/spec/unit/resource/chef_client_config_spec.rb +137 -0
  299. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  300. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  301. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  302. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  303. data/spec/unit/resource/launchd_spec.rb +8 -0
  304. data/spec/unit/resource/osx_profile_spec.rb +67 -1
  305. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  306. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  307. data/spec/unit/resource/timezone_spec.rb +63 -0
  308. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  309. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  310. data/spec/unit/run_lock_spec.rb +5 -1
  311. data/spec/unit/runner_spec.rb +1 -2
  312. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  313. data/spec/unit/shell/shell_session_spec.rb +35 -64
  314. data/spec/unit/shell_spec.rb +16 -19
  315. data/spec/unit/train_transport_spec.rb +14 -13
  316. data/spec/unit/util/selinux_spec.rb +2 -0
  317. data/tasks/rspec.rb +0 -2
  318. metadata +46 -18
  319. data/lib/chef/dist.rb +0 -68
  320. data/spec/integration/knife/config_get_profile_spec.rb +0 -114
@@ -40,9 +40,6 @@
40
40
  # CONNECTION WITH THE SOFTWARE OR THE USE OF OTHER DEALINGS IN THE
41
41
  # SOFTWARE.
42
42
 
43
- require "diff/lcs"
44
- require "diff/lcs/hunk"
45
-
46
43
  class Chef
47
44
  class Util
48
45
  class Diff
@@ -86,6 +83,9 @@ class Chef
86
83
  # produces a unified-output-format diff with 3 lines of context
87
84
  # ChefFS uses udiff() directly
88
85
  def udiff(old_file, new_file)
86
+ require "diff/lcs"
87
+ require "diff/lcs/hunk"
88
+
89
89
  diff_str = ""
90
90
  file_length_difference = 0
91
91
 
@@ -16,7 +16,9 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "mixlib/shellout" unless defined?(Mixlib::ShellOut::DEFAULT_READ_TIMEOUT)
19
+ module Mixlib
20
+ autoload :ShellOut, "mixlib/shellout"
21
+ end
20
22
  require_relative "../../mixin/windows_architecture_helper"
21
23
  require_relative "cmdlet_result"
22
24
 
@@ -18,24 +18,28 @@
18
18
 
19
19
  require_relative "../../win32/crypto" if ChefUtils.windows?
20
20
 
21
- class Chef::Util::Powershell
22
- class PSCredential
23
- def initialize(username, password)
24
- @username = username
25
- @password = password
26
- end
21
+ class Chef
22
+ class Util
23
+ class Powershell
24
+ class PSCredential
25
+ def initialize(username, password)
26
+ @username = username
27
+ @password = password
28
+ end
27
29
 
28
- def to_psobject
29
- "New-Object System.Management.Automation.PSCredential('#{@username}',('#{encrypt(@password)}' | ConvertTo-SecureString))"
30
- end
30
+ def to_psobject
31
+ "New-Object System.Management.Automation.PSCredential('#{@username}',('#{encrypt(@password)}' | ConvertTo-SecureString))"
32
+ end
31
33
 
32
- alias to_s to_psobject
33
- alias to_text to_psobject
34
+ alias to_s to_psobject
35
+ alias to_text to_psobject
34
36
 
35
- private
37
+ private
36
38
 
37
- def encrypt(str)
38
- Chef::ReservedNames::Win32::Crypto.encrypt(str)
39
+ def encrypt(str)
40
+ Chef::ReservedNames::Win32::Crypto.encrypt(str)
41
+ end
42
+ end
39
43
  end
40
44
  end
41
45
  end
@@ -13,8 +13,6 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- require "thread"
17
-
18
16
  class Chef
19
17
  class Util
20
18
  # A simple threaded job queue
@@ -23,7 +23,7 @@ require_relative "version_string"
23
23
 
24
24
  class Chef
25
25
  CHEF_ROOT = File.expand_path("..", __dir__)
26
- VERSION = Chef::VersionString.new("16.4.35")
26
+ VERSION = Chef::VersionString.new("16.6.14")
27
27
  end
28
28
 
29
29
  #
@@ -20,7 +20,7 @@ require_relative "error"
20
20
  require_relative "api/memory"
21
21
  require_relative "api/crypto"
22
22
  require_relative "unicode"
23
- require "digest"
23
+ require "digest" unless defined?(Digest)
24
24
 
25
25
  class Chef
26
26
  module ReservedNames::Win32
@@ -124,7 +124,7 @@ class Chef
124
124
  # Return the link destination (strip off \??\ at the beginning, which is a local filesystem thing)
125
125
  link_dest = reparse_buffer.reparse_buffer.substitute_name
126
126
  if /^\\\?\?\\/.match?(link_dest)
127
- link_dest = link_dest[4..-1]
127
+ link_dest = link_dest[4..]
128
128
  end
129
129
  link_dest
130
130
  end
@@ -21,9 +21,8 @@ require_relative "api"
21
21
  require_relative "../mixin/wide_string"
22
22
 
23
23
  if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
24
- require_relative "../monkey_patches/win32/registry"
24
+ Win32.autoload :Registry, File.expand_path("../monkey_patches/win32/registry", __dir__)
25
25
  require_relative "api/registry"
26
- require "win32/registry" unless defined?(Win32::Registry)
27
26
  require "win32/api"
28
27
  end
29
28
 
@@ -40,7 +40,7 @@ module FFI
40
40
  last_char = nil
41
41
  while last_char != "\000\000"
42
42
  length += 1
43
- last_char = get_bytes(0, length * 2)[-2..-1]
43
+ last_char = get_bytes(0, length * 2)[-2..]
44
44
  end
45
45
 
46
46
  num_wchars = length
@@ -7,5 +7,5 @@ ohai[:disabled_plugins] << "solaris2::cpu" << "solaris2::dmi" << "solaris2::file
7
7
  ohai[:disabled_plugins] << "solaris2::virtualization" << "solaris2::zpools"
8
8
  ohai[:disabled_plugins] << "c" << "php" << "mono" << "groovy" << "lua" << "erlang"
9
9
  ohai[:disabled_plugins] << "kernel" << "linux::filesystem" << "ruby"
10
- chef_repo_path File.dirname(__FILE__)
10
+ chef_repo_path __dir__
11
11
  cookbook_path "#{chef_repo_path}/cookbooks"
@@ -19,6 +19,7 @@
19
19
  require "spec_helper"
20
20
  require "securerandom"
21
21
  require "chef/event_loggers/windows_eventlog"
22
+ require "chef-utils"
22
23
  if ChefUtils.windows?
23
24
  require "win32/eventlog"
24
25
  include Win32
@@ -49,7 +50,7 @@ describe Chef::EventLoggers::WindowsEventLogger, :windows_only do
49
50
  logger.run_start(version, run_status)
50
51
 
51
52
  expect(event_log.read(flags, offset).any? do |e|
52
- e.source == Chef::Dist::SHORT && e.event_id == 10000 &&
53
+ e.source == ChefUtils::Dist::Infra::SHORT && e.event_id == 10000 &&
53
54
  e.string_inserts[0].include?(version)
54
55
  end ).to be_truthy
55
56
  end
@@ -58,7 +59,7 @@ describe Chef::EventLoggers::WindowsEventLogger, :windows_only do
58
59
  logger.run_started(run_status)
59
60
 
60
61
  expect(event_log.read(flags, offset).any? do |e|
61
- e.source == Chef::Dist::SHORT && e.event_id == 10001 &&
62
+ e.source == ChefUtils::Dist::Infra::SHORT && e.event_id == 10001 &&
62
63
  e.string_inserts[0].include?(run_id)
63
64
  end ).to be_truthy
64
65
  end
@@ -68,7 +69,7 @@ describe Chef::EventLoggers::WindowsEventLogger, :windows_only do
68
69
  logger.run_completed(node)
69
70
 
70
71
  expect(event_log.read(flags, offset).any? do |e|
71
- e.source == Chef::Dist::SHORT && e.event_id == 10002 &&
72
+ e.source == ChefUtils::Dist::Infra::SHORT && e.event_id == 10002 &&
72
73
  e.string_inserts[0].include?(run_id) &&
73
74
  e.string_inserts[1].include?(elapsed_time.to_s)
74
75
  end).to be_truthy
@@ -79,7 +80,7 @@ describe Chef::EventLoggers::WindowsEventLogger, :windows_only do
79
80
  logger.run_failed(mock_exception)
80
81
 
81
82
  expect(event_log.read(flags, offset).any? do |e|
82
- e.source == Chef::Dist::SHORT && e.event_id == 10003 &&
83
+ e.source == ChefUtils::Dist::Infra::SHORT && e.event_id == 10003 &&
83
84
  e.string_inserts[0].include?(run_id) &&
84
85
  e.string_inserts[1].include?(elapsed_time.to_s) &&
85
86
  e.string_inserts[2].include?(mock_exception.class.name) &&
@@ -93,7 +94,7 @@ describe Chef::EventLoggers::WindowsEventLogger, :windows_only do
93
94
  logger.run_failed(mock_exception)
94
95
 
95
96
  expect(event_log.read(flags, offset).any? do |e|
96
- e.source == Chef::Dist::SHORT && e.event_id == 10003 &&
97
+ e.source == ChefUtils::Dist::Infra::SHORT && e.event_id == 10003 &&
97
98
  e.string_inserts[0].include?("UNKNOWN") &&
98
99
  e.string_inserts[1].include?("UNKNOWN") &&
99
100
  e.string_inserts[2].include?(mock_exception.class.name) &&
@@ -18,7 +18,7 @@
18
18
  require "spec_helper"
19
19
  require "chef/mixin/powershell_out"
20
20
 
21
- describe Chef::Mixin::PowershellOut, windows_only: true do
21
+ describe Chef::Mixin::PowershellOut, :windows_only do
22
22
  include Chef::Mixin::PowershellOut
23
23
 
24
24
  describe "#powershell_out" do
@@ -26,6 +26,14 @@ describe Chef::Mixin::PowershellOut, windows_only: true do
26
26
  expect(powershell_out("get-process").run_command.stdout).to match /Handles/
27
27
  end
28
28
 
29
+ it "uses :powershell by default" do
30
+ expect(powershell_out("$PSVersionTable").run_command.stdout).to match /CLRVersion/
31
+ end
32
+
33
+ it ":pwsh interpreter uses core edition", :pwsh_installed do
34
+ expect(powershell_out("$PSVersionTable", :pwsh).run_command.stdout).to match /Core/
35
+ end
36
+
29
37
  it "does not raise exceptions when the command is invalid" do
30
38
  powershell_out("this-is-not-a-valid-command").run_command
31
39
  end
@@ -89,7 +89,7 @@ describe Chef::Resource::Service, :requires_root, :aix_only do
89
89
 
90
90
  describe "When service is a subsystem" do
91
91
  before(:all) do
92
- script_dir = File.join(File.dirname(__FILE__), "/../assets/")
92
+ script_dir = File.join(__dir__, "/../assets/")
93
93
  shell_out!("mkssys -s ctestsys -p #{script_dir}/testchefsubsys -u #{get_user_id} -S -n 15 -f 9 -R -Q")
94
94
  end
95
95
 
@@ -117,7 +117,7 @@ describe Chef::Resource::Service, :requires_root, :aix_only do
117
117
  # Cannot run this test on a WPAR
118
118
  describe "When service is a group", :not_wpar do
119
119
  before(:all) do
120
- script_dir = File.join(File.dirname(__FILE__), "/../assets/")
120
+ script_dir = File.join(__dir__, "/../assets/")
121
121
  shell_out!("mkssys -s ctestsys -p #{script_dir}/testchefsubsys -u #{get_user_id} -S -n 15 -f 9 -R -Q -G ctestgrp")
122
122
  end
123
123
 
@@ -69,7 +69,7 @@ describe Chef::Resource::Service, :requires_root, :aix_only do
69
69
 
70
70
  before(:all) do
71
71
  File.delete("/etc/rc.d/init.d/chefinittest") if File.exist?("/etc/rc.d/init.d/chefinittest")
72
- FileUtils.cp((File.join(File.dirname(__FILE__), "/../assets/chefinittest")).to_s, "/etc/rc.d/init.d/chefinittest")
72
+ FileUtils.cp((File.join(__dir__, "/../assets/chefinittest")).to_s, "/etc/rc.d/init.d/chefinittest")
73
73
  end
74
74
 
75
75
  after(:all) do
@@ -74,7 +74,7 @@ describe Chef::Resource::Service, :requires_root, :opensuse do
74
74
 
75
75
  before(:all) do
76
76
  File.delete("/etc/init.d/inittest") if File.exist?("/etc/init.d/inittest")
77
- FileUtils.cp((File.join(File.dirname(__FILE__), "/../assets/inittest")).to_s, "/etc/init.d/inittest")
77
+ FileUtils.cp((File.join(__dir__, "/../assets/inittest")).to_s, "/etc/init.d/inittest")
78
78
  FileUtils.chmod(0755, "/etc/init.d/inittest")
79
79
  end
80
80
 
@@ -47,7 +47,7 @@ describe Chef::Resource::WindowsScript::PowershellScript, :windows_only do
47
47
  r
48
48
  end
49
49
 
50
- describe "when the run action is invoked on Windows" do
50
+ shared_examples_for "a running powershell script" do
51
51
  it "successfully executes a non-cmdlet Windows binary as the last command of the script" do
52
52
  resource.code(successful_executable_script_content + " | out-file -encoding ASCII #{script_output_path}")
53
53
  resource.returns(0)
@@ -231,22 +231,54 @@ describe Chef::Resource::WindowsScript::PowershellScript, :windows_only do
231
231
  resource.only_if { true }
232
232
  expect { resource.should_skip?(:run) }.to raise_error(ArgumentError, /guard_interpreter does not support blocks/)
233
233
  end
234
+ end
235
+
236
+ context "when using the powershell interpreter" do
237
+ before do
238
+ resource.interpreter "powershell"
239
+ end
240
+
241
+ it_behaves_like "a running powershell script"
242
+
243
+ it "runs Windows Powershell" do
244
+ resource.code("$PSVersionTable.PSVersion.Major | out-file -encoding ASCII #{script_output_path}")
245
+ resource.returns(0)
246
+ resource.run_action(:run)
247
+
248
+ expect(get_script_output.to_i).to be < 6
249
+ end
250
+ end
251
+
252
+ context "when using the pwsh interpreter", :pwsh_installed do
253
+ before do
254
+ resource.interpreter "pwsh"
255
+ end
256
+
257
+ it_behaves_like "a running powershell script"
234
258
 
235
- context "when dsc is supported", :windows_powershell_dsc_only do
236
- it "can execute LCM configuration code" do
237
- resource.code <<~EOF
238
- configuration LCM
259
+ it "runs a version of powershell greater than 6" do
260
+ resource.code("$PSVersionTable.PSVersion.Major | out-file -encoding ASCII #{script_output_path}")
261
+ resource.returns(0)
262
+ resource.run_action(:run)
263
+
264
+ expect(get_script_output.to_i).to be > 6
265
+ end
266
+ end
267
+
268
+ context "when dsc is supported", :windows_powershell_dsc_only do
269
+ it "can execute LCM configuration code" do
270
+ resource.code <<~EOF
271
+ configuration LCM
272
+ {
273
+ param ($thumbprint)
274
+ localconfigurationmanager
239
275
  {
240
- param ($thumbprint)
241
- localconfigurationmanager
242
- {
243
- RebootNodeIfNeeded = $false
244
- ConfigurationMode = 'ApplyOnly'
245
- }
276
+ RebootNodeIfNeeded = $false
277
+ ConfigurationMode = 'ApplyOnly'
246
278
  }
247
- EOF
248
- expect { resource.run_action(:run) }.not_to raise_error
249
- end
279
+ }
280
+ EOF
281
+ expect { resource.run_action(:run) }.not_to raise_error
250
282
  end
251
283
  end
252
284
 
@@ -347,6 +379,17 @@ describe Chef::Resource::WindowsScript::PowershellScript, :windows_only do
347
379
 
348
380
  context "with powershell_script as the guard_interpreter" do
349
381
 
382
+ context "when pwsh is the interpreter", :pwsh_installed do
383
+ before do
384
+ resource.interpreter "pwsh"
385
+ end
386
+
387
+ it "uses powershell core to evaluate the guard" do
388
+ resource.not_if "$PSVersionTable.PSEdition -eq 'Core'"
389
+ expect(resource.should_skip?(:run)).to be_truthy
390
+ end
391
+ end
392
+
350
393
  it "has a guard_interpreter attribute set to :powershell_script" do
351
394
  expect(resource.guard_interpreter).to eq(:powershell_script)
352
395
  end
@@ -19,7 +19,7 @@ require "spec_helper"
19
19
  require "chef/mixin/shell_out"
20
20
 
21
21
  metadata = {
22
- macos_only: true,
22
+ macos_1013: true,
23
23
  requires_root: true,
24
24
  }
25
25
 
@@ -19,7 +19,7 @@ require "spec_helper"
19
19
  require "chef/mixin/shell_out"
20
20
 
21
21
  metadata = {
22
- macos_1014: true,
22
+ macos_gte_1014: true,
23
23
  requires_root: true,
24
24
  }
25
25
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  require "spec_helper"
20
20
  require "chef/provider/windows_task"
21
- require "chef/dist"
21
+ require "chef-utils/dist"
22
22
 
23
23
  describe Chef::Resource::WindowsTask, :windows_only do
24
24
  # resource.task.application_name will default to task_name unless resource.command is set
@@ -47,37 +47,37 @@ describe Chef::Resource::WindowsTask, :windows_only do
47
47
 
48
48
  context "With Arguments" do
49
49
  it "creates scheduled task and sets command arguments" do
50
- subject.command "#{Chef::Dist::CLIENT} -W"
50
+ subject.command "#{ChefUtils::Dist::Infra::CLIENT} -W"
51
51
  call_for_create_action
52
52
  # loading current resource again to check new task is creted and it matches task parameters
53
53
  current_resource = call_for_load_current_resource
54
54
  expect(current_resource.exists).to eq(true)
55
- expect(current_resource.task.application_name).to eq(Chef::Dist::CLIENT)
55
+ expect(current_resource.task.application_name).to eq(ChefUtils::Dist::Infra::CLIENT)
56
56
  expect(current_resource.task.parameters).to eq("-W")
57
57
  end
58
58
 
59
59
  it "does not converge the resource if it is already converged" do
60
- subject.command "#{Chef::Dist::CLIENT} -W"
60
+ subject.command "#{ChefUtils::Dist::Infra::CLIENT} -W"
61
61
  subject.run_action(:create)
62
- subject.command "#{Chef::Dist::CLIENT} -W"
62
+ subject.command "#{ChefUtils::Dist::Infra::CLIENT} -W"
63
63
  subject.run_action(:create)
64
64
  expect(subject).not_to be_updated_by_last_action
65
65
  end
66
66
 
67
67
  it "creates scheduled task and sets command arguments when arguments inclusive single quotes" do
68
- subject.command "#{Chef::Dist::CLIENT} -W -L 'C:\\chef\\chef-ad-join.log'"
68
+ subject.command "#{ChefUtils::Dist::Infra::CLIENT} -W -L 'C:\\chef\\chef-ad-join.log'"
69
69
  call_for_create_action
70
70
  # loading current resource again to check new task is creted and it matches task parameters
71
71
  current_resource = call_for_load_current_resource
72
72
  expect(current_resource.exists).to eq(true)
73
- expect(current_resource.task.application_name).to eq(Chef::Dist::CLIENT)
73
+ expect(current_resource.task.application_name).to eq(ChefUtils::Dist::Infra::CLIENT)
74
74
  expect(current_resource.task.parameters).to eq("-W -L 'C:\\chef\\chef-ad-join.log'")
75
75
  end
76
76
 
77
77
  it "does not converge the resource if it is already converged" do
78
- subject.command "#{Chef::Dist::CLIENT} -W -L 'C:\\chef\\chef-ad-join.log'"
78
+ subject.command "#{ChefUtils::Dist::Infra::CLIENT} -W -L 'C:\\chef\\chef-ad-join.log'"
79
79
  subject.run_action(:create)
80
- subject.command "#{Chef::Dist::CLIENT} -W -L 'C:\\chef\\chef-ad-join.log'"
80
+ subject.command "#{ChefUtils::Dist::Infra::CLIENT} -W -L 'C:\\chef\\chef-ad-join.log'"
81
81
  subject.run_action(:create)
82
82
  expect(subject).not_to be_updated_by_last_action
83
83
  end
@@ -137,19 +137,19 @@ describe Chef::Resource::WindowsTask, :windows_only do
137
137
 
138
138
  context "Without Arguments" do
139
139
  it "creates scheduled task and sets command arguments" do
140
- subject.command Chef::Dist::CLIENT
140
+ subject.command ChefUtils::Dist::Infra::CLIENT
141
141
  call_for_create_action
142
142
  # loading current resource again to check new task is creted and it matches task parameters
143
143
  current_resource = call_for_load_current_resource
144
144
  expect(current_resource.exists).to eq(true)
145
- expect(current_resource.task.application_name).to eq(Chef::Dist::CLIENT)
145
+ expect(current_resource.task.application_name).to eq(ChefUtils::Dist::Infra::CLIENT)
146
146
  expect(current_resource.task.parameters).to be_empty
147
147
  end
148
148
 
149
149
  it "does not converge the resource if it is already converged" do
150
- subject.command Chef::Dist::CLIENT
150
+ subject.command ChefUtils::Dist::Infra::CLIENT
151
151
  subject.run_action(:create)
152
- subject.command Chef::Dist::CLIENT
152
+ subject.command ChefUtils::Dist::Infra::CLIENT
153
153
  subject.run_action(:create)
154
154
  expect(subject).not_to be_updated_by_last_action
155
155
  end