chef 15.8.23-universal-mingw32 → 15.12.22-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1401) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -6
  3. data/README.md +4 -4
  4. data/Rakefile +9 -0
  5. data/chef.gemspec +4 -4
  6. data/distro/powershell/chef/chef.psm1 +459 -459
  7. data/distro/templates/powershell/chef/chef.psm1.erb +459 -0
  8. data/lib/chef.rb +1 -1
  9. data/lib/chef/action_collection.rb +1 -1
  10. data/lib/chef/api_client.rb +1 -1
  11. data/lib/chef/api_client/registration.rb +1 -1
  12. data/lib/chef/api_client_v1.rb +1 -1
  13. data/lib/chef/application.rb +2 -2
  14. data/lib/chef/application/apply.rb +2 -2
  15. data/lib/chef/application/base.rb +1 -1
  16. data/lib/chef/application/client.rb +1 -1
  17. data/lib/chef/application/exit_code.rb +3 -3
  18. data/lib/chef/application/knife.rb +1 -1
  19. data/lib/chef/application/solo.rb +2 -2
  20. data/lib/chef/application/windows_service.rb +1 -1
  21. data/lib/chef/application/windows_service_manager.rb +1 -1
  22. data/lib/chef/blacklist.rb +1 -1
  23. data/lib/chef/chef_class.rb +2 -2
  24. data/lib/chef/chef_fs/chef_fs_data_store.rb +5 -5
  25. data/lib/chef/chef_fs/command_line.rb +6 -6
  26. data/lib/chef/chef_fs/config.rb +1 -1
  27. data/lib/chef/chef_fs/file_pattern.rb +1 -1
  28. data/lib/chef/chef_fs/file_system.rb +1 -1
  29. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +1 -1
  30. data/lib/chef/chef_fs/file_system/base_fs_object.rb +1 -1
  31. data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +1 -1
  32. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +1 -1
  33. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  34. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +1 -1
  35. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +1 -1
  36. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +1 -1
  37. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +1 -1
  38. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  39. data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +1 -1
  40. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +1 -1
  41. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -1
  42. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +1 -1
  43. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +1 -1
  44. data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +1 -1
  45. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
  46. data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +1 -1
  47. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +3 -3
  48. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
  49. data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +1 -1
  50. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +2 -2
  51. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +1 -1
  52. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +1 -1
  53. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +1 -1
  54. data/lib/chef/chef_fs/file_system/exceptions.rb +1 -1
  55. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  56. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +1 -1
  57. data/lib/chef/chef_fs/file_system/repository/acl.rb +1 -1
  58. data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +1 -1
  59. data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +1 -1
  60. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -1
  61. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +1 -1
  62. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  63. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  64. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +1 -1
  65. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +1 -1
  66. data/lib/chef/chef_fs/file_system/repository/client.rb +1 -1
  67. data/lib/chef/chef_fs/file_system/repository/client_key.rb +1 -1
  68. data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +1 -1
  69. data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +1 -1
  70. data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +1 -1
  71. data/lib/chef/chef_fs/file_system/repository/container.rb +1 -1
  72. data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +1 -1
  73. data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +1 -1
  74. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
  75. data/lib/chef/chef_fs/file_system/repository/data_bag.rb +1 -1
  76. data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +1 -1
  77. data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +1 -1
  78. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  79. data/lib/chef/chef_fs/file_system/repository/environment.rb +1 -1
  80. data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +1 -1
  81. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  82. data/lib/chef/chef_fs/file_system/repository/group.rb +1 -1
  83. data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +1 -1
  84. data/lib/chef/chef_fs/file_system/repository/node.rb +1 -1
  85. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +1 -1
  86. data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +1 -1
  87. data/lib/chef/chef_fs/file_system/repository/policy.rb +1 -1
  88. data/lib/chef/chef_fs/file_system/repository/policy_group.rb +1 -1
  89. data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +1 -1
  90. data/lib/chef/chef_fs/file_system/repository/role.rb +1 -1
  91. data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +1 -1
  92. data/lib/chef/chef_fs/file_system/repository/user.rb +1 -1
  93. data/lib/chef/chef_fs/file_system/repository/users_dir.rb +1 -1
  94. data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +1 -1
  95. data/lib/chef/chef_fs/file_system_cache.rb +1 -1
  96. data/lib/chef/chef_fs/knife.rb +1 -1
  97. data/lib/chef/chef_fs/path_utils.rb +5 -5
  98. data/lib/chef/client.rb +10 -1
  99. data/lib/chef/config.rb +2 -2
  100. data/lib/chef/constants.rb +1 -1
  101. data/lib/chef/cookbook/chefignore.rb +1 -1
  102. data/lib/chef/cookbook/cookbook_collection.rb +1 -1
  103. data/lib/chef/cookbook/cookbook_version_loader.rb +2 -2
  104. data/lib/chef/cookbook/file_system_file_vendor.rb +2 -2
  105. data/lib/chef/cookbook/file_vendor.rb +1 -1
  106. data/lib/chef/cookbook/gem_installer.rb +1 -1
  107. data/lib/chef/cookbook/manifest_v0.rb +1 -1
  108. data/lib/chef/cookbook/manifest_v2.rb +1 -1
  109. data/lib/chef/cookbook/metadata.rb +8 -7
  110. data/lib/chef/cookbook/remote_file_vendor.rb +1 -1
  111. data/lib/chef/cookbook/synchronizer.rb +1 -0
  112. data/lib/chef/cookbook/syntax_check.rb +1 -1
  113. data/lib/chef/cookbook_loader.rb +2 -2
  114. data/lib/chef/cookbook_manifest.rb +1 -1
  115. data/lib/chef/cookbook_site_streaming_uploader.rb +2 -2
  116. data/lib/chef/cookbook_version.rb +7 -7
  117. data/lib/chef/daemon.rb +1 -1
  118. data/lib/chef/data_bag.rb +3 -3
  119. data/lib/chef/data_bag_item.rb +1 -1
  120. data/lib/chef/data_collector.rb +2 -2
  121. data/lib/chef/data_collector/config_validation.rb +9 -9
  122. data/lib/chef/data_collector/error_handlers.rb +3 -3
  123. data/lib/chef/data_collector/message_helpers.rb +1 -1
  124. data/lib/chef/data_collector/run_end_message.rb +1 -1
  125. data/lib/chef/data_collector/run_start_message.rb +1 -1
  126. data/lib/chef/decorator.rb +1 -1
  127. data/lib/chef/decorator/lazy.rb +1 -1
  128. data/lib/chef/decorator/lazy_array.rb +1 -1
  129. data/lib/chef/delayed_evaluator.rb +1 -1
  130. data/lib/chef/deprecated.rb +15 -7
  131. data/lib/chef/deprecation/warnings.rb +1 -1
  132. data/lib/chef/digester.rb +1 -1
  133. data/lib/chef/dsl/cheffish.rb +1 -1
  134. data/lib/chef/dsl/core.rb +1 -1
  135. data/lib/chef/dsl/data_query.rb +1 -1
  136. data/lib/chef/dsl/declare_resource.rb +2 -2
  137. data/lib/chef/dsl/include_attribute.rb +1 -1
  138. data/lib/chef/dsl/include_recipe.rb +1 -1
  139. data/lib/chef/dsl/platform_introspection.rb +6 -4
  140. data/lib/chef/dsl/powershell.rb +1 -1
  141. data/lib/chef/dsl/reboot_pending.rb +4 -4
  142. data/lib/chef/dsl/recipe.rb +1 -1
  143. data/lib/chef/dsl/registry_helper.rb +1 -1
  144. data/lib/chef/dsl/resources.rb +1 -1
  145. data/lib/chef/dsl/universal.rb +1 -1
  146. data/lib/chef/encrypted_data_bag_item.rb +1 -1
  147. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +1 -1
  148. data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +1 -1
  149. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  150. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  151. data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +1 -1
  152. data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +1 -1
  153. data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +1 -1
  154. data/lib/chef/environment.rb +1 -1
  155. data/lib/chef/event_loggers/base.rb +1 -1
  156. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  157. data/lib/chef/exceptions.rb +3 -3
  158. data/lib/chef/file_access_control.rb +1 -1
  159. data/lib/chef/file_access_control/unix.rb +1 -1
  160. data/lib/chef/file_access_control/windows.rb +1 -1
  161. data/lib/chef/file_cache.rb +1 -1
  162. data/lib/chef/file_content_management/content_base.rb +1 -1
  163. data/lib/chef/file_content_management/deploy.rb +1 -1
  164. data/lib/chef/file_content_management/deploy/cp.rb +1 -1
  165. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  166. data/lib/chef/file_content_management/deploy/mv_windows.rb +1 -1
  167. data/lib/chef/file_content_management/tempfile.rb +1 -1
  168. data/lib/chef/formatters/base.rb +2 -2
  169. data/lib/chef/formatters/error_description.rb +1 -1
  170. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +1 -1
  171. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  172. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +1 -1
  173. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +1 -1
  174. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  175. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  176. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +1 -1
  177. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +1 -1
  178. data/lib/chef/formatters/error_mapper.rb +1 -1
  179. data/lib/chef/guard_interpreter.rb +1 -1
  180. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +1 -1
  181. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +2 -2
  182. data/lib/chef/handler.rb +1 -1
  183. data/lib/chef/handler/error_report.rb +1 -1
  184. data/lib/chef/handler/json_file.rb +1 -1
  185. data/lib/chef/http.rb +1 -1
  186. data/lib/chef/http/api_versions.rb +1 -1
  187. data/lib/chef/http/auth_credentials.rb +1 -1
  188. data/lib/chef/http/authenticator.rb +1 -1
  189. data/lib/chef/http/basic_client.rb +1 -1
  190. data/lib/chef/http/cookie_jar.rb +1 -1
  191. data/lib/chef/http/cookie_manager.rb +1 -1
  192. data/lib/chef/http/decompressor.rb +1 -1
  193. data/lib/chef/http/http_request.rb +1 -1
  194. data/lib/chef/http/json_input.rb +1 -1
  195. data/lib/chef/http/json_output.rb +2 -2
  196. data/lib/chef/http/json_to_model_output.rb +1 -1
  197. data/lib/chef/http/remote_request_id.rb +1 -1
  198. data/lib/chef/http/simple.rb +1 -1
  199. data/lib/chef/http/simple_json.rb +1 -1
  200. data/lib/chef/http/socketless_chef_zero_client.rb +1 -1
  201. data/lib/chef/http/ssl_policies.rb +1 -1
  202. data/lib/chef/http/validate_content_length.rb +1 -1
  203. data/lib/chef/json_compat.rb +1 -1
  204. data/lib/chef/key.rb +1 -1
  205. data/lib/chef/knife.rb +30 -24
  206. data/lib/chef/knife/bootstrap.rb +42 -34
  207. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +13 -9
  208. data/lib/chef/knife/bootstrap/client_builder.rb +24 -20
  209. data/lib/chef/knife/bootstrap/templates/README.md +2 -2
  210. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +5 -3
  211. data/lib/chef/knife/bootstrap/train_connector.rb +2 -2
  212. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  213. data/lib/chef/knife/client_create.rb +1 -1
  214. data/lib/chef/knife/client_delete.rb +1 -1
  215. data/lib/chef/knife/client_edit.rb +1 -1
  216. data/lib/chef/knife/client_key_create.rb +1 -1
  217. data/lib/chef/knife/client_key_delete.rb +1 -1
  218. data/lib/chef/knife/client_key_edit.rb +1 -1
  219. data/lib/chef/knife/client_key_list.rb +1 -1
  220. data/lib/chef/knife/client_key_show.rb +1 -1
  221. data/lib/chef/knife/client_list.rb +1 -1
  222. data/lib/chef/knife/client_reregister.rb +1 -1
  223. data/lib/chef/knife/client_show.rb +1 -1
  224. data/lib/chef/knife/configure.rb +1 -1
  225. data/lib/chef/knife/configure_client.rb +1 -1
  226. data/lib/chef/knife/cookbook_bulk_delete.rb +1 -1
  227. data/lib/chef/knife/cookbook_delete.rb +1 -1
  228. data/lib/chef/knife/cookbook_download.rb +1 -1
  229. data/lib/chef/knife/cookbook_list.rb +1 -1
  230. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  231. data/lib/chef/knife/cookbook_metadata_from_file.rb +1 -1
  232. data/lib/chef/knife/cookbook_show.rb +1 -1
  233. data/lib/chef/knife/cookbook_site_download.rb +1 -1
  234. data/lib/chef/knife/cookbook_site_install.rb +1 -1
  235. data/lib/chef/knife/cookbook_site_list.rb +1 -1
  236. data/lib/chef/knife/cookbook_site_search.rb +2 -2
  237. data/lib/chef/knife/cookbook_site_share.rb +1 -1
  238. data/lib/chef/knife/cookbook_site_show.rb +2 -2
  239. data/lib/chef/knife/cookbook_site_unshare.rb +2 -2
  240. data/lib/chef/knife/cookbook_upload.rb +1 -1
  241. data/lib/chef/knife/core/bootstrap_context.rb +4 -2
  242. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  243. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  244. data/lib/chef/knife/core/generic_presenter.rb +2 -2
  245. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  246. data/lib/chef/knife/core/node_editor.rb +1 -1
  247. data/lib/chef/knife/core/node_presenter.rb +1 -1
  248. data/lib/chef/knife/core/object_loader.rb +1 -1
  249. data/lib/chef/knife/core/status_presenter.rb +1 -1
  250. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  251. data/lib/chef/knife/core/text_formatter.rb +1 -1
  252. data/lib/chef/knife/core/ui.rb +2 -2
  253. data/lib/chef/knife/core/windows_bootstrap_context.rb +25 -10
  254. data/lib/chef/knife/data_bag_create.rb +1 -1
  255. data/lib/chef/knife/data_bag_delete.rb +1 -1
  256. data/lib/chef/knife/data_bag_edit.rb +3 -3
  257. data/lib/chef/knife/data_bag_from_file.rb +1 -1
  258. data/lib/chef/knife/data_bag_list.rb +1 -1
  259. data/lib/chef/knife/data_bag_secret_options.rb +1 -1
  260. data/lib/chef/knife/data_bag_show.rb +1 -1
  261. data/lib/chef/knife/edit.rb +1 -1
  262. data/lib/chef/knife/environment_compare.rb +1 -1
  263. data/lib/chef/knife/environment_create.rb +1 -1
  264. data/lib/chef/knife/environment_delete.rb +1 -1
  265. data/lib/chef/knife/environment_edit.rb +1 -1
  266. data/lib/chef/knife/environment_from_file.rb +1 -1
  267. data/lib/chef/knife/environment_list.rb +1 -1
  268. data/lib/chef/knife/environment_show.rb +1 -1
  269. data/lib/chef/knife/exec.rb +1 -1
  270. data/lib/chef/knife/key_create.rb +1 -1
  271. data/lib/chef/knife/key_create_base.rb +1 -1
  272. data/lib/chef/knife/key_delete.rb +1 -1
  273. data/lib/chef/knife/key_edit.rb +1 -1
  274. data/lib/chef/knife/key_edit_base.rb +1 -1
  275. data/lib/chef/knife/key_list.rb +1 -1
  276. data/lib/chef/knife/key_list_base.rb +1 -1
  277. data/lib/chef/knife/key_show.rb +1 -1
  278. data/lib/chef/knife/list.rb +1 -1
  279. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  280. data/lib/chef/knife/node_create.rb +1 -1
  281. data/lib/chef/knife/node_delete.rb +1 -1
  282. data/lib/chef/knife/node_edit.rb +1 -1
  283. data/lib/chef/knife/node_from_file.rb +1 -1
  284. data/lib/chef/knife/node_list.rb +1 -1
  285. data/lib/chef/knife/node_policy_set.rb +1 -1
  286. data/lib/chef/knife/node_run_list_add.rb +1 -1
  287. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  288. data/lib/chef/knife/node_show.rb +1 -1
  289. data/lib/chef/knife/recipe_list.rb +1 -1
  290. data/lib/chef/knife/rehash.rb +1 -1
  291. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  292. data/lib/chef/knife/role_create.rb +1 -1
  293. data/lib/chef/knife/role_delete.rb +1 -1
  294. data/lib/chef/knife/role_edit.rb +1 -1
  295. data/lib/chef/knife/role_env_run_list_add.rb +1 -1
  296. data/lib/chef/knife/role_env_run_list_remove.rb +1 -1
  297. data/lib/chef/knife/role_env_run_list_replace.rb +1 -1
  298. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  299. data/lib/chef/knife/role_from_file.rb +1 -1
  300. data/lib/chef/knife/role_list.rb +1 -1
  301. data/lib/chef/knife/role_run_list_add.rb +1 -1
  302. data/lib/chef/knife/role_run_list_remove.rb +1 -1
  303. data/lib/chef/knife/role_run_list_replace.rb +1 -1
  304. data/lib/chef/knife/role_show.rb +1 -1
  305. data/lib/chef/knife/search.rb +1 -1
  306. data/lib/chef/knife/ssh.rb +3 -3
  307. data/lib/chef/knife/ssl_check.rb +1 -1
  308. data/lib/chef/knife/ssl_fetch.rb +3 -3
  309. data/lib/chef/knife/supermarket_download.rb +1 -1
  310. data/lib/chef/knife/supermarket_install.rb +1 -1
  311. data/lib/chef/knife/supermarket_list.rb +1 -1
  312. data/lib/chef/knife/supermarket_search.rb +1 -1
  313. data/lib/chef/knife/supermarket_share.rb +1 -1
  314. data/lib/chef/knife/supermarket_show.rb +1 -1
  315. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  316. data/lib/chef/knife/user_create.rb +1 -1
  317. data/lib/chef/knife/user_delete.rb +1 -1
  318. data/lib/chef/knife/user_edit.rb +1 -1
  319. data/lib/chef/knife/user_key_create.rb +1 -1
  320. data/lib/chef/knife/user_key_delete.rb +1 -1
  321. data/lib/chef/knife/user_key_edit.rb +1 -1
  322. data/lib/chef/knife/user_key_list.rb +1 -1
  323. data/lib/chef/knife/user_key_show.rb +1 -1
  324. data/lib/chef/knife/user_list.rb +1 -1
  325. data/lib/chef/knife/user_reregister.rb +1 -1
  326. data/lib/chef/knife/user_show.rb +1 -1
  327. data/lib/chef/local_mode.rb +1 -1
  328. data/lib/chef/log.rb +1 -1
  329. data/lib/chef/log/syslog.rb +1 -1
  330. data/lib/chef/log/winevt.rb +1 -1
  331. data/lib/chef/mash.rb +1 -1
  332. data/lib/chef/mixin/api_version_request_handling.rb +5 -5
  333. data/lib/chef/mixin/checksum.rb +1 -1
  334. data/lib/chef/mixin/convert_to_class_name.rb +1 -1
  335. data/lib/chef/mixin/create_path.rb +9 -9
  336. data/lib/chef/mixin/deep_merge.rb +1 -1
  337. data/lib/chef/mixin/deprecation.rb +1 -1
  338. data/lib/chef/mixin/enforce_ownership_and_permissions.rb +1 -1
  339. data/lib/chef/mixin/file_class.rb +1 -1
  340. data/lib/chef/mixin/from_file.rb +1 -1
  341. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  342. data/lib/chef/mixin/homebrew_user.rb +2 -2
  343. data/lib/chef/mixin/lazy_module_include.rb +1 -1
  344. data/lib/chef/mixin/notifying_block.rb +1 -1
  345. data/lib/chef/mixin/openssl_helper.rb +3 -3
  346. data/lib/chef/mixin/params_validate.rb +1 -1
  347. data/lib/chef/mixin/path_sanity.rb +1 -1
  348. data/lib/chef/mixin/powershell_exec.rb +1 -1
  349. data/lib/chef/mixin/powershell_out.rb +1 -1
  350. data/lib/chef/mixin/powershell_type_coercions.rb +1 -1
  351. data/lib/chef/mixin/proxified_socket.rb +1 -1
  352. data/lib/chef/mixin/securable.rb +6 -6
  353. data/lib/chef/mixin/shell_out.rb +2 -2
  354. data/lib/chef/mixin/subclass_directive.rb +1 -1
  355. data/lib/chef/mixin/template.rb +1 -1
  356. data/lib/chef/mixin/unformatter.rb +1 -1
  357. data/lib/chef/mixin/uris.rb +1 -1
  358. data/lib/chef/mixin/user_context.rb +1 -1
  359. data/lib/chef/mixin/versioned_api.rb +1 -1
  360. data/lib/chef/mixin/which.rb +1 -1
  361. data/lib/chef/mixin/why_run.rb +1 -1
  362. data/lib/chef/mixin/wide_string.rb +1 -1
  363. data/lib/chef/mixin/windows_architecture_helper.rb +1 -1
  364. data/lib/chef/mixin/windows_env_helper.rb +1 -1
  365. data/lib/chef/mixin/xml_escape.rb +1 -1
  366. data/lib/chef/monkey_patches/win32/registry.rb +1 -1
  367. data/lib/chef/node.rb +1 -1
  368. data/lib/chef/node/attribute.rb +1 -1
  369. data/lib/chef/node/attribute_collections.rb +1 -1
  370. data/lib/chef/node/common_api.rb +1 -1
  371. data/lib/chef/node/immutable_collections.rb +1 -1
  372. data/lib/chef/node/mixin/deep_merge_cache.rb +8 -8
  373. data/lib/chef/node/mixin/immutablize_array.rb +1 -1
  374. data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
  375. data/lib/chef/node/mixin/mashy_array.rb +1 -1
  376. data/lib/chef/node/mixin/state_tracking.rb +1 -1
  377. data/lib/chef/node_map.rb +1 -1
  378. data/lib/chef/null_logger.rb +1 -1
  379. data/lib/chef/org.rb +1 -1
  380. data/lib/chef/platform.rb +1 -1
  381. data/lib/chef/platform/priority_map.rb +1 -1
  382. data/lib/chef/platform/provider_handler_map.rb +1 -1
  383. data/lib/chef/platform/provider_mapping.rb +1 -1
  384. data/lib/chef/platform/query_helpers.rb +1 -1
  385. data/lib/chef/platform/resource_handler_map.rb +1 -1
  386. data/lib/chef/platform/service_helpers.rb +1 -1
  387. data/lib/chef/policy_builder.rb +1 -1
  388. data/lib/chef/policy_builder/dynamic.rb +1 -1
  389. data/lib/chef/policy_builder/expand_node_object.rb +1 -1
  390. data/lib/chef/policy_builder/policyfile.rb +1 -1
  391. data/lib/chef/powershell.rb +1 -1
  392. data/lib/chef/property.rb +2 -2
  393. data/lib/chef/provider.rb +1 -1
  394. data/lib/chef/provider/apt_preference.rb +1 -1
  395. data/lib/chef/provider/apt_repository.rb +1 -1
  396. data/lib/chef/provider/apt_update.rb +1 -1
  397. data/lib/chef/provider/batch.rb +1 -1
  398. data/lib/chef/provider/cookbook_file.rb +1 -1
  399. data/lib/chef/provider/cookbook_file/content.rb +1 -1
  400. data/lib/chef/provider/cron/aix.rb +1 -1
  401. data/lib/chef/provider/cron/solaris.rb +1 -1
  402. data/lib/chef/provider/directory.rb +1 -1
  403. data/lib/chef/provider/dsc_resource.rb +1 -1
  404. data/lib/chef/provider/dsc_script.rb +1 -1
  405. data/lib/chef/provider/execute.rb +1 -1
  406. data/lib/chef/provider/file.rb +1 -1
  407. data/lib/chef/provider/file/content.rb +1 -1
  408. data/lib/chef/provider/git.rb +1 -1
  409. data/lib/chef/provider/group.rb +1 -1
  410. data/lib/chef/provider/group/dscl.rb +1 -1
  411. data/lib/chef/provider/group/gpasswd.rb +1 -1
  412. data/lib/chef/provider/group/groupadd.rb +1 -1
  413. data/lib/chef/provider/group/groupmod.rb +1 -1
  414. data/lib/chef/provider/group/pw.rb +2 -2
  415. data/lib/chef/provider/group/solaris.rb +1 -1
  416. data/lib/chef/provider/group/suse.rb +1 -1
  417. data/lib/chef/provider/group/usermod.rb +2 -5
  418. data/lib/chef/provider/http_request.rb +1 -1
  419. data/lib/chef/provider/ifconfig/aix.rb +1 -1
  420. data/lib/chef/provider/link.rb +1 -1
  421. data/lib/chef/provider/log.rb +1 -1
  422. data/lib/chef/provider/lwrp_base.rb +1 -1
  423. data/lib/chef/provider/mount.rb +1 -1
  424. data/lib/chef/provider/mount/aix.rb +1 -1
  425. data/lib/chef/provider/mount/mount.rb +2 -2
  426. data/lib/chef/provider/mount/solaris.rb +1 -1
  427. data/lib/chef/provider/noop.rb +1 -1
  428. data/lib/chef/provider/package.rb +2 -2
  429. data/lib/chef/provider/package/apt.rb +1 -1
  430. data/lib/chef/provider/package/bff.rb +1 -1
  431. data/lib/chef/provider/package/cab.rb +2 -2
  432. data/lib/chef/provider/package/chocolatey.rb +5 -4
  433. data/lib/chef/provider/package/deb.rb +1 -1
  434. data/lib/chef/provider/package/dnf.rb +1 -1
  435. data/lib/chef/provider/package/dnf/python_helper.rb +1 -1
  436. data/lib/chef/provider/package/dnf/version.rb +1 -1
  437. data/lib/chef/provider/package/homebrew.rb +1 -2
  438. data/lib/chef/provider/package/ips.rb +1 -1
  439. data/lib/chef/provider/package/msu.rb +2 -1
  440. data/lib/chef/provider/package/paludis.rb +1 -1
  441. data/lib/chef/provider/package/portage.rb +1 -1
  442. data/lib/chef/provider/package/powershell.rb +6 -2
  443. data/lib/chef/provider/package/rpm.rb +1 -1
  444. data/lib/chef/provider/package/rubygems.rb +3 -3
  445. data/lib/chef/provider/package/snap.rb +97 -28
  446. data/lib/chef/provider/package/solaris.rb +1 -1
  447. data/lib/chef/provider/package/windows.rb +1 -1
  448. data/lib/chef/provider/package/windows/exe.rb +1 -1
  449. data/lib/chef/provider/package/windows/msi.rb +1 -1
  450. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  451. data/lib/chef/provider/package/yum.rb +1 -1
  452. data/lib/chef/provider/package/yum/python_helper.rb +3 -3
  453. data/lib/chef/provider/package/yum/rpm_utils.rb +6 -6
  454. data/lib/chef/provider/package/yum/version.rb +1 -1
  455. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  456. data/lib/chef/provider/package/zypper.rb +3 -2
  457. data/lib/chef/provider/powershell_script.rb +2 -2
  458. data/lib/chef/provider/registry_key.rb +2 -2
  459. data/lib/chef/provider/remote_directory.rb +1 -1
  460. data/lib/chef/provider/remote_file.rb +2 -2
  461. data/lib/chef/provider/remote_file/cache_control_data.rb +1 -1
  462. data/lib/chef/provider/remote_file/content.rb +1 -1
  463. data/lib/chef/provider/remote_file/fetcher.rb +1 -1
  464. data/lib/chef/provider/route.rb +4 -4
  465. data/lib/chef/provider/ruby_block.rb +1 -1
  466. data/lib/chef/provider/script.rb +1 -1
  467. data/lib/chef/provider/service.rb +1 -1
  468. data/lib/chef/provider/service/aix.rb +1 -1
  469. data/lib/chef/provider/service/aixinit.rb +1 -1
  470. data/lib/chef/provider/service/debian.rb +1 -1
  471. data/lib/chef/provider/service/freebsd.rb +1 -1
  472. data/lib/chef/provider/service/gentoo.rb +1 -1
  473. data/lib/chef/provider/service/init.rb +1 -1
  474. data/lib/chef/provider/service/insserv.rb +1 -1
  475. data/lib/chef/provider/service/invokercd.rb +1 -1
  476. data/lib/chef/provider/service/redhat.rb +1 -1
  477. data/lib/chef/provider/service/simple.rb +3 -3
  478. data/lib/chef/provider/service/solaris.rb +1 -1
  479. data/lib/chef/provider/service/systemd.rb +1 -1
  480. data/lib/chef/provider/service/windows.rb +1 -1
  481. data/lib/chef/provider/subversion.rb +1 -1
  482. data/lib/chef/provider/systemd_unit.rb +1 -0
  483. data/lib/chef/provider/template.rb +1 -1
  484. data/lib/chef/provider/template/content.rb +1 -1
  485. data/lib/chef/provider/template_finder.rb +1 -1
  486. data/lib/chef/provider/user.rb +1 -1
  487. data/lib/chef/provider/user/aix.rb +1 -1
  488. data/lib/chef/provider/user/dscl.rb +1 -1
  489. data/lib/chef/provider/user/linux.rb +1 -1
  490. data/lib/chef/provider/user/mac.rb +2 -2
  491. data/lib/chef/provider/user/pw.rb +1 -1
  492. data/lib/chef/provider/user/solaris.rb +2 -2
  493. data/lib/chef/provider/windows_env.rb +3 -3
  494. data/lib/chef/provider/windows_path.rb +1 -1
  495. data/lib/chef/provider/windows_script.rb +1 -1
  496. data/lib/chef/provider/windows_task.rb +5 -5
  497. data/lib/chef/provider/yum_repository.rb +1 -1
  498. data/lib/chef/provider/zypper_repository.rb +31 -11
  499. data/lib/chef/providers.rb +1 -1
  500. data/lib/chef/recipe.rb +1 -1
  501. data/lib/chef/request_id.rb +1 -1
  502. data/lib/chef/resource.rb +10 -5
  503. data/lib/chef/resource/action_class.rb +1 -1
  504. data/lib/chef/resource/apt_package.rb +1 -1
  505. data/lib/chef/resource/apt_preference.rb +1 -1
  506. data/lib/chef/resource/apt_repository.rb +1 -1
  507. data/lib/chef/resource/apt_update.rb +1 -1
  508. data/lib/chef/resource/archive_file.rb +29 -9
  509. data/lib/chef/resource/bash.rb +1 -1
  510. data/lib/chef/resource/batch.rb +1 -1
  511. data/lib/chef/resource/bff_package.rb +1 -1
  512. data/lib/chef/resource/breakpoint.rb +1 -1
  513. data/lib/chef/resource/build_essential.rb +48 -24
  514. data/lib/chef/resource/cab_package.rb +1 -1
  515. data/lib/chef/resource/chef_gem.rb +1 -1
  516. data/lib/chef/resource/chef_handler.rb +1 -1
  517. data/lib/chef/resource/chef_sleep.rb +1 -1
  518. data/lib/chef/resource/chocolatey_config.rb +1 -1
  519. data/lib/chef/resource/chocolatey_feature.rb +1 -1
  520. data/lib/chef/resource/chocolatey_package.rb +1 -1
  521. data/lib/chef/resource/chocolatey_source.rb +1 -1
  522. data/lib/chef/resource/conditional.rb +1 -1
  523. data/lib/chef/resource/cookbook_file.rb +1 -1
  524. data/lib/chef/resource/cron.rb +1 -1
  525. data/lib/chef/resource/cron_access.rb +12 -4
  526. data/lib/chef/resource/cron_d.rb +2 -2
  527. data/lib/chef/resource/csh.rb +1 -1
  528. data/lib/chef/resource/directory.rb +1 -1
  529. data/lib/chef/resource/dmg_package.rb +1 -1
  530. data/lib/chef/resource/dnf_package.rb +1 -1
  531. data/lib/chef/resource/dpkg_package.rb +1 -1
  532. data/lib/chef/resource/dsc_resource.rb +1 -1
  533. data/lib/chef/resource/dsc_script.rb +1 -1
  534. data/lib/chef/resource/execute.rb +2 -2
  535. data/lib/chef/resource/file.rb +1 -1
  536. data/lib/chef/resource/file/verification.rb +2 -2
  537. data/lib/chef/resource/file/verification/systemd_unit.rb +1 -1
  538. data/lib/chef/resource/freebsd_package.rb +1 -4
  539. data/lib/chef/resource/gem_package.rb +1 -1
  540. data/lib/chef/resource/git.rb +1 -1
  541. data/lib/chef/resource/group.rb +1 -1
  542. data/lib/chef/resource/homebrew_cask.rb +1 -1
  543. data/lib/chef/resource/homebrew_package.rb +1 -2
  544. data/lib/chef/resource/homebrew_tap.rb +1 -1
  545. data/lib/chef/resource/hostname.rb +5 -4
  546. data/lib/chef/resource/http_request.rb +1 -1
  547. data/lib/chef/resource/ips_package.rb +1 -1
  548. data/lib/chef/resource/kernel_module.rb +3 -2
  549. data/lib/chef/resource/ksh.rb +1 -1
  550. data/lib/chef/resource/launchd.rb +4 -4
  551. data/lib/chef/resource/link.rb +1 -1
  552. data/lib/chef/resource/locale.rb +1 -1
  553. data/lib/chef/resource/log.rb +1 -1
  554. data/lib/chef/resource/lwrp_base.rb +1 -1
  555. data/lib/chef/resource/macos_userdefaults.rb +4 -4
  556. data/lib/chef/resource/macports_package.rb +1 -1
  557. data/lib/chef/resource/mount.rb +1 -1
  558. data/lib/chef/resource/msu_package.rb +6 -1
  559. data/lib/chef/resource/notify_group.rb +1 -1
  560. data/lib/chef/resource/ohai_hint.rb +1 -1
  561. data/lib/chef/resource/openbsd_package.rb +1 -4
  562. data/lib/chef/resource/openssl_dhparam.rb +1 -1
  563. data/lib/chef/resource/openssl_ec_private_key.rb +1 -1
  564. data/lib/chef/resource/openssl_ec_public_key.rb +1 -1
  565. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  566. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -1
  567. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  568. data/lib/chef/resource/openssl_x509_crl.rb +1 -1
  569. data/lib/chef/resource/openssl_x509_request.rb +1 -1
  570. data/lib/chef/resource/package.rb +1 -1
  571. data/lib/chef/resource/paludis_package.rb +1 -1
  572. data/lib/chef/resource/perl.rb +1 -1
  573. data/lib/chef/resource/portage_package.rb +1 -1
  574. data/lib/chef/resource/powershell_package.rb +1 -1
  575. data/lib/chef/resource/powershell_script.rb +2 -2
  576. data/lib/chef/resource/python.rb +1 -1
  577. data/lib/chef/resource/registry_key.rb +1 -1
  578. data/lib/chef/resource/remote_directory.rb +1 -1
  579. data/lib/chef/resource/remote_file.rb +2 -2
  580. data/lib/chef/resource/resource_notification.rb +1 -1
  581. data/lib/chef/resource/rhsm_errata.rb +9 -2
  582. data/lib/chef/resource/rhsm_errata_level.rb +11 -5
  583. data/lib/chef/resource/rhsm_register.rb +27 -12
  584. data/lib/chef/resource/rhsm_repo.rb +1 -1
  585. data/lib/chef/resource/rhsm_subscription.rb +1 -1
  586. data/lib/chef/resource/ruby.rb +1 -1
  587. data/lib/chef/resource/ruby_block.rb +1 -1
  588. data/lib/chef/resource/scm.rb +1 -1
  589. data/lib/chef/resource/script.rb +1 -1
  590. data/lib/chef/resource/service.rb +1 -1
  591. data/lib/chef/resource/smartos_package.rb +1 -1
  592. data/lib/chef/resource/snap_package.rb +1 -1
  593. data/lib/chef/resource/solaris_package.rb +1 -1
  594. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  595. data/lib/chef/resource/subversion.rb +1 -1
  596. data/lib/chef/resource/sudo.rb +2 -2
  597. data/lib/chef/resource/swap_file.rb +2 -2
  598. data/lib/chef/resource/sysctl.rb +1 -1
  599. data/lib/chef/resource/template.rb +1 -1
  600. data/lib/chef/resource/timezone.rb +3 -3
  601. data/lib/chef/resource/user.rb +1 -1
  602. data/lib/chef/resource/user/aix_user.rb +1 -1
  603. data/lib/chef/resource/user/dscl_user.rb +1 -1
  604. data/lib/chef/resource/user/linux_user.rb +1 -1
  605. data/lib/chef/resource/user/mac_user.rb +1 -1
  606. data/lib/chef/resource/user/pw_user.rb +1 -1
  607. data/lib/chef/resource/user/solaris_user.rb +1 -1
  608. data/lib/chef/resource/user/windows_user.rb +1 -1
  609. data/lib/chef/resource/windows_auto_run.rb +1 -1
  610. data/lib/chef/resource/windows_certificate.rb +2 -4
  611. data/lib/chef/resource/windows_dfs_folder.rb +1 -1
  612. data/lib/chef/resource/windows_dfs_namespace.rb +1 -1
  613. data/lib/chef/resource/windows_dfs_server.rb +2 -2
  614. data/lib/chef/resource/windows_dns_record.rb +1 -1
  615. data/lib/chef/resource/windows_dns_zone.rb +1 -1
  616. data/lib/chef/resource/windows_feature.rb +1 -1
  617. data/lib/chef/resource/windows_feature_dism.rb +1 -1
  618. data/lib/chef/resource/windows_feature_powershell.rb +1 -1
  619. data/lib/chef/resource/windows_firewall_rule.rb +9 -5
  620. data/lib/chef/resource/windows_font.rb +1 -1
  621. data/lib/chef/resource/windows_package.rb +1 -1
  622. data/lib/chef/resource/windows_pagefile.rb +1 -1
  623. data/lib/chef/resource/windows_path.rb +1 -1
  624. data/lib/chef/resource/windows_script.rb +1 -1
  625. data/lib/chef/resource/windows_service.rb +1 -1
  626. data/lib/chef/resource/windows_share.rb +6 -6
  627. data/lib/chef/resource/windows_shortcut.rb +1 -1
  628. data/lib/chef/resource/windows_task.rb +14 -14
  629. data/lib/chef/resource/windows_uac.rb +1 -1
  630. data/lib/chef/resource/yum_package.rb +2 -2
  631. data/lib/chef/resource/yum_repository.rb +1 -1
  632. data/lib/chef/resource/zypper_repository.rb +1 -1
  633. data/lib/chef/resource_builder.rb +1 -1
  634. data/lib/chef/resource_collection.rb +2 -2
  635. data/lib/chef/resource_collection/resource_collection_serialization.rb +1 -1
  636. data/lib/chef/resource_collection/resource_list.rb +1 -1
  637. data/lib/chef/resource_collection/resource_set.rb +1 -1
  638. data/lib/chef/resource_definition.rb +1 -1
  639. data/lib/chef/resource_definition_list.rb +1 -1
  640. data/lib/chef/resource_inspector.rb +5 -4
  641. data/lib/chef/resource_reporter.rb +2 -2
  642. data/lib/chef/resource_resolver.rb +1 -1
  643. data/lib/chef/resources.rb +1 -1
  644. data/lib/chef/role.rb +1 -1
  645. data/lib/chef/run_context.rb +2 -2
  646. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  647. data/lib/chef/run_list.rb +1 -1
  648. data/lib/chef/run_list/run_list_expansion.rb +1 -1
  649. data/lib/chef/run_list/run_list_item.rb +1 -1
  650. data/lib/chef/run_list/versioned_recipe_list.rb +1 -1
  651. data/lib/chef/run_lock.rb +1 -1
  652. data/lib/chef/run_status.rb +1 -1
  653. data/lib/chef/runner.rb +2 -2
  654. data/lib/chef/scan_access_control.rb +1 -1
  655. data/lib/chef/search/query.rb +1 -1
  656. data/lib/chef/server_api.rb +1 -1
  657. data/lib/chef/server_api_versions.rb +1 -1
  658. data/lib/chef/shell.rb +1 -1
  659. data/lib/chef/shell/ext.rb +1 -1
  660. data/lib/chef/shell/model_wrapper.rb +1 -1
  661. data/lib/chef/shell/shell_session.rb +1 -1
  662. data/lib/chef/train_transport.rb +1 -1
  663. data/lib/chef/user.rb +1 -1
  664. data/lib/chef/user_v1.rb +1 -1
  665. data/lib/chef/util/backup.rb +1 -1
  666. data/lib/chef/util/diff.rb +4 -4
  667. data/lib/chef/util/dsc/configuration_generator.rb +1 -1
  668. data/lib/chef/util/dsc/lcm_output_parser.rb +4 -4
  669. data/lib/chef/util/dsc/local_configuration_manager.rb +2 -2
  670. data/lib/chef/util/dsc/resource_store.rb +1 -1
  671. data/lib/chef/util/editor.rb +1 -1
  672. data/lib/chef/util/file_edit.rb +1 -1
  673. data/lib/chef/util/path_helper.rb +1 -1
  674. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  675. data/lib/chef/util/powershell/cmdlet_result.rb +1 -1
  676. data/lib/chef/util/powershell/ps_credential.rb +1 -1
  677. data/lib/chef/util/selinux.rb +3 -3
  678. data/lib/chef/util/threaded_job_queue.rb +1 -1
  679. data/lib/chef/util/windows/logon_session.rb +1 -1
  680. data/lib/chef/version.rb +2 -2
  681. data/lib/chef/version_class.rb +1 -1
  682. data/lib/chef/version_constraint.rb +1 -1
  683. data/lib/chef/win32/api.rb +1 -1
  684. data/lib/chef/win32/api/command_line_helper.rb +89 -0
  685. data/lib/chef/win32/api/crypto.rb +1 -1
  686. data/lib/chef/win32/api/error.rb +1 -1
  687. data/lib/chef/win32/api/file.rb +20 -20
  688. data/lib/chef/win32/api/installer.rb +1 -1
  689. data/lib/chef/win32/api/memory.rb +1 -1
  690. data/lib/chef/win32/api/net.rb +1 -1
  691. data/lib/chef/win32/api/process.rb +1 -1
  692. data/lib/chef/win32/api/psapi.rb +1 -1
  693. data/lib/chef/win32/api/registry.rb +1 -1
  694. data/lib/chef/win32/api/security.rb +1 -1
  695. data/lib/chef/win32/api/synchronization.rb +1 -1
  696. data/lib/chef/win32/api/system.rb +1 -1
  697. data/lib/chef/win32/api/unicode.rb +1 -1
  698. data/lib/chef/win32/crypto.rb +1 -1
  699. data/lib/chef/win32/error.rb +2 -2
  700. data/lib/chef/win32/eventlog.rb +1 -1
  701. data/lib/chef/win32/file.rb +2 -2
  702. data/lib/chef/win32/file/info.rb +1 -1
  703. data/lib/chef/win32/file/version_info.rb +1 -1
  704. data/lib/chef/win32/handle.rb +1 -1
  705. data/lib/chef/win32/memory.rb +1 -1
  706. data/lib/chef/win32/mutex.rb +2 -2
  707. data/lib/chef/win32/net.rb +1 -1
  708. data/lib/chef/win32/process.rb +3 -3
  709. data/lib/chef/win32/registry.rb +2 -2
  710. data/lib/chef/win32/security.rb +1 -1
  711. data/lib/chef/win32/security/ace.rb +1 -1
  712. data/lib/chef/win32/security/acl.rb +1 -1
  713. data/lib/chef/win32/security/securable_object.rb +1 -1
  714. data/lib/chef/win32/security/security_descriptor.rb +1 -1
  715. data/lib/chef/win32/security/sid.rb +1 -1
  716. data/lib/chef/win32/security/token.rb +1 -1
  717. data/lib/chef/win32/system.rb +1 -1
  718. data/lib/chef/win32/unicode.rb +1 -1
  719. data/lib/chef/win32/version.rb +1 -1
  720. data/lib/chef/workstation_config_loader.rb +1 -1
  721. data/spec/data/cookbooks/starter/recipes/default.rb +1 -1
  722. data/spec/data/shef-config.rb +1 -1
  723. data/spec/data/windows_certificates/base64_test.cer +18 -20
  724. data/spec/data/windows_certificates/othertest.cer +0 -0
  725. data/spec/data/windows_certificates/test.cer +0 -0
  726. data/spec/data/windows_certificates/test.p7b +0 -0
  727. data/spec/data/windows_certificates/test.pem +18 -19
  728. data/spec/data/windows_certificates/test.pfx +0 -0
  729. data/spec/functional/application_spec.rb +1 -1
  730. data/spec/functional/dsl/reboot_pending_spec.rb +7 -6
  731. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  732. data/spec/functional/event_loggers/windows_eventlog_spec.rb +1 -1
  733. data/spec/functional/file_content_management/deploy_strategies_spec.rb +4 -4
  734. data/spec/functional/http/simple_spec.rb +1 -1
  735. data/spec/functional/knife/configure_spec.rb +1 -1
  736. data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
  737. data/spec/functional/knife/exec_spec.rb +1 -1
  738. data/spec/functional/knife/rehash_spec.rb +1 -1
  739. data/spec/functional/knife/smoke_test.rb +1 -1
  740. data/spec/functional/knife/ssh_spec.rb +1 -1
  741. data/spec/functional/mixin/from_file_spec.rb +1 -1
  742. data/spec/functional/mixin/powershell_out_spec.rb +1 -1
  743. data/spec/functional/mixin/shell_out_spec.rb +1 -1
  744. data/spec/functional/mixin/user_context_spec.rb +1 -1
  745. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +1 -1
  746. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +1 -1
  747. data/spec/functional/resource/aix_service_spec.rb +1 -1
  748. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  749. data/spec/functional/resource/apt_package_spec.rb +1 -1
  750. data/spec/functional/resource/base.rb +1 -1
  751. data/spec/functional/resource/bash_spec.rb +1 -1
  752. data/spec/functional/resource/batch_spec.rb +1 -1
  753. data/spec/functional/resource/bff_spec.rb +1 -1
  754. data/spec/functional/resource/chocolatey_package_spec.rb +30 -1
  755. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  756. data/spec/functional/resource/cron_spec.rb +1 -1
  757. data/spec/functional/resource/directory_spec.rb +1 -1
  758. data/spec/functional/resource/dnf_package_spec.rb +2 -2
  759. data/spec/functional/resource/dpkg_package_spec.rb +1 -1
  760. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  761. data/spec/functional/resource/dsc_script_spec.rb +1 -1
  762. data/spec/functional/resource/execute_spec.rb +1 -1
  763. data/spec/functional/resource/file_spec.rb +1 -1
  764. data/spec/functional/resource/git_spec.rb +1 -1
  765. data/spec/functional/resource/group_spec.rb +1 -1
  766. data/spec/functional/resource/ifconfig_spec.rb +2 -2
  767. data/spec/functional/resource/insserv_spec.rb +1 -1
  768. data/spec/functional/resource/link_spec.rb +1 -1
  769. data/spec/functional/resource/locale_spec.rb +1 -1
  770. data/spec/functional/resource/mount_spec.rb +1 -1
  771. data/spec/functional/resource/msu_package_spec.rb +6 -3
  772. data/spec/functional/resource/ohai_spec.rb +1 -1
  773. data/spec/functional/resource/powershell_script_spec.rb +1 -1
  774. data/spec/functional/resource/registry_spec.rb +1 -1
  775. data/spec/functional/resource/remote_directory_spec.rb +1 -1
  776. data/spec/functional/resource/remote_file_spec.rb +1 -1
  777. data/spec/functional/resource/rpm_spec.rb +1 -1
  778. data/spec/functional/resource/template_spec.rb +1 -1
  779. data/spec/functional/resource/timezone_spec.rb +1 -1
  780. data/spec/functional/resource/user/dscl_spec.rb +2 -2
  781. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  782. data/spec/functional/resource/user/windows_spec.rb +1 -1
  783. data/spec/functional/resource/windows_certificate_spec.rb +10 -10
  784. data/spec/functional/resource/windows_env_spec.rb +2 -2
  785. data/spec/functional/resource/windows_package_spec.rb +1 -1
  786. data/spec/functional/resource/windows_path_spec.rb +1 -1
  787. data/spec/functional/resource/windows_service_spec.rb +2 -3
  788. data/spec/functional/resource/windows_task_spec.rb +41 -41
  789. data/spec/functional/resource/yum_package_spec.rb +2 -2
  790. data/spec/functional/resource/zypper_package_spec.rb +1 -1
  791. data/spec/functional/run_lock_spec.rb +7 -1
  792. data/spec/functional/shell_spec.rb +1 -1
  793. data/spec/functional/tiny_server_spec.rb +1 -1
  794. data/spec/functional/util/path_helper_spec.rb +1 -1
  795. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  796. data/spec/functional/version_spec.rb +1 -1
  797. data/spec/functional/win32/crypto_spec.rb +1 -1
  798. data/spec/functional/win32/registry_spec.rb +1 -1
  799. data/spec/functional/win32/security_spec.rb +1 -1
  800. data/spec/functional/win32/service_manager_spec.rb +2 -2
  801. data/spec/functional/win32/version_info_spec.rb +5 -5
  802. data/spec/functional/win32/versions_spec.rb +2 -2
  803. data/spec/integration/client/client_spec.rb +2 -2
  804. data/spec/integration/client/exit_code_spec.rb +1 -0
  805. data/spec/integration/client/ipv6_spec.rb +2 -1
  806. data/spec/integration/knife/chef_fs_data_store_spec.rb +2 -1
  807. data/spec/integration/knife/chef_repo_path_spec.rb +2 -1
  808. data/spec/integration/knife/chef_repository_file_system_spec.rb +2 -1
  809. data/spec/integration/knife/chefignore_spec.rb +2 -1
  810. data/spec/integration/knife/client_bulk_delete_spec.rb +2 -1
  811. data/spec/integration/knife/client_create_spec.rb +2 -1
  812. data/spec/integration/knife/client_delete_spec.rb +2 -1
  813. data/spec/integration/knife/client_key_create_spec.rb +2 -1
  814. data/spec/integration/knife/client_key_delete_spec.rb +2 -1
  815. data/spec/integration/knife/client_key_list_spec.rb +2 -1
  816. data/spec/integration/knife/client_key_show_spec.rb +2 -1
  817. data/spec/integration/knife/client_list_spec.rb +2 -1
  818. data/spec/integration/knife/client_show_spec.rb +2 -1
  819. data/spec/integration/knife/common_options_spec.rb +2 -1
  820. data/spec/integration/knife/config_get_profile_spec.rb +1 -0
  821. data/spec/integration/knife/config_get_spec.rb +1 -0
  822. data/spec/integration/knife/config_list_profiles_spec.rb +1 -0
  823. data/spec/integration/knife/config_use_profile_spec.rb +1 -0
  824. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -1
  825. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +2 -1
  826. data/spec/integration/knife/cookbook_download_spec.rb +2 -1
  827. data/spec/integration/knife/cookbook_list_spec.rb +2 -1
  828. data/spec/integration/knife/cookbook_show_spec.rb +2 -1
  829. data/spec/integration/knife/cookbook_upload_spec.rb +2 -1
  830. data/spec/integration/knife/data_bag_create_spec.rb +2 -1
  831. data/spec/integration/knife/data_bag_delete_spec.rb +2 -1
  832. data/spec/integration/knife/data_bag_edit_spec.rb +2 -1
  833. data/spec/integration/knife/data_bag_from_file_spec.rb +2 -1
  834. data/spec/integration/knife/data_bag_list_spec.rb +2 -1
  835. data/spec/integration/knife/data_bag_show_spec.rb +2 -1
  836. data/spec/integration/knife/delete_spec.rb +2 -1
  837. data/spec/integration/knife/deps_spec.rb +4 -3
  838. data/spec/integration/knife/diff_spec.rb +2 -1
  839. data/spec/integration/knife/download_spec.rb +2 -1
  840. data/spec/integration/knife/environment_compare_spec.rb +2 -1
  841. data/spec/integration/knife/environment_create_spec.rb +2 -1
  842. data/spec/integration/knife/environment_delete_spec.rb +2 -1
  843. data/spec/integration/knife/environment_from_file_spec.rb +2 -1
  844. data/spec/integration/knife/environment_list_spec.rb +2 -1
  845. data/spec/integration/knife/environment_show_spec.rb +2 -1
  846. data/spec/integration/knife/list_spec.rb +2 -1
  847. data/spec/integration/knife/node_bulk_delete_spec.rb +2 -1
  848. data/spec/integration/knife/node_create_spec.rb +2 -1
  849. data/spec/integration/knife/node_delete_spec.rb +2 -1
  850. data/spec/integration/knife/node_environment_set_spec.rb +2 -1
  851. data/spec/integration/knife/node_from_file_spec.rb +2 -1
  852. data/spec/integration/knife/node_list_spec.rb +2 -1
  853. data/spec/integration/knife/node_run_list_add_spec.rb +2 -1
  854. data/spec/integration/knife/node_run_list_remove_spec.rb +2 -1
  855. data/spec/integration/knife/node_run_list_set_spec.rb +2 -1
  856. data/spec/integration/knife/node_show_spec.rb +2 -1
  857. data/spec/integration/knife/raw_spec.rb +2 -1
  858. data/spec/integration/knife/redirection_spec.rb +2 -1
  859. data/spec/integration/knife/role_bulk_delete_spec.rb +2 -1
  860. data/spec/integration/knife/role_create_spec.rb +2 -1
  861. data/spec/integration/knife/role_delete_spec.rb +2 -1
  862. data/spec/integration/knife/role_from_file_spec.rb +2 -1
  863. data/spec/integration/knife/role_list_spec.rb +2 -1
  864. data/spec/integration/knife/role_show_spec.rb +2 -1
  865. data/spec/integration/knife/search_node_spec.rb +2 -1
  866. data/spec/integration/knife/serve_spec.rb +1 -1
  867. data/spec/integration/knife/show_spec.rb +2 -1
  868. data/spec/integration/knife/upload_spec.rb +2 -1
  869. data/spec/integration/recipes/accumulator_spec.rb +1 -0
  870. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -0
  871. data/spec/integration/recipes/lwrp_spec.rb +1 -0
  872. data/spec/integration/recipes/notifies_spec.rb +1 -0
  873. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  874. data/spec/integration/recipes/recipe_dsl_spec.rb +1 -0
  875. data/spec/integration/recipes/resource_action_spec.rb +1 -0
  876. data/spec/integration/recipes/unified_mode_spec.rb +1 -0
  877. data/spec/integration/solo/solo_spec.rb +1 -0
  878. data/spec/spec_helper.rb +23 -21
  879. data/spec/stress/win32/file_spec.rb +1 -1
  880. data/spec/stress/win32/memory_spec.rb +1 -1
  881. data/spec/stress/win32/security_spec.rb +1 -1
  882. data/spec/support/chef_helpers.rb +3 -3
  883. data/spec/support/key_helpers.rb +1 -3
  884. data/spec/support/lib/chef/provider/easy.rb +1 -1
  885. data/spec/support/lib/chef/provider/openldap_includer.rb +1 -1
  886. data/spec/support/lib/chef/provider/snakeoil.rb +1 -1
  887. data/spec/support/lib/chef/resource/cat.rb +1 -1
  888. data/spec/support/lib/chef/resource/openldap_includer.rb +1 -1
  889. data/spec/support/lib/chef/resource/with_state.rb +1 -1
  890. data/spec/support/lib/chef/resource/zen_follower.rb +1 -1
  891. data/spec/support/lib/chef/resource/zen_master.rb +1 -1
  892. data/spec/support/matchers/leak.rb +1 -1
  893. data/spec/support/mock/platform.rb +1 -1
  894. data/spec/support/platform_helpers.rb +7 -3
  895. data/spec/support/platforms/prof/gc.rb +1 -1
  896. data/spec/support/platforms/prof/win32.rb +1 -1
  897. data/spec/support/platforms/win32/spec_service.rb +28 -26
  898. data/spec/support/shared/context/config.rb +0 -3
  899. data/spec/support/shared/context/win32.rb +1 -1
  900. data/spec/support/shared/functional/directory_resource.rb +1 -1
  901. data/spec/support/shared/functional/execute_resource.rb +1 -1
  902. data/spec/support/shared/functional/file_resource.rb +2 -2
  903. data/spec/support/shared/functional/http.rb +1 -1
  904. data/spec/support/shared/functional/knife.rb +1 -1
  905. data/spec/support/shared/functional/securable_resource.rb +2 -2
  906. data/spec/support/shared/functional/windows_script.rb +1 -1
  907. data/spec/support/shared/integration/integration_helper.rb +1 -2
  908. data/spec/support/shared/integration/knife_support.rb +1 -1
  909. data/spec/support/shared/unit/api_error_inspector.rb +1 -1
  910. data/spec/support/shared/unit/api_versioning.rb +1 -1
  911. data/spec/support/shared/unit/application_dot_d.rb +1 -1
  912. data/spec/support/shared/unit/execute_resource.rb +1 -3
  913. data/spec/support/shared/unit/file_system_support.rb +1 -1
  914. data/spec/support/shared/unit/knife_shared.rb +1 -1
  915. data/spec/support/shared/unit/platform_introspector.rb +1 -1
  916. data/spec/support/shared/unit/provider/file.rb +2 -3
  917. data/spec/support/shared/unit/provider/package/package_shared.rb +1 -1
  918. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +1 -1
  919. data/spec/support/shared/unit/resource/static_provider_resolution.rb +1 -1
  920. data/spec/support/shared/unit/script_resource.rb +3 -5
  921. data/spec/support/shared/unit/user_and_client_shared.rb +2 -2
  922. data/spec/support/shared/unit/windows_script_resource.rb +1 -3
  923. data/spec/tiny_server.rb +1 -1
  924. data/spec/unit/action_collection_spec.rb +1 -1
  925. data/spec/unit/api_client/registration_spec.rb +1 -1
  926. data/spec/unit/api_client_spec.rb +1 -1
  927. data/spec/unit/api_client_v1_spec.rb +1 -1
  928. data/spec/unit/application/client_spec.rb +1 -1
  929. data/spec/unit/application/exit_code_spec.rb +1 -1
  930. data/spec/unit/application/knife_spec.rb +1 -1
  931. data/spec/unit/application/solo_spec.rb +1 -1
  932. data/spec/unit/application_spec.rb +8 -1
  933. data/spec/unit/chef_class_spec.rb +1 -1
  934. data/spec/unit/chef_fs/config_spec.rb +1 -1
  935. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  936. data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +1 -1
  937. data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +1 -1
  938. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  939. data/spec/unit/chef_fs/file_pattern_spec.rb +1 -1
  940. data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +1 -1
  941. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
  942. data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +1 -1
  943. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  944. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  945. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  946. data/spec/unit/chef_spec.rb +1 -1
  947. data/spec/unit/client_spec.rb +15 -1
  948. data/spec/unit/cookbook/chefignore_spec.rb +1 -1
  949. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +1 -1
  950. data/spec/unit/cookbook/file_vendor_spec.rb +2 -2
  951. data/spec/unit/cookbook/gem_installer_spec.rb +1 -1
  952. data/spec/unit/cookbook/manifest_v0_spec.rb +1 -1
  953. data/spec/unit/cookbook/manifest_v2_spec.rb +1 -1
  954. data/spec/unit/cookbook/metadata_spec.rb +2 -11
  955. data/spec/unit/cookbook/syntax_check_spec.rb +1 -1
  956. data/spec/unit/cookbook_loader_spec.rb +1 -1
  957. data/spec/unit/cookbook_manifest_spec.rb +1 -1
  958. data/spec/unit/cookbook_spec.rb +1 -1
  959. data/spec/unit/cookbook_uploader_spec.rb +1 -1
  960. data/spec/unit/cookbook_version_file_specificity_spec.rb +1 -1
  961. data/spec/unit/cookbook_version_spec.rb +2 -2
  962. data/spec/unit/daemon_spec.rb +1 -1
  963. data/spec/unit/data_bag_item_spec.rb +1 -1
  964. data/spec/unit/data_bag_spec.rb +2 -2
  965. data/spec/unit/data_collector_spec.rb +4 -4
  966. data/spec/unit/decorator/lazy_array_spec.rb +1 -1
  967. data/spec/unit/decorator/lazy_spec.rb +1 -1
  968. data/spec/unit/decorator_spec.rb +1 -1
  969. data/spec/unit/deprecated_spec.rb +4 -4
  970. data/spec/unit/deprecation_spec.rb +1 -1
  971. data/spec/unit/digester_spec.rb +1 -1
  972. data/spec/unit/dsl/data_query_spec.rb +1 -1
  973. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  974. data/spec/unit/dsl/platform_introspection_spec.rb +1 -1
  975. data/spec/unit/dsl/reboot_pending_spec.rb +1 -1
  976. data/spec/unit/dsl/recipe_spec.rb +1 -1
  977. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  978. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +2 -2
  979. data/spec/unit/encrypted_data_bag_item_spec.rb +3 -3
  980. data/spec/unit/environment_spec.rb +1 -1
  981. data/spec/unit/event_dispatch/dispatcher_spec.rb +2 -2
  982. data/spec/unit/exceptions_spec.rb +1 -1
  983. data/spec/unit/file_access_control_spec.rb +2 -2
  984. data/spec/unit/file_cache_spec.rb +1 -1
  985. data/spec/unit/file_content_management/deploy/cp_spec.rb +1 -1
  986. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +2 -2
  987. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +2 -2
  988. data/spec/unit/file_content_management/tempfile_spec.rb +2 -2
  989. data/spec/unit/formatters/base_spec.rb +2 -2
  990. data/spec/unit/formatters/doc_spec.rb +1 -1
  991. data/spec/unit/formatters/error_description_spec.rb +1 -1
  992. data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +1 -1
  993. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +1 -1
  994. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +3 -3
  995. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
  996. data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +1 -1
  997. data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +1 -1
  998. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +1 -1
  999. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +1 -1
  1000. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +1 -1
  1001. data/spec/unit/guard_interpreter_spec.rb +1 -1
  1002. data/spec/unit/handler/json_file_spec.rb +1 -1
  1003. data/spec/unit/handler_spec.rb +1 -1
  1004. data/spec/unit/http/api_versions_spec.rb +1 -1
  1005. data/spec/unit/http/authenticator_spec.rb +1 -1
  1006. data/spec/unit/http/http_request_spec.rb +1 -1
  1007. data/spec/unit/http/json_input_spec.rb +1 -1
  1008. data/spec/unit/http/simple_spec.rb +1 -1
  1009. data/spec/unit/http/socketless_chef_zero_client_spec.rb +1 -1
  1010. data/spec/unit/http/ssl_policies_spec.rb +1 -1
  1011. data/spec/unit/http/validate_content_length_spec.rb +1 -1
  1012. data/spec/unit/http_spec.rb +2 -2
  1013. data/spec/unit/json_compat_spec.rb +2 -2
  1014. data/spec/unit/key_spec.rb +2 -2
  1015. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +1 -1
  1016. data/spec/unit/knife/bootstrap/client_builder_spec.rb +1 -1
  1017. data/spec/unit/knife/bootstrap/train_connector_spec.rb +1 -1
  1018. data/spec/unit/knife/bootstrap_spec.rb +14 -17
  1019. data/spec/unit/knife/client_bulk_delete_spec.rb +1 -1
  1020. data/spec/unit/knife/client_create_spec.rb +1 -1
  1021. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +1 -1
  1022. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +2 -2
  1023. data/spec/unit/knife/cookbook_show_spec.rb +1 -1
  1024. data/spec/unit/knife/cookbook_upload_spec.rb +1 -1
  1025. data/spec/unit/knife/core/bootstrap_context_spec.rb +2 -2
  1026. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
  1027. data/spec/unit/knife/core/gem_glob_loader_spec.rb +1 -1
  1028. data/spec/unit/knife/core/hashed_command_loader_spec.rb +1 -1
  1029. data/spec/unit/knife/core/node_editor_spec.rb +1 -1
  1030. data/spec/unit/knife/core/object_loader_spec.rb +1 -1
  1031. data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
  1032. data/spec/unit/knife/core/ui_spec.rb +1 -1
  1033. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +10 -4
  1034. data/spec/unit/knife/data_bag_create_spec.rb +1 -1
  1035. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  1036. data/spec/unit/knife/data_bag_from_file_spec.rb +1 -1
  1037. data/spec/unit/knife/data_bag_secret_options_spec.rb +1 -1
  1038. data/spec/unit/knife/data_bag_show_spec.rb +1 -1
  1039. data/spec/unit/knife/environment_create_spec.rb +1 -1
  1040. data/spec/unit/knife/environment_delete_spec.rb +1 -1
  1041. data/spec/unit/knife/environment_edit_spec.rb +2 -2
  1042. data/spec/unit/knife/environment_from_file_spec.rb +1 -1
  1043. data/spec/unit/knife/environment_list_spec.rb +1 -1
  1044. data/spec/unit/knife/environment_show_spec.rb +1 -1
  1045. data/spec/unit/knife/key_create_spec.rb +1 -1
  1046. data/spec/unit/knife/key_delete_spec.rb +1 -1
  1047. data/spec/unit/knife/key_edit_spec.rb +1 -1
  1048. data/spec/unit/knife/key_helper.rb +1 -1
  1049. data/spec/unit/knife/key_list_spec.rb +1 -1
  1050. data/spec/unit/knife/key_show_spec.rb +1 -1
  1051. data/spec/unit/knife/node_bulk_delete_spec.rb +1 -1
  1052. data/spec/unit/knife/node_delete_spec.rb +1 -1
  1053. data/spec/unit/knife/node_edit_spec.rb +1 -1
  1054. data/spec/unit/knife/node_from_file_spec.rb +1 -1
  1055. data/spec/unit/knife/node_list_spec.rb +1 -1
  1056. data/spec/unit/knife/node_policy_set_spec.rb +1 -1
  1057. data/spec/unit/knife/node_run_list_add_spec.rb +1 -1
  1058. data/spec/unit/knife/node_run_list_remove_spec.rb +1 -1
  1059. data/spec/unit/knife/node_show_spec.rb +1 -1
  1060. data/spec/unit/knife/raw_spec.rb +1 -1
  1061. data/spec/unit/knife/role_bulk_delete_spec.rb +1 -1
  1062. data/spec/unit/knife/role_create_spec.rb +1 -1
  1063. data/spec/unit/knife/role_delete_spec.rb +1 -1
  1064. data/spec/unit/knife/role_edit_spec.rb +1 -1
  1065. data/spec/unit/knife/role_env_run_list_add_spec.rb +7 -7
  1066. data/spec/unit/knife/role_env_run_list_clear_spec.rb +5 -5
  1067. data/spec/unit/knife/role_env_run_list_remove_spec.rb +5 -5
  1068. data/spec/unit/knife/role_env_run_list_replace_spec.rb +5 -5
  1069. data/spec/unit/knife/role_env_run_list_set_spec.rb +5 -5
  1070. data/spec/unit/knife/role_from_file_spec.rb +1 -1
  1071. data/spec/unit/knife/role_list_spec.rb +1 -1
  1072. data/spec/unit/knife/role_run_list_add_spec.rb +7 -7
  1073. data/spec/unit/knife/role_run_list_clear_spec.rb +5 -5
  1074. data/spec/unit/knife/role_run_list_remove_spec.rb +5 -5
  1075. data/spec/unit/knife/role_run_list_replace_spec.rb +5 -5
  1076. data/spec/unit/knife/role_run_list_set_spec.rb +5 -5
  1077. data/spec/unit/knife/ssh_spec.rb +1 -1
  1078. data/spec/unit/knife/ssl_check_spec.rb +1 -1
  1079. data/spec/unit/knife/ssl_fetch_spec.rb +2 -2
  1080. data/spec/unit/knife/status_spec.rb +1 -1
  1081. data/spec/unit/knife/supermarket_download_spec.rb +1 -1
  1082. data/spec/unit/knife/supermarket_install_spec.rb +1 -1
  1083. data/spec/unit/knife/supermarket_list_spec.rb +1 -1
  1084. data/spec/unit/knife/supermarket_search_spec.rb +1 -1
  1085. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  1086. data/spec/unit/knife/supermarket_unshare_spec.rb +1 -1
  1087. data/spec/unit/knife/user_create_spec.rb +1 -1
  1088. data/spec/unit/knife/user_delete_spec.rb +1 -1
  1089. data/spec/unit/knife/user_edit_spec.rb +1 -1
  1090. data/spec/unit/knife/user_list_spec.rb +1 -1
  1091. data/spec/unit/knife/user_reregister_spec.rb +1 -1
  1092. data/spec/unit/knife/user_show_spec.rb +1 -1
  1093. data/spec/unit/knife_spec.rb +8 -9
  1094. data/spec/unit/log/syslog_spec.rb +1 -1
  1095. data/spec/unit/log/winevt_spec.rb +1 -1
  1096. data/spec/unit/log_spec.rb +1 -1
  1097. data/spec/unit/lwrp_spec.rb +2 -2
  1098. data/spec/unit/mixin/api_version_request_handling_spec.rb +1 -1
  1099. data/spec/unit/mixin/checksum_spec.rb +1 -1
  1100. data/spec/unit/mixin/deprecation_spec.rb +1 -1
  1101. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +1 -1
  1102. data/spec/unit/mixin/homebrew_user_spec.rb +1 -1
  1103. data/spec/unit/mixin/lazy_module_include.rb +1 -1
  1104. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  1105. data/spec/unit/mixin/params_validate_spec.rb +1 -1
  1106. data/spec/unit/mixin/path_sanity_spec.rb +1 -1
  1107. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  1108. data/spec/unit/mixin/powershell_out_spec.rb +1 -1
  1109. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  1110. data/spec/unit/mixin/proxified_socket_spec.rb +1 -1
  1111. data/spec/unit/mixin/securable_spec.rb +1 -1
  1112. data/spec/unit/mixin/shell_out_spec.rb +27 -29
  1113. data/spec/unit/mixin/subclass_directive_spec.rb +1 -1
  1114. data/spec/unit/mixin/template_spec.rb +1 -1
  1115. data/spec/unit/mixin/unformatter_spec.rb +1 -1
  1116. data/spec/unit/mixin/uris_spec.rb +1 -1
  1117. data/spec/unit/mixin/user_context_spec.rb +2 -10
  1118. data/spec/unit/mixin/versioned_api_spec.rb +1 -1
  1119. data/spec/unit/mixin/which.rb +1 -1
  1120. data/spec/unit/mixin/windows_architecture_helper_spec.rb +1 -1
  1121. data/spec/unit/mixin/xml_escape_spec.rb +1 -1
  1122. data/spec/unit/monkey_patches/uri_spec.rb +1 -1
  1123. data/spec/unit/monologger_spec.rb +1 -1
  1124. data/spec/unit/node/attribute_spec.rb +2 -2
  1125. data/spec/unit/node/immutable_collections_spec.rb +1 -1
  1126. data/spec/unit/node/vivid_mash_spec.rb +1 -1
  1127. data/spec/unit/node_map_spec.rb +1 -1
  1128. data/spec/unit/node_spec.rb +6 -6
  1129. data/spec/unit/org_spec.rb +1 -1
  1130. data/spec/unit/platform/query_helpers_spec.rb +1 -1
  1131. data/spec/unit/policy_builder/dynamic_spec.rb +1 -1
  1132. data/spec/unit/policy_builder/expand_node_object_spec.rb +1 -1
  1133. data/spec/unit/policy_builder/policyfile_spec.rb +1 -1
  1134. data/spec/unit/policy_builder_spec.rb +1 -1
  1135. data/spec/unit/property_spec.rb +3 -3
  1136. data/spec/unit/provider/apt_preference_spec.rb +2 -2
  1137. data/spec/unit/provider/apt_repository_spec.rb +3 -3
  1138. data/spec/unit/provider/apt_update_spec.rb +1 -1
  1139. data/spec/unit/provider/cookbook_file/content_spec.rb +1 -1
  1140. data/spec/unit/provider/cookbook_file_spec.rb +1 -1
  1141. data/spec/unit/provider/directory_spec.rb +1 -1
  1142. data/spec/unit/provider/dsc_resource_spec.rb +1 -1
  1143. data/spec/unit/provider/dsc_script_spec.rb +1 -1
  1144. data/spec/unit/provider/execute_spec.rb +1 -1
  1145. data/spec/unit/provider/file/content_spec.rb +1 -1
  1146. data/spec/unit/provider/file_spec.rb +2 -1
  1147. data/spec/unit/provider/git_spec.rb +4 -4
  1148. data/spec/unit/provider/group/dscl_spec.rb +1 -1
  1149. data/spec/unit/provider/group/gpasswd_spec.rb +1 -1
  1150. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  1151. data/spec/unit/provider/group/groupmod_spec.rb +1 -1
  1152. data/spec/unit/provider/group/pw_spec.rb +1 -1
  1153. data/spec/unit/provider/group/solaris_spec.rb +1 -1
  1154. data/spec/unit/provider/group/suse_spec.rb +1 -1
  1155. data/spec/unit/provider/group/usermod_spec.rb +1 -1
  1156. data/spec/unit/provider/group_spec.rb +1 -1
  1157. data/spec/unit/provider/http_request_spec.rb +1 -1
  1158. data/spec/unit/provider/ifconfig/aix_spec.rb +1 -1
  1159. data/spec/unit/provider/ifconfig_spec.rb +1 -1
  1160. data/spec/unit/provider/link_spec.rb +1 -1
  1161. data/spec/unit/provider/log_spec.rb +1 -1
  1162. data/spec/unit/provider/mount/aix_spec.rb +1 -1
  1163. data/spec/unit/provider/mount/mount_spec.rb +1 -1
  1164. data/spec/unit/provider/mount/solaris_spec.rb +1 -1
  1165. data/spec/unit/provider/mount_spec.rb +1 -1
  1166. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  1167. data/spec/unit/provider/package/apt_spec.rb +1 -1
  1168. data/spec/unit/provider/package/bff_spec.rb +1 -1
  1169. data/spec/unit/provider/package/cab_spec.rb +2 -2
  1170. data/spec/unit/provider/package/chocolatey_spec.rb +2 -2
  1171. data/spec/unit/provider/package/deb_spec.rb +1 -1
  1172. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  1173. data/spec/unit/provider/package/homebrew_spec.rb +1 -1
  1174. data/spec/unit/provider/package/ips_spec.rb +1 -1
  1175. data/spec/unit/provider/package/macports_spec.rb +1 -1
  1176. data/spec/unit/provider/package/msu_spec.rb +5 -5
  1177. data/spec/unit/provider/package/paludis_spec.rb +1 -1
  1178. data/spec/unit/provider/package/portage_spec.rb +1 -1
  1179. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  1180. data/spec/unit/provider/package/rpm_spec.rb +3 -3
  1181. data/spec/unit/provider/package/rubygems_spec.rb +1 -1
  1182. data/spec/unit/provider/package/snap_spec.rb +2 -2
  1183. data/spec/unit/provider/package/solaris_spec.rb +2 -2
  1184. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  1185. data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
  1186. data/spec/unit/provider/package/windows_spec.rb +1 -1
  1187. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -1
  1188. data/spec/unit/provider/package/yum/yum_cache_spec.rb +1 -1
  1189. data/spec/unit/provider/package/zypper_spec.rb +1 -1
  1190. data/spec/unit/provider/package_spec.rb +3 -3
  1191. data/spec/unit/provider/powershell_script_spec.rb +1 -1
  1192. data/spec/unit/provider/registry_key_spec.rb +1 -1
  1193. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +1 -1
  1194. data/spec/unit/provider/remote_file/content_spec.rb +1 -1
  1195. data/spec/unit/provider/remote_file/fetcher_spec.rb +1 -1
  1196. data/spec/unit/provider/remote_file/http_spec.rb +1 -1
  1197. data/spec/unit/provider/remote_file/network_file_spec.rb +1 -1
  1198. data/spec/unit/provider/remote_file_spec.rb +1 -1
  1199. data/spec/unit/provider/service/aix_service_spec.rb +1 -1
  1200. data/spec/unit/provider/service/aixinit_service_spec.rb +1 -1
  1201. data/spec/unit/provider/service/arch_service_spec.rb +1 -1
  1202. data/spec/unit/provider/service/gentoo_service_spec.rb +2 -2
  1203. data/spec/unit/provider/service/init_service_spec.rb +1 -1
  1204. data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
  1205. data/spec/unit/provider/service/invokercd_service_spec.rb +1 -1
  1206. data/spec/unit/provider/service/solaris_smf_service_spec.rb +1 -1
  1207. data/spec/unit/provider/service/systemd_service_spec.rb +1 -1
  1208. data/spec/unit/provider/service/windows_spec.rb +2 -2
  1209. data/spec/unit/provider/service_spec.rb +1 -1
  1210. data/spec/unit/provider/subversion_spec.rb +1 -1
  1211. data/spec/unit/provider/template/content_spec.rb +1 -1
  1212. data/spec/unit/provider/template_spec.rb +1 -1
  1213. data/spec/unit/provider/user/aix_spec.rb +1 -1
  1214. data/spec/unit/provider/user/dscl_spec.rb +1 -1
  1215. data/spec/unit/provider/user/linux_spec.rb +1 -1
  1216. data/spec/unit/provider/user/mac_spec.rb +1 -1
  1217. data/spec/unit/provider/user/pw_spec.rb +1 -1
  1218. data/spec/unit/provider/user/solaris_spec.rb +1 -1
  1219. data/spec/unit/provider/user_spec.rb +1 -1
  1220. data/spec/unit/provider/windows_path_spec.rb +1 -1
  1221. data/spec/unit/provider/windows_task_spec.rb +1 -1
  1222. data/spec/unit/provider/yum_repository_spec.rb +1 -1
  1223. data/spec/unit/provider/zypper_repository_spec.rb +76 -26
  1224. data/spec/unit/provider_resolver_spec.rb +10 -10
  1225. data/spec/unit/provider_spec.rb +1 -1
  1226. data/spec/unit/recipe_spec.rb +1 -1
  1227. data/spec/unit/resource/apt_package_spec.rb +1 -1
  1228. data/spec/unit/resource/apt_preference_spec.rb +1 -1
  1229. data/spec/unit/resource/apt_repository_spec.rb +1 -1
  1230. data/spec/unit/resource/apt_update_spec.rb +1 -1
  1231. data/spec/unit/resource/archive_file_spec.rb +12 -3
  1232. data/spec/unit/resource/bash_spec.rb +1 -1
  1233. data/spec/unit/resource/batch_spec.rb +1 -1
  1234. data/spec/unit/resource/bff_package_spec.rb +1 -1
  1235. data/spec/unit/resource/breakpoint_spec.rb +1 -1
  1236. data/spec/unit/resource/build_essential_spec.rb +48 -2
  1237. data/spec/unit/resource/cab_package_spec.rb +1 -1
  1238. data/spec/unit/resource/chef_gem_spec.rb +1 -1
  1239. data/spec/unit/resource/chef_handler_spec.rb +1 -1
  1240. data/spec/unit/resource/chef_sleep_spec.rb +1 -1
  1241. data/spec/unit/resource/chocolatey_config_spec.rb +1 -1
  1242. data/spec/unit/resource/chocolatey_feature_spec.rb +1 -1
  1243. data/spec/unit/resource/chocolatey_package_spec.rb +1 -1
  1244. data/spec/unit/resource/chocolatey_source_spec.rb +1 -1
  1245. data/spec/unit/resource/conditional_spec.rb +1 -1
  1246. data/spec/unit/resource/cookbook_file_spec.rb +1 -1
  1247. data/spec/unit/resource/cron_access_spec.rb +1 -1
  1248. data/spec/unit/resource/cron_d_spec.rb +1 -1
  1249. data/spec/unit/resource/cron_spec.rb +1 -1
  1250. data/spec/unit/resource/csh_spec.rb +1 -1
  1251. data/spec/unit/resource/data/InstallHistory_with_CLT.plist +92 -0
  1252. data/spec/unit/resource/data/InstallHistory_without_CLT.plist +38 -0
  1253. data/spec/unit/resource/directory_spec.rb +1 -1
  1254. data/spec/unit/resource/dmg_package_spec.rb +1 -1
  1255. data/spec/unit/resource/dnf_package_spec.rb +1 -1
  1256. data/spec/unit/resource/dpkg_package_spec.rb +1 -1
  1257. data/spec/unit/resource/dsc_resource_spec.rb +1 -1
  1258. data/spec/unit/resource/dsc_script_spec.rb +1 -1
  1259. data/spec/unit/resource/execute_spec.rb +2 -2
  1260. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +1 -1
  1261. data/spec/unit/resource/file/verification_spec.rb +1 -1
  1262. data/spec/unit/resource/file_spec.rb +1 -1
  1263. data/spec/unit/resource/freebsd_package_spec.rb +1 -1
  1264. data/spec/unit/resource/gem_package_spec.rb +1 -1
  1265. data/spec/unit/resource/git_spec.rb +1 -1
  1266. data/spec/unit/resource/group_spec.rb +1 -1
  1267. data/spec/unit/resource/homebrew_cask_spec.rb +1 -1
  1268. data/spec/unit/resource/homebrew_package_spec.rb +1 -1
  1269. data/spec/unit/resource/homebrew_tap_spec.rb +1 -1
  1270. data/spec/unit/resource/hostname_spec.rb +1 -1
  1271. data/spec/unit/resource/http_request_spec.rb +1 -1
  1272. data/spec/unit/resource/ips_package_spec.rb +1 -1
  1273. data/spec/unit/resource/kernel_module_spec.rb +1 -1
  1274. data/spec/unit/resource/ksh_spec.rb +1 -1
  1275. data/spec/unit/resource/link_spec.rb +1 -1
  1276. data/spec/unit/resource/locale_spec.rb +1 -1
  1277. data/spec/unit/resource/log_spec.rb +1 -1
  1278. data/spec/unit/resource/macos_user_defaults_spec.rb +1 -1
  1279. data/spec/unit/resource/macosx_service.rb +1 -1
  1280. data/spec/unit/resource/macports_package_spec.rb +1 -1
  1281. data/spec/unit/resource/mount_spec.rb +1 -1
  1282. data/spec/unit/resource/msu_package_spec.rb +5 -1
  1283. data/spec/unit/resource/notify_group_spec.rb +1 -1
  1284. data/spec/unit/resource/ohai_hint_spec.rb +1 -1
  1285. data/spec/unit/resource/openbsd_package_spec.rb +1 -1
  1286. data/spec/unit/resource/openssl_dhparam_spec.rb +1 -1
  1287. data/spec/unit/resource/openssl_ec_private_key_spec.rb +1 -1
  1288. data/spec/unit/resource/openssl_ec_public_key_spec.rb +1 -1
  1289. data/spec/unit/resource/openssl_rsa_private_key_spec.rb +1 -1
  1290. data/spec/unit/resource/openssl_rsa_public_key_spec.rb +1 -1
  1291. data/spec/unit/resource/openssl_x509_certificate_spec.rb +1 -1
  1292. data/spec/unit/resource/openssl_x509_crl_spec.rb +1 -1
  1293. data/spec/unit/resource/openssl_x509_request.rb +1 -1
  1294. data/spec/unit/resource/package_spec.rb +1 -1
  1295. data/spec/unit/resource/pacman_package_spec.rb +1 -1
  1296. data/spec/unit/resource/paludis_package_spec.rb +1 -1
  1297. data/spec/unit/resource/perl_spec.rb +1 -1
  1298. data/spec/unit/resource/portage_package_spec.rb +1 -1
  1299. data/spec/unit/resource/powershell_package_spec.rb +1 -1
  1300. data/spec/unit/resource/powershell_script_spec.rb +1 -1
  1301. data/spec/unit/resource/python_spec.rb +1 -1
  1302. data/spec/unit/resource/reboot_spec.rb +1 -1
  1303. data/spec/unit/resource/registry_key_spec.rb +1 -1
  1304. data/spec/unit/resource/remote_directory_spec.rb +1 -1
  1305. data/spec/unit/resource/remote_file_spec.rb +3 -3
  1306. data/spec/unit/resource/resource_notification_spec.rb +1 -1
  1307. data/spec/unit/resource/rhsm_errata_level_spec.rb +1 -1
  1308. data/spec/unit/resource/rhsm_errata_spec.rb +1 -1
  1309. data/spec/unit/resource/rhsm_register_spec.rb +25 -1
  1310. data/spec/unit/resource/rhsm_repo_spec.rb +1 -1
  1311. data/spec/unit/resource/rhsm_subscription_spec.rb +1 -1
  1312. data/spec/unit/resource/ruby_block_spec.rb +1 -1
  1313. data/spec/unit/resource/ruby_spec.rb +1 -1
  1314. data/spec/unit/resource/scm_spec.rb +1 -1
  1315. data/spec/unit/resource/script_spec.rb +1 -1
  1316. data/spec/unit/resource/service_spec.rb +1 -1
  1317. data/spec/unit/resource/smartos_package_spec.rb +1 -1
  1318. data/spec/unit/resource/snap_package_spec.rb +1 -1
  1319. data/spec/unit/resource/solaris_package_spec.rb +1 -1
  1320. data/spec/unit/resource/ssh_known_hosts_entry_spec.rb +1 -1
  1321. data/spec/unit/resource/subversion_spec.rb +1 -1
  1322. data/spec/unit/resource/sudo_spec.rb +1 -1
  1323. data/spec/unit/resource/swap_file_spec.rb +1 -1
  1324. data/spec/unit/resource/sysctl_spec.rb +1 -1
  1325. data/spec/unit/resource/template_spec.rb +1 -1
  1326. data/spec/unit/resource/timezone_spec.rb +1 -1
  1327. data/spec/unit/resource/user_spec.rb +1 -1
  1328. data/spec/unit/resource/windows_ad_join_spec.rb +1 -1
  1329. data/spec/unit/resource/windows_auto_run_spec.rb +1 -1
  1330. data/spec/unit/resource/windows_certificate_spec.rb +1 -1
  1331. data/spec/unit/resource/windows_dfs_folder_spec.rb +1 -1
  1332. data/spec/unit/resource/windows_dfs_namespace_spec.rb +1 -1
  1333. data/spec/unit/resource/windows_dfs_server_spec.rb +1 -1
  1334. data/spec/unit/resource/windows_dns_record_spec.rb +4 -4
  1335. data/spec/unit/resource/windows_dns_zone_spec.rb +3 -3
  1336. data/spec/unit/resource/windows_feature_dism_spec.rb +1 -1
  1337. data/spec/unit/resource/windows_feature_powershell_spec.rb +1 -1
  1338. data/spec/unit/resource/windows_feature_spec.rb +1 -1
  1339. data/spec/unit/resource/windows_font_spec.rb +1 -1
  1340. data/spec/unit/resource/windows_package_spec.rb +1 -1
  1341. data/spec/unit/resource/windows_pagefile_spec.rb +1 -1
  1342. data/spec/unit/resource/windows_path_spec.rb +1 -1
  1343. data/spec/unit/resource/windows_printer_port_spec.rb +1 -1
  1344. data/spec/unit/resource/windows_printer_spec.rb +1 -1
  1345. data/spec/unit/resource/windows_service_spec.rb +1 -1
  1346. data/spec/unit/resource/windows_share_spec.rb +4 -2
  1347. data/spec/unit/resource/windows_shortcut_spec.rb +1 -1
  1348. data/spec/unit/resource/windows_task_spec.rb +2 -2
  1349. data/spec/unit/resource/windows_uac_spec.rb +3 -3
  1350. data/spec/unit/resource/windows_workgroup_spec.rb +3 -3
  1351. data/spec/unit/resource/yum_package_spec.rb +1 -1
  1352. data/spec/unit/resource/yum_repository_spec.rb +22 -22
  1353. data/spec/unit/resource/zypper_package_spec.rb +1 -1
  1354. data/spec/unit/resource/zypper_repository_spec.rb +1 -1
  1355. data/spec/unit/resource_collection/resource_list_spec.rb +1 -1
  1356. data/spec/unit/resource_collection/resource_set_spec.rb +1 -1
  1357. data/spec/unit/resource_collection_spec.rb +1 -1
  1358. data/spec/unit/resource_definition_spec.rb +1 -1
  1359. data/spec/unit/resource_inspector_spec.rb +1 -1
  1360. data/spec/unit/resource_reporter_spec.rb +3 -3
  1361. data/spec/unit/resource_spec.rb +6 -6
  1362. data/spec/unit/role_spec.rb +1 -1
  1363. data/spec/unit/run_context/child_run_context_spec.rb +1 -1
  1364. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  1365. data/spec/unit/run_context_spec.rb +2 -2
  1366. data/spec/unit/run_list/run_list_expansion_spec.rb +1 -1
  1367. data/spec/unit/run_list/run_list_item_spec.rb +1 -1
  1368. data/spec/unit/run_list/versioned_recipe_list_spec.rb +2 -2
  1369. data/spec/unit/run_list_spec.rb +1 -1
  1370. data/spec/unit/run_lock_spec.rb +2 -2
  1371. data/spec/unit/run_status_spec.rb +1 -1
  1372. data/spec/unit/runner_spec.rb +1 -1
  1373. data/spec/unit/scan_access_control_spec.rb +2 -2
  1374. data/spec/unit/search/query_spec.rb +1 -1
  1375. data/spec/unit/server_api_versions_spec.rb +1 -1
  1376. data/spec/unit/shell/model_wrapper_spec.rb +1 -1
  1377. data/spec/unit/shell/shell_ext_spec.rb +1 -1
  1378. data/spec/unit/train_transport_spec.rb +1 -1
  1379. data/spec/unit/user_spec.rb +1 -1
  1380. data/spec/unit/user_v1_spec.rb +10 -10
  1381. data/spec/unit/util/backup_spec.rb +1 -1
  1382. data/spec/unit/util/diff_spec.rb +2 -2
  1383. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  1384. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +1 -1
  1385. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +1 -1
  1386. data/spec/unit/util/dsc/resource_store.rb +2 -2
  1387. data/spec/unit/util/file_edit_spec.rb +2 -2
  1388. data/spec/unit/util/powershell/cmdlet_spec.rb +1 -1
  1389. data/spec/unit/util/powershell/ps_credential_spec.rb +1 -1
  1390. data/spec/unit/util/selinux_spec.rb +1 -1
  1391. data/spec/unit/util/threaded_job_queue_spec.rb +10 -1
  1392. data/spec/unit/util/windows/logon_session_spec.rb +2 -2
  1393. data/spec/unit/version_class_spec.rb +1 -1
  1394. data/spec/unit/version_constraint_spec.rb +1 -1
  1395. data/spec/unit/win32/error_spec.rb +1 -1
  1396. data/spec/unit/win32/link_spec.rb +4 -4
  1397. data/spec/unit/win32/registry_spec.rb +1 -1
  1398. data/spec/unit/win32/security_spec.rb +1 -1
  1399. data/spec/unit/windows_service_spec.rb +1 -1
  1400. data/tasks/rspec.rb +7 -14
  1401. metadata +34 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e39ae27c2d7728c9088a216d1c3ce11575a6d2e02a77a2a489fee40fb2d728bf
4
- data.tar.gz: 8dcf877fc5b474c19a1ed509b9f281beee9a78d89aca9baae5c57811e19355ed
3
+ metadata.gz: d7d10dc56cf8158118e798321235a2e20cd396d0c271c1d8da451394f99cd5dc
4
+ data.tar.gz: d8d9d42fdfd9afe9bff18bf6cee3774518ae3633544d7b40dc8179b4bd6aaed7
5
5
  SHA512:
6
- metadata.gz: 000e1c6d1f52160ce6bffa144e2f2ae94aabbe7d72aa189222ee7c5e7be2e445bad02765d919eaa7eca55ff957782b11b24844952cdcf74e0ad1538ac561c80f
7
- data.tar.gz: 7721fae6454f09db2fdcc5e8c1de0cb86a1041e3b33789e81bcf4dfd54bb20fdbd4988d3974114a070ca01eaefcb993fdf08f20bb741230662efb6ab086d55e9
6
+ metadata.gz: e7dda48107577e29a021c120368b4683a7049660d79df8a2ae45912b198d89ed0c568f80c51cd341dc35aa3801b4319ed568e66f09454f2c903bfc5d4e4100d9
7
+ data.tar.gz: ecb3de98f0e4a7c8d765a9f3bf2eebe192377120447f467ea541d9c936e284768a2f96d3ccf6fe6e3459ddcd4c66703e1f188647b02723806f3b9e0b6ef977dc
data/Gemfile CHANGED
@@ -7,7 +7,6 @@ source "https://rubygems.org"
7
7
  # of bundler versions prior to 1.12.0 (https://github.com/bundler/bundler/commit/193a14fe5e0d56294c7b370a0e59f93b2c216eed)
8
8
  gem "chef", path: "."
9
9
 
10
- # necessary until we release ohai 15
11
10
  gem "ohai", git: "https://github.com/chef/ohai.git", branch: "15-stable"
12
11
 
13
12
  gem "chef-utils", path: File.expand_path("../chef-utils", __FILE__) if File.exist?(File.expand_path("../chef-utils", __FILE__))
@@ -23,6 +22,8 @@ end
23
22
 
24
23
  gem "cheffish", "~> 14"
25
24
 
25
+ gem "chef-telemetry", ">=1.0.8" # 1.0.8 removes the http dep
26
+
26
27
  group(:omnibus_package) do
27
28
  gem "appbundler"
28
29
  gem "rb-readline"
@@ -30,14 +31,14 @@ group(:omnibus_package) do
30
31
  gem "inspec-core-bin", "~> 4.18" # need to provide the binaries for inspec
31
32
  gem "chef-vault"
32
33
  gem "ed25519" # ed25519 ssh key support done here as it's a native gem we can't put in train
33
- gem "bcrypt_pbkdf" # ed25519 ssh key support done here as it's a native gem we can't put in train
34
+ gem "bcrypt_pbkdf", ">= 1.1.0.rc1" # ed25519 ssh key support done here as it's a native gem we can't put in train
34
35
  end
35
36
 
36
37
  group(:omnibus_package, :pry) do
37
38
  gem "pry"
38
39
  gem "pry-byebug"
39
40
  gem "pry-remote"
40
- gem "pry-stack_explorer"
41
+ gem "pry-stack_explorer", "~> 0.4.0" # pin to allow Ruby 2.5
41
42
  end
42
43
 
43
44
  group(:docgen) do
@@ -46,7 +47,8 @@ end
46
47
 
47
48
  # Everything except AIX
48
49
  group(:ruby_prof) do
49
- gem "ruby-prof"
50
+ # ruby-prof 1.3.0 does not compile on our centos6 builders/kitchen testers
51
+ gem "ruby-prof", "< 1.3.0"
50
52
  end
51
53
 
52
54
  # Everything except AIX and Windows
@@ -58,13 +60,12 @@ group(:development, :test) do
58
60
  # we pin rake as a copy of rake is installed from the ruby source
59
61
  # if you bump the ruby version you should confirm we don't end up with
60
62
  # two rake gems installed again
61
- gem "rake", "<= 12.3.2"
63
+ gem "rake", "<= 12.3.3"
62
64
 
63
65
  gem "rspec-core", "~> 3.5"
64
66
  gem "rspec-mocks", "~> 3.5"
65
67
  gem "rspec-expectations", "~> 3.5"
66
68
  gem "rspec_junit_formatter", "~> 0.2.0"
67
- gem "simplecov"
68
69
  gem "webmock"
69
70
  gem "fauxhai-ng" # for chef-utils gem
70
71
  end
@@ -83,6 +84,7 @@ eval_gemfile("./Gemfile.local") if File.exist?("./Gemfile.local")
83
84
  # These lines added for Windows development only.
84
85
  # For FFI to call into PowerShell we need the binaries and assemblies located
85
86
  # in the Ruby bindir.
87
+ # The Powershell DLL source lives here: https://github.com/chef/chef-powershell-shim
86
88
  #
87
89
  # We copy (and overwrite) these files every time "bundle <exec|install>" is
88
90
  # executed, just in case they have changed.
data/README.md CHANGED
@@ -18,15 +18,15 @@ Chef Infra is a configuration management tool designed to bring automation to yo
18
18
 
19
19
  ### Want to try Chef Infra?
20
20
 
21
- For Chef Infra usage, please refer to our [Learn Chef Rally](https://learn.chef.io/) website, which includes module-based training for Chef Infra, as well as Automate, Habitat, and InSpec.
21
+ For Chef Infra usage, please refer to [Learn Chef](https://learn.chef.io/), our self-paced, entirely free learning platform. Learn Chef also includes module-based training for Chef Infra, as well as Chef Automate, Chef Habitat, and Chef InSpec.
22
22
 
23
23
  Other useful resources for Chef Infra users:
24
24
 
25
- - Documentation: <https://docs.chef.io>
25
+ - Documentation: <https://docs.chef.io/>
26
26
  - Source: <https://github.com/chef/chef/tree/master>
27
27
  - Tickets/Issues: <https://github.com/chef/chef/issues>
28
28
  - Slack: [Chef Community Slack](https://community-slack.chef.io/)
29
- - Mailing list: <https://discourse.chef.io>
29
+ - Mailing list/Forum: <https://discourse.chef.io>
30
30
 
31
31
  ## Reporting Issues
32
32
 
@@ -46,7 +46,7 @@ We'd love to have your help developing Chef Infra. See our [Contributing Documen
46
46
 
47
47
  ## License and Copyright
48
48
 
49
- Copyright 2008-2019, Chef Software, Inc.
49
+ Copyright 2008-2020, Chef Software, Inc.
50
50
 
51
51
  ```
52
52
  Licensed under the Apache License, Version 2.0 (the "License");
data/Rakefile CHANGED
@@ -22,6 +22,7 @@ begin
22
22
  require_relative "tasks/dependencies"
23
23
  require_relative "tasks/announce"
24
24
  require_relative "tasks/docs"
25
+ require_relative "lib/chef/dist"
25
26
  rescue LoadError => e
26
27
  puts "Skipping missing rake dep: #{e}"
27
28
  end
@@ -35,6 +36,14 @@ task :super_install do
35
36
  Dir.chdir(path)
36
37
  sh("rake install")
37
38
  end
39
+
40
+ # Templating the powershell extensions so we can inject distro constants
41
+ template_file = ::File.join(::File.dirname(__FILE__), "distro", "templates", "powershell", "chef", "chef.psm1.erb")
42
+ psm1_path = ::File.join(::File.dirname(__FILE__), "distro", "powershell", "chef")
43
+ FileUtils.mkdir_p psm1_path
44
+ template = ERB.new(IO.read(template_file))
45
+ chef_psm1 = template.result
46
+ File.open(::File.join(psm1_path, "chef.psm1"), "w") { |f| f.write(chef_psm1) }
38
47
  end
39
48
 
40
49
  task install: :super_install
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
 
18
18
  s.add_dependency "chef-config", "= #{Chef::VERSION}"
19
19
  s.add_dependency "chef-utils", "= #{Chef::VERSION}"
20
- s.add_dependency "train-core", "~> 3.1"
20
+ s.add_dependency "train-core", "~> 3.2", ">= 3.2.28" # 3.2.28 fixes sudo prompts. See https://github.com/chef/chef/pull/9635
21
21
  s.add_dependency "train-winrm", ">= 0.2.5"
22
22
 
23
23
  s.add_dependency "license-acceptance", "~> 1.0", ">= 1.0.5"
@@ -30,16 +30,16 @@ Gem::Specification.new do |s|
30
30
 
31
31
  s.add_dependency "ffi", "~> 1.9", ">= 1.9.25"
32
32
  s.add_dependency "ffi-yajl", "~> 2.2"
33
- s.add_dependency "net-ssh", ">= 4.2", "< 6"
33
+ s.add_dependency "net-ssh", ">= 4.2", "< 7"
34
34
  s.add_dependency "net-ssh-multi", "~> 1.2", ">= 1.2.1"
35
- s.add_dependency "net-sftp", "~> 2.1", ">= 2.1.2"
35
+ s.add_dependency "net-sftp", ">= 2.1.2", "< 4.0"
36
36
  s.add_dependency "ed25519", "~> 1.2" # ed25519 ssh key support
37
37
  s.add_dependency "bcrypt_pbkdf", "~> 1.0" # ed25519 ssh key support
38
38
  s.add_dependency "highline", ">= 1.6.9", "< 2"
39
39
  s.add_dependency "tty-screen", "~> 0.6" # knife list
40
40
  s.add_dependency "erubis", "~> 2.7"
41
41
  s.add_dependency "diff-lcs", "~> 1.2", ">= 1.2.4"
42
- s.add_dependency "ffi-libarchive"
42
+ s.add_dependency "ffi-libarchive", "~> 1.0", ">= 1.0.3"
43
43
  s.add_dependency "chef-zero", ">= 14.0.11"
44
44
 
45
45
  s.add_dependency "plist", "~> 3.2"
@@ -1,459 +1,459 @@
1
- 
2
- function Load-Win32Bindings {
3
- Add-Type -TypeDefinition @"
4
- using System;
5
- using System.Diagnostics;
6
- using System.Runtime.InteropServices;
7
-
8
- namespace Chef
9
- {
10
-
11
- [StructLayout(LayoutKind.Sequential)]
12
- public struct PROCESS_INFORMATION
13
- {
14
- public IntPtr hProcess;
15
- public IntPtr hThread;
16
- public uint dwProcessId;
17
- public uint dwThreadId;
18
- }
19
-
20
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
21
- public struct STARTUPINFO
22
- {
23
- public uint cb;
24
- public string lpReserved;
25
- public string lpDesktop;
26
- public string lpTitle;
27
- public uint dwX;
28
- public uint dwY;
29
- public uint dwXSize;
30
- public uint dwYSize;
31
- public uint dwXCountChars;
32
- public uint dwYCountChars;
33
- public uint dwFillAttribute;
34
- public STARTF dwFlags;
35
- public ShowWindow wShowWindow;
36
- public short cbReserved2;
37
- public IntPtr lpReserved2;
38
- public IntPtr hStdInput;
39
- public IntPtr hStdOutput;
40
- public IntPtr hStdError;
41
- }
42
-
43
- [StructLayout(LayoutKind.Sequential)]
44
- public struct SECURITY_ATTRIBUTES
45
- {
46
- public int length;
47
- public IntPtr lpSecurityDescriptor;
48
- public bool bInheritHandle;
49
- }
50
-
51
- [Flags]
52
- public enum CreationFlags : int
53
- {
54
- NONE = 0,
55
- DEBUG_PROCESS = 0x00000001,
56
- DEBUG_ONLY_THIS_PROCESS = 0x00000002,
57
- CREATE_SUSPENDED = 0x00000004,
58
- DETACHED_PROCESS = 0x00000008,
59
- CREATE_NEW_CONSOLE = 0x00000010,
60
- CREATE_NEW_PROCESS_GROUP = 0x00000200,
61
- CREATE_UNICODE_ENVIRONMENT = 0x00000400,
62
- CREATE_SEPARATE_WOW_VDM = 0x00000800,
63
- CREATE_SHARED_WOW_VDM = 0x00001000,
64
- CREATE_PROTECTED_PROCESS = 0x00040000,
65
- EXTENDED_STARTUPINFO_PRESENT = 0x00080000,
66
- CREATE_BREAKAWAY_FROM_JOB = 0x01000000,
67
- CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000,
68
- CREATE_DEFAULT_ERROR_MODE = 0x04000000,
69
- CREATE_NO_WINDOW = 0x08000000,
70
- }
71
-
72
- [Flags]
73
- public enum STARTF : uint
74
- {
75
- STARTF_USESHOWWINDOW = 0x00000001,
76
- STARTF_USESIZE = 0x00000002,
77
- STARTF_USEPOSITION = 0x00000004,
78
- STARTF_USECOUNTCHARS = 0x00000008,
79
- STARTF_USEFILLATTRIBUTE = 0x00000010,
80
- STARTF_RUNFULLSCREEN = 0x00000020, // ignored for non-x86 platforms
81
- STARTF_FORCEONFEEDBACK = 0x00000040,
82
- STARTF_FORCEOFFFEEDBACK = 0x00000080,
83
- STARTF_USESTDHANDLES = 0x00000100,
84
- }
85
-
86
- public enum ShowWindow : short
87
- {
88
- SW_HIDE = 0,
89
- SW_SHOWNORMAL = 1,
90
- SW_NORMAL = 1,
91
- SW_SHOWMINIMIZED = 2,
92
- SW_SHOWMAXIMIZED = 3,
93
- SW_MAXIMIZE = 3,
94
- SW_SHOWNOACTIVATE = 4,
95
- SW_SHOW = 5,
96
- SW_MINIMIZE = 6,
97
- SW_SHOWMINNOACTIVE = 7,
98
- SW_SHOWNA = 8,
99
- SW_RESTORE = 9,
100
- SW_SHOWDEFAULT = 10,
101
- SW_FORCEMINIMIZE = 11,
102
- SW_MAX = 11
103
- }
104
-
105
- public enum StandardHandle : int
106
- {
107
- Input = -10,
108
- Output = -11,
109
- Error = -12
110
- }
111
-
112
- public enum HandleFlags : int
113
- {
114
- HANDLE_FLAG_INHERIT = 0x00000001,
115
- HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x00000002
116
- }
117
-
118
- public static class Kernel32
119
- {
120
- [DllImport("kernel32.dll", SetLastError=true)]
121
- [return: MarshalAs(UnmanagedType.Bool)]
122
- public static extern bool CreateProcess(
123
- string lpApplicationName,
124
- string lpCommandLine,
125
- ref SECURITY_ATTRIBUTES lpProcessAttributes,
126
- ref SECURITY_ATTRIBUTES lpThreadAttributes,
127
- [MarshalAs(UnmanagedType.Bool)] bool bInheritHandles,
128
- CreationFlags dwCreationFlags,
129
- IntPtr lpEnvironment,
130
- string lpCurrentDirectory,
131
- ref STARTUPINFO lpStartupInfo,
132
- out PROCESS_INFORMATION lpProcessInformation);
133
-
134
- [DllImport("kernel32.dll", SetLastError=true)]
135
- public static extern IntPtr GetStdHandle(
136
- StandardHandle nStdHandle);
137
-
138
- [DllImport("kernel32.dll")]
139
- public static extern bool SetHandleInformation(
140
- IntPtr hObject,
141
- int dwMask,
142
- uint dwFlags);
143
-
144
- [DllImport("kernel32", SetLastError=true)]
145
- [return: MarshalAs(UnmanagedType.Bool)]
146
- public static extern bool CloseHandle(
147
- IntPtr hObject);
148
-
149
- [DllImport("kernel32", SetLastError=true)]
150
- [return: MarshalAs(UnmanagedType.Bool)]
151
- public static extern bool GetExitCodeProcess(
152
- IntPtr hProcess,
153
- out int lpExitCode);
154
-
155
- [DllImport("kernel32.dll", SetLastError = true)]
156
- public static extern bool CreatePipe(
157
- out IntPtr phReadPipe,
158
- out IntPtr phWritePipe,
159
- IntPtr lpPipeAttributes,
160
- uint nSize);
161
-
162
- [DllImport("kernel32.dll", SetLastError = true)]
163
- public static extern bool ReadFile(
164
- IntPtr hFile,
165
- [Out] byte[] lpBuffer,
166
- uint nNumberOfBytesToRead,
167
- ref int lpNumberOfBytesRead,
168
- IntPtr lpOverlapped);
169
-
170
- [DllImport("kernel32.dll", SetLastError = true)]
171
- public static extern bool PeekNamedPipe(
172
- IntPtr handle,
173
- byte[] buffer,
174
- uint nBufferSize,
175
- ref uint bytesRead,
176
- ref uint bytesAvail,
177
- ref uint BytesLeftThisMessage);
178
-
179
- public const int STILL_ACTIVE = 259;
180
- }
181
- }
182
- "@
183
- }
184
-
185
- function Run-ExecutableAndWait($AppPath, $ArgumentString) {
186
- # Use the Win32 API to create a new process and wait for it to terminate.
187
- $null = Load-Win32Bindings
188
-
189
- $si = New-Object Chef.STARTUPINFO
190
- $pi = New-Object Chef.PROCESS_INFORMATION
191
-
192
- $pSec = New-Object Chef.SECURITY_ATTRIBUTES
193
- $pSec.Length = [System.Runtime.InteropServices.Marshal]::SizeOf($pSec)
194
- $pSec.bInheritHandle = $true
195
- $tSec = New-Object Chef.SECURITY_ATTRIBUTES
196
- $tSec.Length = [System.Runtime.InteropServices.Marshal]::SizeOf($tSec)
197
- $tSec.bInheritHandle = $true
198
-
199
- # Create pipe for process stdout
200
- $ptr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal([System.Runtime.InteropServices.Marshal]::SizeOf($si))
201
- [System.Runtime.InteropServices.Marshal]::StructureToPtr($pSec, $ptr, $true)
202
- $hReadOut = [IntPtr]::Zero
203
- $hWriteOut = [IntPtr]::Zero
204
- $success = [Chef.Kernel32]::CreatePipe([ref] $hReadOut, [ref] $hWriteOut, $ptr, 0)
205
- if (-Not $success) {
206
- $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
207
- throw "Unable to create output pipe. Error code $reason."
208
- }
209
- $success = [Chef.Kernel32]::SetHandleInformation($hReadOut, [Chef.HandleFlags]::HANDLE_FLAG_INHERIT, 0)
210
- if (-Not $success) {
211
- $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
212
- throw "Unable to set output pipe handle information. Error code $reason."
213
- }
214
-
215
- $si.cb = [System.Runtime.InteropServices.Marshal]::SizeOf($si)
216
- $si.wShowWindow = [Chef.ShowWindow]::SW_SHOW
217
- $si.dwFlags = [Chef.STARTF]::STARTF_USESTDHANDLES
218
- $si.hStdOutput = $hWriteOut
219
- $si.hStdError = $hWriteOut
220
- $si.hStdInput = [Chef.Kernel32]::GetStdHandle([Chef.StandardHandle]::Input)
221
-
222
- $success = [Chef.Kernel32]::CreateProcess(
223
- $AppPath,
224
- $ArgumentString,
225
- [ref] $pSec,
226
- [ref] $tSec,
227
- $true,
228
- [Chef.CreationFlags]::NONE,
229
- [IntPtr]::Zero,
230
- $pwd,
231
- [ref] $si,
232
- [ref] $pi
233
- )
234
- if (-Not $success) {
235
- $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
236
- throw "Unable to create process [$ArgumentString]. Error code $reason."
237
- }
238
-
239
- $buffer = New-Object byte[] 1024
240
-
241
- # Initialize reference variables
242
- $bytesRead = 0
243
- $bytesAvailable = 0
244
- $bytesLeftThisMsg = 0
245
- $global:LASTEXITCODE = [Chef.Kernel32]::STILL_ACTIVE
246
-
247
- $isActive = $true
248
- while ($isActive) {
249
- $success = [Chef.Kernel32]::GetExitCodeProcess($pi.hProcess, [ref] $global:LASTEXITCODE)
250
- if (-Not $success) {
251
- $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
252
- throw "Process exit code unavailable. Error code $reason."
253
- }
254
-
255
- $success = [Chef.Kernel32]::PeekNamedPipe(
256
- $hReadOut,
257
- $null,
258
- $buffer.Length,
259
- [ref] $bytesRead,
260
- [ref] $bytesAvailable,
261
- [ref] $bytesLeftThisMsg
262
- )
263
- if (-Not $success) {
264
- $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
265
- throw "Output pipe unavailable for peeking. Error code $reason."
266
- }
267
-
268
- if ($bytesRead -gt 0) {
269
- while ([Chef.Kernel32]::ReadFile($hReadOut, $buffer, $buffer.Length, [ref] $bytesRead, 0)) {
270
- $output = [Text.Encoding]::UTF8.GetString($buffer, 0, $bytesRead)
271
- if ($output) {
272
- $output
273
- }
274
- if ($bytesRead -lt $buffer.Length) {
275
- # Partial buffer indicating the end of stream, break out of ReadFile loop
276
- # ReadFile will block until:
277
- # The number of bytes requested is read.
278
- # A write operation completes on the write end of the pipe.
279
- # An asynchronous handle is being used and the read is occurring asynchronously.
280
- # An error occurs.
281
- break
282
- }
283
- }
284
- } else {
285
- # For some reason, you can't read from the read-end of the read-pipe before the write end has started
286
- # to write. Otherwise the process just blocks forever and never returns from the read. So we peek
287
- # at the pipe until there is something. But don't peek too eagerly. This is stupid stupid stupid.
288
- # There must be a way to do this without having to peek at a pipe first but I have not found it.
289
- #
290
- # Note to the future intrepid soul who wants to fix this:
291
- # 0) This is related to unreasonable CPU usage by the wrapper PS script on a 1 VCPU VM (either Hyper-V
292
- # or VirtualBox) running a consumer Windows SKU (Windows 10 for example...). Test it there.
293
- # 1) Maybe this entire script is unnecessary and the bugs mentioned below have been fixed or don't need
294
- # to be supported.
295
- # 2) The server and consumer windows schedulers have different defaults. I had a hard time reproducing
296
- # any issue on a win 2008 on win 2012 server default setup. See the "foreground application scheduler
297
- # priority" setting to see if it's relevant.
298
- # 3) This entire endeavor is silly anyway - why are we reimplementing process forking all over? Maybe try
299
- # to get the folks above to accept patches instead of extending this crazy script.
300
- Start-Sleep -s 1
301
- # Start-Sleep -m 100
302
- }
303
-
304
- if ($global:LASTEXITCODE -ne [Chef.Kernel32]::STILL_ACTIVE) {
305
- $isActive = $false
306
- }
307
- }
308
-
309
- # Cleanup handles
310
- $success = [Chef.Kernel32]::CloseHandle($pi.hProcess)
311
- if (-Not $success) {
312
- $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
313
- throw "Unable to release process handle. Error code $reason."
314
- }
315
- $success = [Chef.Kernel32]::CloseHandle($pi.hThread)
316
- if (-Not $success) {
317
- $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
318
- throw "Unable to release thread handle. Error code $reason."
319
- }
320
- $success = [Chef.Kernel32]::CloseHandle($hWriteOut)
321
- if (-Not $success) {
322
- $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
323
- throw "Unable to release output write handle. Error code $reason."
324
- }
325
- $success = [Chef.Kernel32]::CloseHandle($hReadOut)
326
- if (-Not $success) {
327
- $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
328
- throw "Unable to release output read handle. Error code $reason."
329
- }
330
- [System.Runtime.InteropServices.Marshal]::FreeHGlobal($ptr)
331
- }
332
-
333
- function Get-ScriptDirectory {
334
- if (!$PSScriptRoot) {
335
- $Invocation = (Get-Variable MyInvocation -Scope 1).Value
336
- $PSScriptRoot = Split-Path $Invocation.MyCommand.Path
337
- }
338
- $PSScriptRoot
339
- }
340
-
341
- function Run-RubyCommand($command, $argList) {
342
- # This method exists to take the given list of arguments and get it past ruby's command-line
343
- # interpreter unscathed and untampered. See https://github.com/ruby/ruby/blob/trunk/win32/win32.c#L1582
344
- # for a list of transformations that ruby attempts to perform with your command-line arguments
345
- # before passing it onto a script. The most important task is to defeat the globbing
346
- # and wild-card expansion that ruby performs. Note that ruby does not use MSVCRT's argc/argv
347
- # and deliberately reparses the raw command-line instead.
348
- #
349
- # To stop ruby from interpreting command-line arguments as globs, they need to be enclosed in '
350
- # Ruby doesn't allow any escape characters inside '. This unfortunately prevents us from sending
351
- # any strings which themselves contain '. Ruby does allow multi-fragment arguments though.
352
- # "foo bar"'baz qux'123"foo" is interpreted as 1 argument because there are no un-escaped
353
- # whitespace there. The argument would be interpreted as the string "foo barbaz qux123foo".
354
- # This lets us escape ' characters by exiting the ' quoted string, injecting a "'" fragment and
355
- # then resuming the ' quoted string again.
356
- #
357
- # In the process of defeating ruby, one must also defeat the helpfulness of powershell.
358
- # When arguments come into this method, the standard PS rules for interpreting cmdlet arguments
359
- # apply. When using & (call operator) and providing an array of arguments, powershell (verified
360
- # on PS 4.0 on Windows Server 2012R2) will not evaluate them but (contrary to documentation),
361
- # it will still marginally interpret them. The behaviour of PS 5.0 seems to be different but
362
- # ignore that for now. If any of the provided arguments has a space in it, powershell checks
363
- # the first and last character to ensure that they are " characters (and that's all it checks).
364
- # If they are not, it will blindly surround that argument with " characters. It won't do this
365
- # operation if no space is present, even if other special characters are present. If it notices
366
- # leading and trailing " characters, it won't actually check to see if there are other "
367
- # characters in the string. Since PS 5.0 changes this behavior, we could consider using the --%
368
- # "stop screwing up my arguments" operator, which is available since PS 3.0. When encountered
369
- # --% indicates that the rest of line is to be sent literally... except if the parser encounters
370
- # %FOO% cmd style environment variables. Because reasons. And there is no way to escape the
371
- # % character in *any* waym shape or form.
372
- # https://connect.microsoft.com/PowerShell/feedback/details/376207/executing-commands-which-require-quotes-and-variables-is-practically-impossible
373
- #
374
- # In case you think that you're either reading this incorrectly or that I'm full of shit, here
375
- # are some examples. These use EchoArgs.exe from the PowerShell Community Extensions package.
376
- # I have not included the argument parsing output from EchoArgs.exe to prevent confusing you with
377
- # more details about MSVCRT's parsing algorithm.
378
- #
379
- # $x = "foo '' bar `"baz`""
380
- # & EchoArgs @($x, $x)
381
- # Command line:
382
- # "C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe" "foo '' bar "baz"" "foo '' bar "baz""
383
- #
384
- # $x = "abc'123'nospace`"lulz`"!!!"
385
- # & EchoArgs @($x, $x)
386
- # Command line:
387
- # "C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe" abc'123'nospace"lulz"!!! abc'123'nospace"lulz"!!!
388
- #
389
- # $x = "`"`"Look ma! Tonnes of spaces! 'foo' 'bar'`"`""
390
- # & EchoArgs @($x, $x)
391
- # Command line:
392
- # "C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe" ""Look ma! Tonnes of spaces! 'foo' 'bar'"" ""Look ma! Tonnes of spaces! 'foo' 'bar'""
393
- #
394
- # Given all this, we can now device a strategy to work around all these immensely helpful, well
395
- # documented and useful tools by looking at each incoming argument, escaping any ' characters
396
- # with a '"'"' sequence, surrounding each argument with ' & joining them with a space separating
397
- # them.
398
- # There is another bug (https://bugs.ruby-lang.org/issues/11142) that causes ruby to mangle any
399
- # "" two-character double quote sequence but since we always emit our strings inside ' except for
400
- # ' characters, this should be ok. Just remember that an argument '' should get translated to
401
- # ''"'"''"'"'' on the command line. If those intervening empty ''s are not present, the presence
402
- # of "" will cause ruby to mangle that argument.
403
- $transformedList = $argList | foreach { "'" + ( $_ -replace "'","'`"'`"'" ) + "'" }
404
- $fortifiedArgString = $transformedList -join ' '
405
-
406
- # Use the correct embedded ruby path. We'll be deployed at a path that looks like
407
- # [C:\opscode or some other prefix]\chef\modules\chef
408
- $ruby = Join-Path (Get-ScriptDirectory) "..\..\embedded\bin\ruby.exe"
409
- $commandPath = Join-Path (Get-ScriptDirectory) "..\..\bin\$command"
410
-
411
- Run-ExecutableAndWait $ruby """$ruby"" '$commandPath' $fortifiedArgString"
412
- }
413
-
414
-
415
- function chef-apply {
416
- Run-RubyCommand 'chef-apply' $args
417
- }
418
-
419
- function chef-client {
420
- Run-RubyCommand 'chef-client' $args
421
- }
422
-
423
- function chef-service-manager {
424
- Run-RubyCommand 'chef-service-manager' $args
425
- }
426
-
427
- function chef-shell {
428
- Run-RubyCommand 'chef-shell' $args
429
- }
430
-
431
- function chef-solo {
432
- Run-RubyCommand 'chef-solo' $args
433
- }
434
-
435
- function chef-windows-service {
436
- Run-RubyCommand 'chef-windows-service' $args
437
- }
438
-
439
- function knife {
440
- Run-RubyCommand 'knife' $args
441
- }
442
-
443
- Export-ModuleMember -function chef-apply
444
- Export-ModuleMember -function chef-client
445
- Export-ModuleMember -function chef-service-manager
446
- Export-ModuleMember -function chef-shell
447
- Export-ModuleMember -function chef-solo
448
- Export-ModuleMember -function chef-windows-service
449
- Export-ModuleMember -function knife
450
-
451
- # To debug this module, uncomment the line below
452
- # Export-ModuleMember -function Run-RubyCommand
453
-
454
- # Then run the following to reload the module. Use puts_argv as a helpful debug executable.
455
- # Remove-Module chef
456
- # Import-Module chef
457
- # "puts ARGV" | Out-File C:\opscode\chef\bin\puts_args -Encoding ASCII
458
- # Copy-Item C:\opscode\chef\bin\ohai.bat C:\opscode\chef\bin\puts_args.bat
459
- # Run-RubyCommand puts_args 'Here' "are" some '"very interesting"' 'arguments[to]' "`"try out`""
1
+ 
2
+ function Load-Win32Bindings {
3
+ Add-Type -TypeDefinition @"
4
+ using System;
5
+ using System.Diagnostics;
6
+ using System.Runtime.InteropServices;
7
+
8
+ namespace Chef
9
+ {
10
+
11
+ [StructLayout(LayoutKind.Sequential)]
12
+ public struct PROCESS_INFORMATION
13
+ {
14
+ public IntPtr hProcess;
15
+ public IntPtr hThread;
16
+ public uint dwProcessId;
17
+ public uint dwThreadId;
18
+ }
19
+
20
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
21
+ public struct STARTUPINFO
22
+ {
23
+ public uint cb;
24
+ public string lpReserved;
25
+ public string lpDesktop;
26
+ public string lpTitle;
27
+ public uint dwX;
28
+ public uint dwY;
29
+ public uint dwXSize;
30
+ public uint dwYSize;
31
+ public uint dwXCountChars;
32
+ public uint dwYCountChars;
33
+ public uint dwFillAttribute;
34
+ public STARTF dwFlags;
35
+ public ShowWindow wShowWindow;
36
+ public short cbReserved2;
37
+ public IntPtr lpReserved2;
38
+ public IntPtr hStdInput;
39
+ public IntPtr hStdOutput;
40
+ public IntPtr hStdError;
41
+ }
42
+
43
+ [StructLayout(LayoutKind.Sequential)]
44
+ public struct SECURITY_ATTRIBUTES
45
+ {
46
+ public int length;
47
+ public IntPtr lpSecurityDescriptor;
48
+ public bool bInheritHandle;
49
+ }
50
+
51
+ [Flags]
52
+ public enum CreationFlags : int
53
+ {
54
+ NONE = 0,
55
+ DEBUG_PROCESS = 0x00000001,
56
+ DEBUG_ONLY_THIS_PROCESS = 0x00000002,
57
+ CREATE_SUSPENDED = 0x00000004,
58
+ DETACHED_PROCESS = 0x00000008,
59
+ CREATE_NEW_CONSOLE = 0x00000010,
60
+ CREATE_NEW_PROCESS_GROUP = 0x00000200,
61
+ CREATE_UNICODE_ENVIRONMENT = 0x00000400,
62
+ CREATE_SEPARATE_WOW_VDM = 0x00000800,
63
+ CREATE_SHARED_WOW_VDM = 0x00001000,
64
+ CREATE_PROTECTED_PROCESS = 0x00040000,
65
+ EXTENDED_STARTUPINFO_PRESENT = 0x00080000,
66
+ CREATE_BREAKAWAY_FROM_JOB = 0x01000000,
67
+ CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000,
68
+ CREATE_DEFAULT_ERROR_MODE = 0x04000000,
69
+ CREATE_NO_WINDOW = 0x08000000,
70
+ }
71
+
72
+ [Flags]
73
+ public enum STARTF : uint
74
+ {
75
+ STARTF_USESHOWWINDOW = 0x00000001,
76
+ STARTF_USESIZE = 0x00000002,
77
+ STARTF_USEPOSITION = 0x00000004,
78
+ STARTF_USECOUNTCHARS = 0x00000008,
79
+ STARTF_USEFILLATTRIBUTE = 0x00000010,
80
+ STARTF_RUNFULLSCREEN = 0x00000020, // ignored for non-x86 platforms
81
+ STARTF_FORCEONFEEDBACK = 0x00000040,
82
+ STARTF_FORCEOFFFEEDBACK = 0x00000080,
83
+ STARTF_USESTDHANDLES = 0x00000100,
84
+ }
85
+
86
+ public enum ShowWindow : short
87
+ {
88
+ SW_HIDE = 0,
89
+ SW_SHOWNORMAL = 1,
90
+ SW_NORMAL = 1,
91
+ SW_SHOWMINIMIZED = 2,
92
+ SW_SHOWMAXIMIZED = 3,
93
+ SW_MAXIMIZE = 3,
94
+ SW_SHOWNOACTIVATE = 4,
95
+ SW_SHOW = 5,
96
+ SW_MINIMIZE = 6,
97
+ SW_SHOWMINNOACTIVE = 7,
98
+ SW_SHOWNA = 8,
99
+ SW_RESTORE = 9,
100
+ SW_SHOWDEFAULT = 10,
101
+ SW_FORCEMINIMIZE = 11,
102
+ SW_MAX = 11
103
+ }
104
+
105
+ public enum StandardHandle : int
106
+ {
107
+ Input = -10,
108
+ Output = -11,
109
+ Error = -12
110
+ }
111
+
112
+ public enum HandleFlags : int
113
+ {
114
+ HANDLE_FLAG_INHERIT = 0x00000001,
115
+ HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x00000002
116
+ }
117
+
118
+ public static class Kernel32
119
+ {
120
+ [DllImport("kernel32.dll", SetLastError=true)]
121
+ [return: MarshalAs(UnmanagedType.Bool)]
122
+ public static extern bool CreateProcess(
123
+ string lpApplicationName,
124
+ string lpCommandLine,
125
+ ref SECURITY_ATTRIBUTES lpProcessAttributes,
126
+ ref SECURITY_ATTRIBUTES lpThreadAttributes,
127
+ [MarshalAs(UnmanagedType.Bool)] bool bInheritHandles,
128
+ CreationFlags dwCreationFlags,
129
+ IntPtr lpEnvironment,
130
+ string lpCurrentDirectory,
131
+ ref STARTUPINFO lpStartupInfo,
132
+ out PROCESS_INFORMATION lpProcessInformation);
133
+
134
+ [DllImport("kernel32.dll", SetLastError=true)]
135
+ public static extern IntPtr GetStdHandle(
136
+ StandardHandle nStdHandle);
137
+
138
+ [DllImport("kernel32.dll")]
139
+ public static extern bool SetHandleInformation(
140
+ IntPtr hObject,
141
+ int dwMask,
142
+ uint dwFlags);
143
+
144
+ [DllImport("kernel32", SetLastError=true)]
145
+ [return: MarshalAs(UnmanagedType.Bool)]
146
+ public static extern bool CloseHandle(
147
+ IntPtr hObject);
148
+
149
+ [DllImport("kernel32", SetLastError=true)]
150
+ [return: MarshalAs(UnmanagedType.Bool)]
151
+ public static extern bool GetExitCodeProcess(
152
+ IntPtr hProcess,
153
+ out int lpExitCode);
154
+
155
+ [DllImport("kernel32.dll", SetLastError = true)]
156
+ public static extern bool CreatePipe(
157
+ out IntPtr phReadPipe,
158
+ out IntPtr phWritePipe,
159
+ IntPtr lpPipeAttributes,
160
+ uint nSize);
161
+
162
+ [DllImport("kernel32.dll", SetLastError = true)]
163
+ public static extern bool ReadFile(
164
+ IntPtr hFile,
165
+ [Out] byte[] lpBuffer,
166
+ uint nNumberOfBytesToRead,
167
+ ref int lpNumberOfBytesRead,
168
+ IntPtr lpOverlapped);
169
+
170
+ [DllImport("kernel32.dll", SetLastError = true)]
171
+ public static extern bool PeekNamedPipe(
172
+ IntPtr handle,
173
+ byte[] buffer,
174
+ uint nBufferSize,
175
+ ref uint bytesRead,
176
+ ref uint bytesAvail,
177
+ ref uint BytesLeftThisMessage);
178
+
179
+ public const int STILL_ACTIVE = 259;
180
+ }
181
+ }
182
+ "@
183
+ }
184
+
185
+ function Run-ExecutableAndWait($AppPath, $ArgumentString) {
186
+ # Use the Win32 API to create a new process and wait for it to terminate.
187
+ $null = Load-Win32Bindings
188
+
189
+ $si = New-Object Chef.STARTUPINFO
190
+ $pi = New-Object Chef.PROCESS_INFORMATION
191
+
192
+ $pSec = New-Object Chef.SECURITY_ATTRIBUTES
193
+ $pSec.Length = [System.Runtime.InteropServices.Marshal]::SizeOf($pSec)
194
+ $pSec.bInheritHandle = $true
195
+ $tSec = New-Object Chef.SECURITY_ATTRIBUTES
196
+ $tSec.Length = [System.Runtime.InteropServices.Marshal]::SizeOf($tSec)
197
+ $tSec.bInheritHandle = $true
198
+
199
+ # Create pipe for process stdout
200
+ $ptr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal([System.Runtime.InteropServices.Marshal]::SizeOf($si))
201
+ [System.Runtime.InteropServices.Marshal]::StructureToPtr($pSec, $ptr, $true)
202
+ $hReadOut = [IntPtr]::Zero
203
+ $hWriteOut = [IntPtr]::Zero
204
+ $success = [Chef.Kernel32]::CreatePipe([ref] $hReadOut, [ref] $hWriteOut, $ptr, 0)
205
+ if (-Not $success) {
206
+ $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
207
+ throw "Unable to create output pipe. Error code $reason."
208
+ }
209
+ $success = [Chef.Kernel32]::SetHandleInformation($hReadOut, [Chef.HandleFlags]::HANDLE_FLAG_INHERIT, 0)
210
+ if (-Not $success) {
211
+ $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
212
+ throw "Unable to set output pipe handle information. Error code $reason."
213
+ }
214
+
215
+ $si.cb = [System.Runtime.InteropServices.Marshal]::SizeOf($si)
216
+ $si.wShowWindow = [Chef.ShowWindow]::SW_SHOW
217
+ $si.dwFlags = [Chef.STARTF]::STARTF_USESTDHANDLES
218
+ $si.hStdOutput = $hWriteOut
219
+ $si.hStdError = $hWriteOut
220
+ $si.hStdInput = [Chef.Kernel32]::GetStdHandle([Chef.StandardHandle]::Input)
221
+
222
+ $success = [Chef.Kernel32]::CreateProcess(
223
+ $AppPath,
224
+ $ArgumentString,
225
+ [ref] $pSec,
226
+ [ref] $tSec,
227
+ $true,
228
+ [Chef.CreationFlags]::NONE,
229
+ [IntPtr]::Zero,
230
+ $pwd,
231
+ [ref] $si,
232
+ [ref] $pi
233
+ )
234
+ if (-Not $success) {
235
+ $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
236
+ throw "Unable to create process [$ArgumentString]. Error code $reason."
237
+ }
238
+
239
+ $buffer = New-Object byte[] 1024
240
+
241
+ # Initialize reference variables
242
+ $bytesRead = 0
243
+ $bytesAvailable = 0
244
+ $bytesLeftThisMsg = 0
245
+ $global:LASTEXITCODE = [Chef.Kernel32]::STILL_ACTIVE
246
+
247
+ $isActive = $true
248
+ while ($isActive) {
249
+ $success = [Chef.Kernel32]::GetExitCodeProcess($pi.hProcess, [ref] $global:LASTEXITCODE)
250
+ if (-Not $success) {
251
+ $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
252
+ throw "Process exit code unavailable. Error code $reason."
253
+ }
254
+
255
+ $success = [Chef.Kernel32]::PeekNamedPipe(
256
+ $hReadOut,
257
+ $null,
258
+ $buffer.Length,
259
+ [ref] $bytesRead,
260
+ [ref] $bytesAvailable,
261
+ [ref] $bytesLeftThisMsg
262
+ )
263
+ if (-Not $success) {
264
+ $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
265
+ throw "Output pipe unavailable for peeking. Error code $reason."
266
+ }
267
+
268
+ if ($bytesRead -gt 0) {
269
+ while ([Chef.Kernel32]::ReadFile($hReadOut, $buffer, $buffer.Length, [ref] $bytesRead, 0)) {
270
+ $output = [Text.Encoding]::UTF8.GetString($buffer, 0, $bytesRead)
271
+ if ($output) {
272
+ $output
273
+ }
274
+ if ($bytesRead -lt $buffer.Length) {
275
+ # Partial buffer indicating the end of stream, break out of ReadFile loop
276
+ # ReadFile will block until:
277
+ # The number of bytes requested is read.
278
+ # A write operation completes on the write end of the pipe.
279
+ # An asynchronous handle is being used and the read is occurring asynchronously.
280
+ # An error occurs.
281
+ break
282
+ }
283
+ }
284
+ } else {
285
+ # For some reason, you can't read from the read-end of the read-pipe before the write end has started
286
+ # to write. Otherwise the process just blocks forever and never returns from the read. So we peek
287
+ # at the pipe until there is something. But don't peek too eagerly. This is stupid stupid stupid.
288
+ # There must be a way to do this without having to peek at a pipe first but I have not found it.
289
+ #
290
+ # Note to the future intrepid soul who wants to fix this:
291
+ # 0) This is related to unreasonable CPU usage by the wrapper PS script on a 1 VCPU VM (either Hyper-V
292
+ # or VirtualBox) running a consumer Windows SKU (Windows 10 for example...). Test it there.
293
+ # 1) Maybe this entire script is unnecessary and the bugs mentioned below have been fixed or don't need
294
+ # to be supported.
295
+ # 2) The server and consumer windows schedulers have different defaults. I had a hard time reproducing
296
+ # any issue on a win 2008 on win 2012 server default setup. See the "foreground application scheduler
297
+ # priority" setting to see if it's relevant.
298
+ # 3) This entire endeavor is silly anyway - why are we reimplementing process forking all over? Maybe try
299
+ # to get the folks above to accept patches instead of extending this crazy script.
300
+ Start-Sleep -s 1
301
+ # Start-Sleep -m 100
302
+ }
303
+
304
+ if ($global:LASTEXITCODE -ne [Chef.Kernel32]::STILL_ACTIVE) {
305
+ $isActive = $false
306
+ }
307
+ }
308
+
309
+ # Cleanup handles
310
+ $success = [Chef.Kernel32]::CloseHandle($pi.hProcess)
311
+ if (-Not $success) {
312
+ $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
313
+ throw "Unable to release process handle. Error code $reason."
314
+ }
315
+ $success = [Chef.Kernel32]::CloseHandle($pi.hThread)
316
+ if (-Not $success) {
317
+ $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
318
+ throw "Unable to release thread handle. Error code $reason."
319
+ }
320
+ $success = [Chef.Kernel32]::CloseHandle($hWriteOut)
321
+ if (-Not $success) {
322
+ $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
323
+ throw "Unable to release output write handle. Error code $reason."
324
+ }
325
+ $success = [Chef.Kernel32]::CloseHandle($hReadOut)
326
+ if (-Not $success) {
327
+ $reason = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
328
+ throw "Unable to release output read handle. Error code $reason."
329
+ }
330
+ [System.Runtime.InteropServices.Marshal]::FreeHGlobal($ptr)
331
+ }
332
+
333
+ function Get-ScriptDirectory {
334
+ if (!$PSScriptRoot) {
335
+ $Invocation = (Get-Variable MyInvocation -Scope 1).Value
336
+ $PSScriptRoot = Split-Path $Invocation.MyCommand.Path
337
+ }
338
+ $PSScriptRoot
339
+ }
340
+
341
+ function Run-RubyCommand($command, $argList) {
342
+ # This method exists to take the given list of arguments and get it past ruby's command-line
343
+ # interpreter unscathed and untampered. See https://github.com/ruby/ruby/blob/trunk/win32/win32.c#L1582
344
+ # for a list of transformations that ruby attempts to perform with your command-line arguments
345
+ # before passing it onto a script. The most important task is to defeat the globbing
346
+ # and wild-card expansion that ruby performs. Note that ruby does not use MSVCRT's argc/argv
347
+ # and deliberately reparses the raw command-line instead.
348
+ #
349
+ # To stop ruby from interpreting command-line arguments as globs, they need to be enclosed in '
350
+ # Ruby doesn't allow any escape characters inside '. This unfortunately prevents us from sending
351
+ # any strings which themselves contain '. Ruby does allow multi-fragment arguments though.
352
+ # "foo bar"'baz qux'123"foo" is interpreted as 1 argument because there are no un-escaped
353
+ # whitespace there. The argument would be interpreted as the string "foo barbaz qux123foo".
354
+ # This lets us escape ' characters by exiting the ' quoted string, injecting a "'" fragment and
355
+ # then resuming the ' quoted string again.
356
+ #
357
+ # In the process of defeating ruby, one must also defeat the helpfulness of powershell.
358
+ # When arguments come into this method, the standard PS rules for interpreting cmdlet arguments
359
+ # apply. When using & (call operator) and providing an array of arguments, powershell (verified
360
+ # on PS 4.0 on Windows Server 2012R2) will not evaluate them but (contrary to documentation),
361
+ # it will still marginally interpret them. The behavior of PS 5.0 seems to be different but
362
+ # ignore that for now. If any of the provided arguments has a space in it, powershell checks
363
+ # the first and last character to ensure that they are " characters (and that's all it checks).
364
+ # If they are not, it will blindly surround that argument with " characters. It won't do this
365
+ # operation if no space is present, even if other special characters are present. If it notices
366
+ # leading and trailing " characters, it won't actually check to see if there are other "
367
+ # characters in the string. Since PS 5.0 changes this behavior, we could consider using the --%
368
+ # "stop screwing up my arguments" operator, which is available since PS 3.0. When encountered
369
+ # --% indicates that the rest of line is to be sent literally... except if the parser encounters
370
+ # %FOO% cmd style environment variables. Because reasons. And there is no way to escape the
371
+ # % character in *any* waym shape or form.
372
+ # https://connect.microsoft.com/PowerShell/feedback/details/376207/executing-commands-which-require-quotes-and-variables-is-practically-impossible
373
+ #
374
+ # In case you think that you're either reading this incorrectly or that I'm full of shit, here
375
+ # are some examples. These use EchoArgs.exe from the PowerShell Community Extensions package.
376
+ # I have not included the argument parsing output from EchoArgs.exe to prevent confusing you with
377
+ # more details about MSVCRT's parsing algorithm.
378
+ #
379
+ # $x = "foo '' bar `"baz`""
380
+ # & EchoArgs @($x, $x)
381
+ # Command line:
382
+ # "C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe" "foo '' bar "baz"" "foo '' bar "baz""
383
+ #
384
+ # $x = "abc'123'nospace`"lol`"!!!"
385
+ # & EchoArgs @($x, $x)
386
+ # Command line:
387
+ # "C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe" abc'123'nospace"lol"!!! abc'123'nospace"lol"!!!
388
+ #
389
+ # $x = "`"`"Look ma! Tonnes of spaces! 'foo' 'bar'`"`""
390
+ # & EchoArgs @($x, $x)
391
+ # Command line:
392
+ # "C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe" ""Look ma! Tonnes of spaces! 'foo' 'bar'"" ""Look ma! Tonnes of spaces! 'foo' 'bar'""
393
+ #
394
+ # Given all this, we can now device a strategy to work around all these immensely helpful, well
395
+ # documented and useful tools by looking at each incoming argument, escaping any ' characters
396
+ # with a '"'"' sequence, surrounding each argument with ' & joining them with a space separating
397
+ # them.
398
+ # There is another bug (https://bugs.ruby-lang.org/issues/11142) that causes ruby to mangle any
399
+ # "" two-character double quote sequence but since we always emit our strings inside ' except for
400
+ # ' characters, this should be ok. Just remember that an argument '' should get translated to
401
+ # ''"'"''"'"'' on the command line. If those intervening empty ''s are not present, the presence
402
+ # of "" will cause ruby to mangle that argument.
403
+ $transformedList = $argList | foreach { "'" + ( $_ -replace "'","'`"'`"'" ) + "'" }
404
+ $fortifiedArgString = $transformedList -join ' '
405
+
406
+ # Use the correct embedded ruby path. We'll be deployed at a path that looks like
407
+ # [C:\opscode or some other prefix]\chef\modules\chef
408
+ $ruby = Join-Path (Get-ScriptDirectory) "..\..\embedded\bin\ruby.exe"
409
+ $commandPath = Join-Path (Get-ScriptDirectory) "..\..\bin\$command"
410
+
411
+ Run-ExecutableAndWait $ruby """$ruby"" '$commandPath' $fortifiedArgString"
412
+ }
413
+
414
+
415
+ function chef-apply {
416
+ Run-RubyCommand 'chef-apply' $args
417
+ }
418
+
419
+ function chef-client {
420
+ Run-RubyCommand 'chef-client' $args
421
+ }
422
+
423
+ function chef-service-manager {
424
+ Run-RubyCommand 'chef-service-manager' $args
425
+ }
426
+
427
+ function chef-shell {
428
+ Run-RubyCommand 'chef-shell' $args
429
+ }
430
+
431
+ function chef-solo {
432
+ Run-RubyCommand 'chef-solo' $args
433
+ }
434
+
435
+ function chef-windows-service {
436
+ Run-RubyCommand 'chef-windows-service' $args
437
+ }
438
+
439
+ function knife {
440
+ Run-RubyCommand 'knife' $args
441
+ }
442
+
443
+ Export-ModuleMember -function chef-apply
444
+ Export-ModuleMember -function chef-client
445
+ Export-ModuleMember -function chef-service-manager
446
+ Export-ModuleMember -function chef-shell
447
+ Export-ModuleMember -function chef-solo
448
+ Export-ModuleMember -function chef-windows-service
449
+ Export-ModuleMember -function knife
450
+
451
+ # To debug this module, uncomment the line below
452
+ # Export-ModuleMember -function Run-RubyCommand
453
+
454
+ # Then run the following to reload the module. Use puts_argv as a helpful debug executable.
455
+ # Remove-Module chef
456
+ # Import-Module chef
457
+ # "puts ARGV" | Out-File C:\opscode\chef\bin\puts_args -Encoding ASCII
458
+ # Copy-Item C:\opscode\chef\bin\ohai.bat C:\opscode\chef\bin\puts_args.bat
459
+ # Run-RubyCommand puts_args 'Here' "are" some '"very interesting"' 'arguments[to]' "`"try out`""