chef 12.19.36 → 14.14.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1719) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +29 -52
  3. data/README.md +98 -167
  4. data/Rakefile +16 -48
  5. data/bin/chef-apply +0 -1
  6. data/bin/chef-client +1 -2
  7. data/{lib/chef/resource/timestamped_deploy.rb → bin/chef-resource-inspector} +11 -11
  8. data/bin/chef-shell +2 -5
  9. data/bin/chef-solo +1 -2
  10. data/bin/knife +1 -2
  11. data/chef-universal-mingw32.gemspec +6 -5
  12. data/chef.gemspec +14 -13
  13. data/lib/chef.rb +1 -2
  14. data/lib/chef/api_client.rb +21 -24
  15. data/lib/chef/api_client/registration.rb +16 -8
  16. data/lib/chef/api_client_v1.rb +32 -29
  17. data/lib/chef/application.rb +86 -66
  18. data/lib/chef/application/apply.rb +67 -60
  19. data/lib/chef/application/client.rb +228 -197
  20. data/lib/chef/application/exit_code.rb +11 -80
  21. data/lib/chef/application/knife.rb +81 -76
  22. data/lib/chef/application/solo.rb +139 -137
  23. data/lib/chef/application/windows_service.rb +32 -32
  24. data/lib/chef/application/windows_service_manager.rb +39 -39
  25. data/lib/chef/audit/audit_event_proxy.rb +7 -7
  26. data/lib/chef/audit/audit_reporter.rb +15 -15
  27. data/lib/chef/audit/control_group_data.rb +25 -19
  28. data/lib/chef/audit/runner.rb +3 -3
  29. data/lib/chef/blacklist.rb +81 -0
  30. data/lib/chef/chef_class.rb +17 -9
  31. data/lib/chef/chef_fs/chef_fs_data_store.rb +12 -12
  32. data/lib/chef/chef_fs/command_line.rb +20 -21
  33. data/lib/chef/chef_fs/config.rb +3 -3
  34. data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +1 -1
  35. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +5 -0
  36. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +11 -9
  37. data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +1 -1
  38. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +1 -1
  39. data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +1 -1
  40. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +2 -2
  41. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  42. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +3 -3
  43. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
  44. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +16 -29
  45. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  46. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +6 -2
  47. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +1 -1
  48. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +2 -2
  49. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
  50. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +2 -2
  51. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +2 -2
  52. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +5 -5
  53. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +2 -2
  54. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +3 -3
  55. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +17 -8
  56. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
  57. data/lib/chef/chef_fs/file_system/multiplexed_dir.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/base_file.rb +2 -2
  60. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +4 -5
  61. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +3 -3
  62. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +4 -3
  63. data/lib/chef/chef_fs/file_system/repository/directory.rb +3 -3
  64. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +3 -3
  65. data/lib/chef/chef_fs/file_system_cache.rb +1 -1
  66. data/lib/chef/chef_fs/knife.rb +6 -6
  67. data/lib/chef/chef_fs/parallelizer.rb +1 -1
  68. data/lib/chef/chef_fs/path_utils.rb +2 -2
  69. data/lib/chef/client.rb +113 -51
  70. data/lib/chef/config.rb +1 -2
  71. data/lib/chef/config_fetcher.rb +6 -6
  72. data/lib/chef/constants.rb +1 -1
  73. data/lib/chef/cookbook/chefignore.rb +5 -1
  74. data/lib/chef/cookbook/cookbook_collection.rb +4 -4
  75. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -85
  76. data/lib/chef/cookbook/file_system_file_vendor.rb +2 -2
  77. data/lib/chef/cookbook/gem_installer.rb +28 -11
  78. data/lib/chef/cookbook/manifest_v0.rb +73 -0
  79. data/lib/chef/cookbook/manifest_v2.rb +45 -0
  80. data/lib/chef/cookbook/metadata.rb +73 -181
  81. data/lib/chef/cookbook/remote_file_vendor.rb +7 -7
  82. data/lib/chef/cookbook/synchronizer.rb +42 -28
  83. data/lib/chef/cookbook/syntax_check.rb +4 -4
  84. data/lib/chef/cookbook_loader.rb +15 -7
  85. data/lib/chef/cookbook_manifest.rb +107 -69
  86. data/lib/chef/cookbook_site_streaming_uploader.rb +14 -16
  87. data/lib/chef/cookbook_uploader.rb +8 -9
  88. data/lib/chef/cookbook_version.rb +75 -168
  89. data/lib/chef/data_bag.rb +13 -15
  90. data/lib/chef/data_bag_item.rb +11 -20
  91. data/lib/chef/data_collector.rb +113 -37
  92. data/lib/chef/data_collector/messages.rb +4 -2
  93. data/lib/chef/data_collector/messages/helpers.rb +2 -4
  94. data/lib/chef/data_collector/resource_report.rb +36 -8
  95. data/lib/chef/decorator/unchain.rb +0 -16
  96. data/lib/chef/deprecated.rb +143 -145
  97. data/lib/chef/deprecation/warnings.rb +3 -1
  98. data/lib/chef/dsl/audit.rb +1 -1
  99. data/lib/chef/dsl/data_query.rb +22 -8
  100. data/lib/chef/dsl/declare_resource.rb +40 -16
  101. data/lib/chef/dsl/definitions.rb +1 -1
  102. data/lib/chef/dsl/include_attribute.rb +3 -7
  103. data/lib/chef/dsl/include_recipe.rb +1 -5
  104. data/lib/chef/dsl/platform_introspection.rb +14 -13
  105. data/lib/chef/dsl/reboot_pending.rb +2 -9
  106. data/lib/chef/dsl/recipe.rb +2 -21
  107. data/lib/chef/dsl/resources.rb +3 -10
  108. data/lib/chef/dsl/universal.rb +11 -1
  109. data/lib/chef/encrypted_data_bag_item.rb +6 -4
  110. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +1 -1
  111. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  112. data/lib/chef/environment.rb +17 -22
  113. data/lib/chef/event_dispatch/base.rb +18 -2
  114. data/lib/chef/event_dispatch/dsl.rb +2 -2
  115. data/lib/chef/event_loggers/windows_eventlog.rb +21 -21
  116. data/lib/chef/exceptions.rb +25 -14
  117. data/lib/chef/file_access_control/unix.rb +14 -14
  118. data/lib/chef/file_access_control/windows.rb +5 -3
  119. data/lib/chef/file_cache.rb +18 -16
  120. data/lib/chef/file_content_management/content_base.rb +3 -1
  121. data/lib/chef/file_content_management/deploy/cp.rb +2 -2
  122. data/lib/chef/file_content_management/deploy/mv_unix.rb +9 -8
  123. data/lib/chef/file_content_management/deploy/mv_windows.rb +1 -1
  124. data/lib/chef/file_content_management/tempfile.rb +4 -4
  125. data/lib/chef/formatters/base.rb +10 -11
  126. data/lib/chef/formatters/doc.rb +15 -19
  127. data/lib/chef/formatters/error_description.rb +18 -1
  128. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +51 -51
  129. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +3 -3
  130. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +11 -11
  131. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +1 -1
  132. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +14 -14
  133. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +40 -40
  134. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +1 -1
  135. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +17 -17
  136. data/lib/chef/formatters/indentable_output_stream.rb +17 -5
  137. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +6 -2
  138. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +5 -5
  139. data/lib/chef/handler.rb +3 -5
  140. data/lib/chef/handler/json_file.rb +2 -3
  141. data/lib/chef/http.rb +75 -25
  142. data/lib/chef/http/api_versions.rb +7 -1
  143. data/lib/chef/http/auth_credentials.rb +7 -5
  144. data/lib/chef/http/authenticator.rb +27 -15
  145. data/lib/chef/http/basic_client.rb +16 -17
  146. data/lib/chef/http/cookie_manager.rb +1 -1
  147. data/lib/chef/http/decompressor.rb +6 -6
  148. data/lib/chef/http/http_request.rb +13 -10
  149. data/lib/chef/http/json_input.rb +1 -1
  150. data/lib/chef/http/json_output.rb +5 -2
  151. data/lib/chef/http/json_to_model_output.rb +1 -1
  152. data/lib/chef/http/socketless_chef_zero_client.rb +4 -3
  153. data/lib/chef/http/validate_content_length.rb +5 -5
  154. data/lib/chef/json_compat.rb +3 -95
  155. data/lib/chef/key.rb +17 -20
  156. data/lib/chef/knife.rb +57 -40
  157. data/lib/chef/knife/bootstrap.rb +174 -138
  158. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  159. data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
  160. data/lib/chef/knife/bootstrap/templates/chef-full.erb +15 -8
  161. data/lib/chef/knife/client_bulk_delete.rb +3 -4
  162. data/lib/chef/knife/client_create.rb +17 -18
  163. data/lib/chef/knife/client_delete.rb +4 -5
  164. data/lib/chef/knife/client_edit.rb +2 -3
  165. data/lib/chef/knife/client_key_create.rb +3 -0
  166. data/lib/chef/knife/client_key_delete.rb +1 -0
  167. data/lib/chef/knife/client_key_edit.rb +1 -0
  168. data/lib/chef/knife/client_key_list.rb +1 -0
  169. data/lib/chef/knife/client_key_show.rb +1 -0
  170. data/lib/chef/knife/client_list.rb +3 -4
  171. data/lib/chef/knife/client_reregister.rb +4 -5
  172. data/lib/chef/knife/client_show.rb +0 -1
  173. data/lib/chef/knife/config_get.rb +126 -0
  174. data/lib/chef/{provider/breakpoint.rb → knife/config_get_profile.rb} +13 -14
  175. data/lib/chef/knife/config_list_profiles.rb +121 -0
  176. data/lib/chef/knife/config_use_profile.rb +50 -0
  177. data/lib/chef/knife/configure.rb +39 -63
  178. data/lib/chef/knife/configure_client.rb +1 -3
  179. data/lib/chef/knife/cookbook_bulk_delete.rb +1 -1
  180. data/lib/chef/knife/cookbook_create.rb +1 -434
  181. data/lib/chef/knife/cookbook_delete.rb +5 -5
  182. data/lib/chef/knife/cookbook_download.rb +16 -17
  183. data/lib/chef/knife/cookbook_list.rb +6 -6
  184. data/lib/chef/knife/cookbook_metadata.rb +10 -11
  185. data/lib/chef/knife/cookbook_metadata_from_file.rb +1 -2
  186. data/lib/chef/knife/cookbook_show.rb +23 -19
  187. data/lib/chef/knife/cookbook_site_download.rb +9 -85
  188. data/lib/chef/knife/cookbook_site_install.rb +8 -164
  189. data/lib/chef/knife/cookbook_site_list.rb +9 -34
  190. data/lib/chef/knife/cookbook_site_search.rb +10 -23
  191. data/lib/chef/knife/cookbook_site_share.rb +9 -138
  192. data/lib/chef/knife/cookbook_site_show.rb +10 -36
  193. data/lib/chef/knife/cookbook_site_unshare.rb +9 -31
  194. data/lib/chef/knife/cookbook_test.rb +11 -11
  195. data/lib/chef/knife/cookbook_upload.rb +39 -39
  196. data/lib/chef/knife/core/bootstrap_context.rb +23 -17
  197. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  198. data/lib/chef/knife/core/generic_presenter.rb +8 -9
  199. data/lib/chef/knife/core/hashed_command_loader.rb +2 -2
  200. data/lib/chef/knife/core/node_presenter.rb +38 -39
  201. data/lib/chef/knife/core/status_presenter.rb +45 -30
  202. data/lib/chef/knife/core/subcommand_loader.rb +5 -34
  203. data/lib/chef/knife/core/ui.rb +12 -4
  204. data/lib/chef/knife/data_bag_create.rb +6 -4
  205. data/lib/chef/knife/data_bag_edit.rb +1 -1
  206. data/lib/chef/knife/data_bag_from_file.rb +4 -5
  207. data/lib/chef/knife/data_bag_list.rb +3 -3
  208. data/lib/chef/knife/data_bag_secret_options.rb +14 -14
  209. data/lib/chef/knife/data_bag_show.rb +3 -3
  210. data/lib/chef/knife/delete.rb +31 -13
  211. data/lib/chef/knife/deps.rb +26 -10
  212. data/lib/chef/knife/diff.rb +30 -14
  213. data/lib/chef/knife/download.rb +39 -23
  214. data/lib/chef/knife/edit.rb +21 -5
  215. data/lib/chef/knife/environment_compare.rb +12 -12
  216. data/lib/chef/knife/environment_create.rb +3 -4
  217. data/lib/chef/knife/environment_delete.rb +0 -1
  218. data/lib/chef/knife/environment_edit.rb +0 -1
  219. data/lib/chef/knife/environment_from_file.rb +5 -3
  220. data/lib/chef/knife/environment_list.rb +3 -4
  221. data/lib/chef/knife/environment_show.rb +0 -1
  222. data/lib/chef/knife/exec.rb +10 -10
  223. data/lib/chef/knife/key_create.rb +4 -4
  224. data/lib/chef/knife/key_create_base.rb +12 -12
  225. data/lib/chef/knife/key_edit.rb +5 -5
  226. data/lib/chef/knife/key_edit_base.rb +15 -15
  227. data/lib/chef/knife/key_list.rb +3 -3
  228. data/lib/chef/knife/key_list_base.rb +9 -9
  229. data/lib/chef/knife/list.rb +37 -21
  230. data/lib/chef/knife/node_delete.rb +1 -1
  231. data/lib/chef/knife/node_edit.rb +4 -4
  232. data/lib/chef/knife/node_list.rb +3 -3
  233. data/lib/chef/knife/node_policy_set.rb +79 -0
  234. data/lib/chef/knife/node_run_list_add.rb +7 -7
  235. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  236. data/lib/chef/knife/node_show.rb +6 -6
  237. data/lib/chef/knife/osc_user_create.rb +13 -13
  238. data/lib/chef/knife/osc_user_edit.rb +2 -2
  239. data/lib/chef/knife/osc_user_list.rb +3 -3
  240. data/lib/chef/knife/osc_user_reregister.rb +4 -4
  241. data/lib/chef/knife/raw.rb +40 -19
  242. data/lib/chef/knife/role_create.rb +3 -3
  243. data/lib/chef/knife/role_env_run_list_add.rb +5 -4
  244. data/lib/chef/knife/role_env_run_list_clear.rb +1 -1
  245. data/lib/chef/knife/role_env_run_list_remove.rb +3 -3
  246. data/lib/chef/knife/role_env_run_list_replace.rb +2 -1
  247. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  248. data/lib/chef/knife/role_list.rb +3 -3
  249. data/lib/chef/knife/role_run_list_add.rb +5 -4
  250. data/lib/chef/knife/role_run_list_clear.rb +1 -1
  251. data/lib/chef/knife/role_run_list_remove.rb +3 -4
  252. data/lib/chef/knife/role_run_list_replace.rb +2 -1
  253. data/lib/chef/knife/role_run_list_set.rb +1 -2
  254. data/lib/chef/knife/role_show.rb +2 -3
  255. data/lib/chef/knife/search.rb +36 -43
  256. data/lib/chef/knife/serve.rb +22 -6
  257. data/lib/chef/knife/show.rb +20 -4
  258. data/lib/chef/knife/ssh.rb +173 -130
  259. data/lib/chef/knife/ssl_check.rb +34 -34
  260. data/lib/chef/knife/ssl_fetch.rb +6 -6
  261. data/lib/chef/knife/status.rb +12 -12
  262. data/lib/chef/knife/supermarket_download.rb +95 -6
  263. data/lib/chef/knife/supermarket_install.rb +166 -6
  264. data/lib/chef/knife/supermarket_list.rb +38 -6
  265. data/lib/chef/knife/supermarket_search.rb +27 -7
  266. data/lib/chef/knife/supermarket_share.rb +139 -6
  267. data/lib/chef/knife/supermarket_show.rb +40 -6
  268. data/lib/chef/knife/supermarket_unshare.rb +35 -7
  269. data/lib/chef/knife/upload.rb +42 -26
  270. data/lib/chef/knife/user_create.rb +28 -27
  271. data/lib/chef/knife/user_delete.rb +9 -8
  272. data/lib/chef/knife/user_edit.rb +11 -10
  273. data/lib/chef/knife/user_key_create.rb +1 -0
  274. data/lib/chef/knife/user_key_delete.rb +1 -0
  275. data/lib/chef/knife/user_key_edit.rb +1 -0
  276. data/lib/chef/knife/user_key_list.rb +1 -0
  277. data/lib/chef/knife/user_key_show.rb +1 -0
  278. data/lib/chef/knife/user_list.rb +3 -4
  279. data/lib/chef/knife/user_reregister.rb +13 -12
  280. data/lib/chef/knife/user_show.rb +9 -8
  281. data/lib/chef/knife/xargs.rb +55 -39
  282. data/lib/chef/local_mode.rb +1 -0
  283. data/lib/chef/log.rb +10 -8
  284. data/lib/chef/log/winevt.rb +21 -21
  285. data/lib/chef/mash.rb +6 -0
  286. data/lib/chef/mixin/api_version_request_handling.rb +8 -10
  287. data/lib/chef/mixin/create_path.rb +1 -1
  288. data/lib/chef/mixin/deep_merge.rb +2 -2
  289. data/lib/chef/mixin/deprecation.rb +16 -16
  290. data/lib/chef/mixin/from_file.rb +5 -0
  291. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  292. data/lib/chef/mixin/homebrew_user.rb +13 -2
  293. data/lib/chef/mixin/openssl_helper.rb +402 -0
  294. data/lib/chef/mixin/params_validate.rb +32 -23
  295. data/lib/chef/mixin/path_sanity.rb +17 -19
  296. data/lib/chef/mixin/powershell_exec.rb +105 -0
  297. data/lib/chef/mixin/powershell_out.rb +2 -2
  298. data/lib/chef/mixin/properties.rb +19 -2
  299. data/lib/chef/mixin/provides.rb +3 -2
  300. data/lib/chef/mixin/securable.rb +12 -16
  301. data/lib/chef/mixin/shell_out.rb +157 -110
  302. data/lib/chef/mixin/template.rb +15 -12
  303. data/lib/chef/mixin/user_context.rb +55 -0
  304. data/lib/chef/mixin/versioned_api.rb +16 -1
  305. data/lib/chef/mixin/which.rb +4 -2
  306. data/lib/chef/mixin/why_run.rb +6 -11
  307. data/lib/chef/mixin/wide_string.rb +5 -23
  308. data/lib/chef/mixin/windows_env_helper.rb +1 -1
  309. data/lib/chef/mixin/xml_escape.rb +3 -3
  310. data/lib/chef/mixins.rb +0 -1
  311. data/lib/chef/monkey_patches/net_http.rb +12 -8
  312. data/lib/chef/monologger.rb +2 -86
  313. data/lib/chef/node.rb +71 -60
  314. data/lib/chef/node/attribute.rb +277 -235
  315. data/lib/chef/node/attribute_collections.rb +4 -22
  316. data/lib/chef/node/immutable_collections.rb +54 -53
  317. data/lib/chef/node/mixin/deep_merge_cache.rb +1 -1
  318. data/lib/chef/node/mixin/immutablize_array.rb +117 -4
  319. data/lib/chef/node/mixin/immutablize_hash.rb +117 -6
  320. data/lib/chef/node_map.rb +142 -65
  321. data/lib/chef/null_logger.rb +7 -0
  322. data/lib/chef/org.rb +15 -18
  323. data/lib/chef/platform/provider_mapping.rb +1 -168
  324. data/lib/chef/platform/query_helpers.rb +0 -12
  325. data/lib/chef/platform/rebooter.rb +9 -5
  326. data/lib/chef/platform/service_helpers.rb +1 -1
  327. data/lib/chef/policy_builder/dynamic.rb +1 -1
  328. data/lib/chef/policy_builder/expand_node_object.rb +5 -31
  329. data/lib/chef/policy_builder/policyfile.rb +55 -10
  330. data/lib/chef/powershell.rb +57 -0
  331. data/lib/chef/property.rb +149 -145
  332. data/lib/chef/provider.rb +92 -140
  333. data/lib/chef/provider/apt_preference.rb +94 -0
  334. data/lib/chef/provider/apt_repository.rb +169 -62
  335. data/lib/chef/provider/apt_update.rb +9 -16
  336. data/lib/chef/provider/batch.rb +1 -1
  337. data/lib/chef/provider/cookbook_file.rb +0 -6
  338. data/lib/chef/provider/cookbook_file/content.rb +1 -1
  339. data/lib/chef/provider/cron.rb +35 -41
  340. data/lib/chef/provider/cron/unix.rb +5 -5
  341. data/lib/chef/provider/directory.rb +4 -8
  342. data/lib/chef/provider/dsc_resource.rb +8 -12
  343. data/lib/chef/provider/dsc_script.rb +22 -22
  344. data/lib/chef/provider/execute.rb +16 -14
  345. data/lib/chef/provider/file.rb +13 -23
  346. data/lib/chef/provider/git.rb +47 -24
  347. data/lib/chef/provider/group.rb +7 -13
  348. data/lib/chef/provider/group/aix.rb +8 -8
  349. data/lib/chef/provider/group/dscl.rb +11 -7
  350. data/lib/chef/provider/group/gpasswd.rb +4 -4
  351. data/lib/chef/provider/group/groupadd.rb +8 -8
  352. data/lib/chef/provider/group/groupmod.rb +9 -9
  353. data/lib/chef/provider/group/pw.rb +8 -8
  354. data/lib/chef/provider/group/suse.rb +2 -2
  355. data/lib/chef/provider/group/usermod.rb +1 -1
  356. data/lib/chef/provider/group/windows.rb +3 -2
  357. data/lib/chef/provider/http_request.rb +30 -20
  358. data/lib/chef/provider/ifconfig.rb +108 -50
  359. data/lib/chef/provider/ifconfig/aix.rb +3 -3
  360. data/lib/chef/provider/ifconfig/debian.rb +6 -3
  361. data/lib/chef/provider/ifconfig/redhat.rb +7 -1
  362. data/lib/chef/provider/launchd.rb +24 -1
  363. data/lib/chef/provider/link.rb +7 -11
  364. data/lib/chef/provider/log.rb +5 -19
  365. data/lib/chef/provider/lwrp_base.rb +2 -11
  366. data/lib/chef/provider/mdadm.rb +11 -19
  367. data/lib/chef/provider/mount.rb +22 -18
  368. data/lib/chef/provider/mount/aix.rb +70 -29
  369. data/lib/chef/provider/mount/mount.rb +48 -35
  370. data/lib/chef/provider/mount/solaris.rb +33 -29
  371. data/lib/chef/provider/mount/windows.rb +14 -14
  372. data/lib/chef/provider/noop.rb +2 -2
  373. data/lib/chef/provider/ohai.rb +1 -7
  374. data/lib/chef/provider/osx_profile.rb +12 -18
  375. data/lib/chef/provider/package.rb +117 -86
  376. data/lib/chef/provider/package/apt.rb +67 -19
  377. data/lib/chef/provider/package/{aix.rb → bff.rb} +21 -22
  378. data/lib/chef/provider/package/cab.rb +26 -18
  379. data/lib/chef/provider/package/chocolatey.rb +36 -26
  380. data/lib/chef/provider/package/dnf.rb +22 -11
  381. data/lib/chef/provider/package/dnf/dnf_helper.py +25 -2
  382. data/lib/chef/provider/package/dnf/python_helper.rb +23 -7
  383. data/lib/chef/provider/package/dpkg.rb +29 -13
  384. data/lib/chef/provider/package/freebsd/base.rb +4 -4
  385. data/lib/chef/provider/package/freebsd/pkg.rb +8 -8
  386. data/lib/chef/provider/package/freebsd/pkgng.rb +6 -6
  387. data/lib/chef/provider/package/freebsd/port.rb +4 -4
  388. data/lib/chef/provider/package/homebrew.rb +4 -4
  389. data/lib/chef/provider/package/ips.rb +7 -8
  390. data/lib/chef/provider/package/macports.rb +9 -9
  391. data/lib/chef/provider/package/msu.rb +5 -6
  392. data/lib/chef/provider/package/openbsd.rb +9 -9
  393. data/lib/chef/provider/package/pacman.rb +7 -8
  394. data/lib/chef/provider/package/paludis.rb +5 -5
  395. data/lib/chef/provider/package/portage.rb +31 -38
  396. data/lib/chef/provider/package/powershell.rb +29 -10
  397. data/lib/chef/provider/package/rpm.rb +20 -17
  398. data/lib/chef/provider/package/rubygems.rb +84 -58
  399. data/lib/chef/provider/package/smartos.rb +11 -11
  400. data/lib/chef/provider/package/solaris.rb +19 -20
  401. data/lib/chef/provider/package/windows.rb +55 -9
  402. data/lib/chef/provider/package/windows/exe.rb +6 -4
  403. data/lib/chef/provider/package/windows/msi.rb +9 -7
  404. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +22 -10
  405. data/lib/chef/provider/package/yum.rb +167 -414
  406. data/lib/chef/provider/package/yum/python_helper.rb +222 -0
  407. data/lib/chef/provider/package/yum/rpm_utils.rb +10 -1
  408. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +79 -0
  409. data/lib/chef/provider/package/yum/simplejson/__init__.py +318 -0
  410. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  411. data/lib/chef/provider/package/yum/simplejson/decoder.py +354 -0
  412. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  413. data/lib/chef/provider/package/yum/simplejson/encoder.py +440 -0
  414. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  415. data/lib/chef/provider/package/yum/simplejson/scanner.py +65 -0
  416. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  417. data/lib/chef/provider/package/yum/simplejson/tool.py +37 -0
  418. data/lib/chef/provider/package/yum/version.rb +56 -0
  419. data/lib/chef/provider/package/yum/yum_cache.rb +33 -316
  420. data/lib/chef/provider/package/yum/yum_helper.py +211 -0
  421. data/lib/chef/provider/package/zypper.rb +41 -37
  422. data/lib/chef/provider/powershell_script.rb +79 -79
  423. data/lib/chef/provider/reboot.rb +19 -11
  424. data/lib/chef/provider/registry_key.rb +29 -12
  425. data/lib/chef/provider/remote_directory.rb +2 -16
  426. data/lib/chef/provider/remote_file.rb +19 -6
  427. data/lib/chef/provider/remote_file/cache_control_data.rb +3 -3
  428. data/lib/chef/provider/remote_file/content.rb +5 -5
  429. data/lib/chef/provider/remote_file/fetcher.rb +3 -0
  430. data/lib/chef/provider/remote_file/http.rb +13 -5
  431. data/lib/chef/provider/remote_file/local_file.rb +1 -1
  432. data/lib/chef/provider/remote_file/network_file.rb +18 -5
  433. data/lib/chef/provider/remote_file/sftp.rb +1 -1
  434. data/lib/chef/provider/resource_update.rb +1 -1
  435. data/lib/chef/provider/route.rb +43 -26
  436. data/lib/chef/provider/ruby_block.rb +2 -6
  437. data/lib/chef/provider/script.rb +2 -2
  438. data/lib/chef/provider/service.rb +16 -23
  439. data/lib/chef/provider/service/aix.rb +4 -8
  440. data/lib/chef/provider/service/aixinit.rb +2 -2
  441. data/lib/chef/provider/service/debian.rb +36 -25
  442. data/lib/chef/provider/service/freebsd.rb +6 -7
  443. data/lib/chef/provider/service/gentoo.rb +2 -3
  444. data/lib/chef/provider/service/init.rb +5 -6
  445. data/lib/chef/provider/service/insserv.rb +5 -3
  446. data/lib/chef/provider/service/macosx.rb +17 -15
  447. data/lib/chef/provider/service/openbsd.rb +4 -5
  448. data/lib/chef/provider/service/redhat.rb +3 -3
  449. data/lib/chef/provider/service/simple.rb +12 -16
  450. data/lib/chef/provider/service/solaris.rb +11 -6
  451. data/lib/chef/provider/service/systemd.rb +19 -18
  452. data/lib/chef/provider/service/upstart.rb +23 -24
  453. data/lib/chef/provider/service/windows.rb +279 -104
  454. data/lib/chef/provider/subversion.rb +12 -18
  455. data/lib/chef/provider/support/yum_repo.erb +6 -0
  456. data/lib/chef/provider/support/zypper_repo.erb +17 -0
  457. data/lib/chef/provider/systemd_unit.rb +66 -45
  458. data/lib/chef/provider/template.rb +0 -6
  459. data/lib/chef/provider/template/content.rb +25 -2
  460. data/lib/chef/provider/user.rb +25 -24
  461. data/lib/chef/provider/user/aix.rb +47 -15
  462. data/lib/chef/provider/user/dscl.rb +16 -23
  463. data/lib/chef/provider/user/linux.rb +12 -21
  464. data/lib/chef/provider/user/pw.rb +14 -20
  465. data/lib/chef/provider/user/solaris.rb +61 -30
  466. data/lib/chef/provider/user/useradd.rb +18 -15
  467. data/lib/chef/provider/user/windows.rb +11 -10
  468. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  469. data/lib/chef/provider/{env.rb → windows_env.rb} +65 -27
  470. data/lib/chef/provider/windows_path.rb +61 -0
  471. data/lib/chef/provider/windows_task.rb +631 -0
  472. data/lib/chef/provider/yum_repository.rb +27 -17
  473. data/lib/chef/provider/zypper_repository.rb +169 -0
  474. data/lib/chef/provider_resolver.rb +12 -38
  475. data/lib/chef/providers.rb +7 -13
  476. data/lib/chef/recipe.rb +9 -7
  477. data/lib/chef/resource.rb +212 -245
  478. data/lib/chef/resource/action_class.rb +14 -18
  479. data/lib/chef/resource/apt_package.rb +11 -3
  480. data/lib/chef/resource/apt_preference.rb +52 -0
  481. data/lib/chef/resource/apt_repository.rb +57 -17
  482. data/lib/chef/resource/apt_update.rb +11 -3
  483. data/lib/chef/resource/bash.rb +1 -0
  484. data/lib/chef/resource/batch.rb +2 -1
  485. data/lib/chef/resource/bff_package.rb +5 -1
  486. data/lib/chef/resource/breakpoint.rb +15 -0
  487. data/lib/chef/resource/build_essential.rb +142 -0
  488. data/lib/chef/resource/cab_package.rb +8 -7
  489. data/lib/chef/resource/chef_gem.rb +20 -11
  490. data/lib/chef/resource/chef_handler.rb +132 -0
  491. data/lib/chef/resource/chocolatey_config.rb +83 -0
  492. data/lib/chef/resource/chocolatey_package.rb +20 -10
  493. data/lib/chef/resource/chocolatey_source.rb +95 -0
  494. data/lib/chef/resource/cookbook_file.rb +9 -13
  495. data/lib/chef/resource/cron.rb +29 -71
  496. data/lib/chef/resource/cron_access.rb +70 -0
  497. data/lib/chef/resource/cron_d.rb +238 -0
  498. data/lib/chef/resource/csh.rb +6 -0
  499. data/lib/chef/resource/directory.rb +13 -24
  500. data/lib/chef/resource/dmg_package.rb +171 -0
  501. data/lib/chef/resource/dnf_package.rb +34 -22
  502. data/lib/chef/resource/dpkg_package.rb +5 -2
  503. data/lib/chef/resource/dsc_resource.rb +14 -23
  504. data/lib/chef/resource/dsc_script.rb +24 -40
  505. data/lib/chef/resource/execute.rb +54 -89
  506. data/lib/chef/resource/file.rb +27 -10
  507. data/lib/chef/resource/file/verification.rb +17 -8
  508. data/lib/chef/resource/freebsd_package.rb +14 -3
  509. data/lib/chef/resource/gem_package.rb +29 -12
  510. data/lib/chef/resource/git.rb +4 -13
  511. data/lib/chef/resource/group.rb +24 -65
  512. data/lib/chef/resource/homebrew_cask.rb +100 -0
  513. data/lib/chef/resource/homebrew_package.rb +5 -1
  514. data/lib/chef/resource/homebrew_tap.rb +87 -0
  515. data/lib/chef/resource/hostname.rb +265 -0
  516. data/lib/chef/resource/http_request.rb +11 -22
  517. data/lib/chef/resource/ifconfig.rb +71 -113
  518. data/lib/chef/resource/ips_package.rb +6 -2
  519. data/lib/chef/resource/kernel_module.rb +135 -0
  520. data/lib/chef/resource/ksh.rb +7 -0
  521. data/lib/chef/resource/launchd.rb +211 -115
  522. data/lib/chef/resource/link.rb +28 -42
  523. data/lib/chef/resource/locale.rb +94 -0
  524. data/lib/chef/resource/log.rb +21 -45
  525. data/lib/chef/resource/lwrp_base.rb +8 -9
  526. data/lib/chef/resource/macos_userdefaults.rb +132 -0
  527. data/lib/chef/resource/macosx_service.rb +8 -25
  528. data/lib/chef/resource/macports_package.rb +2 -0
  529. data/lib/chef/resource/mdadm.rb +28 -73
  530. data/lib/chef/resource/mount.rb +45 -136
  531. data/lib/chef/resource/msu_package.rb +16 -14
  532. data/lib/chef/resource/ohai.rb +10 -2
  533. data/lib/chef/resource/ohai_hint.rb +95 -0
  534. data/lib/chef/resource/openbsd_package.rb +3 -0
  535. data/lib/chef/resource/openssl_dhparam.rb +77 -0
  536. data/lib/chef/resource/openssl_ec_private_key.rb +93 -0
  537. data/lib/chef/resource/openssl_ec_public_key.rb +75 -0
  538. data/lib/chef/resource/openssl_rsa_private_key.rb +91 -0
  539. data/lib/chef/resource/openssl_rsa_public_key.rb +74 -0
  540. data/lib/chef/resource/openssl_x509_certificate.rb +221 -0
  541. data/lib/chef/resource/openssl_x509_crl.rb +132 -0
  542. data/lib/chef/resource/openssl_x509_request.rb +151 -0
  543. data/lib/chef/resource/osx_profile.rb +14 -40
  544. data/lib/chef/resource/package.rb +33 -7
  545. data/lib/chef/resource/pacman_package.rb +3 -1
  546. data/lib/chef/resource/paludis_package.rb +8 -3
  547. data/lib/chef/resource/perl.rb +6 -0
  548. data/lib/chef/resource/portage_package.rb +6 -5
  549. data/lib/chef/resource/powershell_package.rb +18 -7
  550. data/lib/chef/resource/powershell_package_source.rb +169 -0
  551. data/lib/chef/resource/powershell_script.rb +12 -3
  552. data/lib/chef/resource/python.rb +5 -0
  553. data/lib/chef/resource/reboot.rb +16 -18
  554. data/lib/chef/resource/registry_key.rb +16 -30
  555. data/lib/chef/resource/remote_directory.rb +13 -48
  556. data/lib/chef/resource/remote_file.rb +70 -47
  557. data/lib/chef/resource/resource_notification.rb +47 -26
  558. data/lib/chef/resource/rhsm_errata.rb +46 -0
  559. data/lib/chef/resource/rhsm_errata_level.rb +51 -0
  560. data/lib/chef/resource/rhsm_register.rb +168 -0
  561. data/lib/chef/resource/rhsm_repo.rb +65 -0
  562. data/lib/chef/resource/rhsm_subscription.rb +98 -0
  563. data/lib/chef/resource/route.rb +16 -107
  564. data/lib/chef/resource/rpm_package.rb +3 -2
  565. data/lib/chef/resource/ruby.rb +6 -0
  566. data/lib/chef/resource/ruby_block.rb +6 -14
  567. data/lib/chef/resource/scm.rb +42 -146
  568. data/lib/chef/resource/script.rb +15 -35
  569. data/lib/chef/resource/service.rb +34 -30
  570. data/lib/chef/resource/smartos_package.rb +4 -2
  571. data/lib/chef/resource/solaris_package.rb +3 -1
  572. data/lib/chef/resource/ssh_known_hosts_entry.rb +146 -0
  573. data/lib/chef/resource/subversion.rb +21 -10
  574. data/lib/chef/resource/sudo.rb +230 -0
  575. data/lib/chef/resource/support/cron.d.erb +28 -0
  576. data/lib/chef/resource/support/cron_access.erb +4 -0
  577. data/lib/chef/resource/support/ssh_known_hosts.erb +3 -0
  578. data/lib/chef/resource/support/sudoer.erb +18 -0
  579. data/lib/chef/resource/swap_file.rb +209 -0
  580. data/lib/chef/resource/sysctl.rb +151 -0
  581. data/lib/chef/resource/systemd_unit.rb +34 -11
  582. data/lib/chef/resource/template.rb +22 -26
  583. data/lib/chef/resource/timezone.rb +135 -0
  584. data/lib/chef/resource/user.rb +19 -34
  585. data/lib/chef/resource/user/aix_user.rb +1 -1
  586. data/lib/chef/resource/user/dscl_user.rb +1 -1
  587. data/lib/chef/resource/user/linux_user.rb +1 -10
  588. data/lib/chef/resource/user/pw_user.rb +1 -1
  589. data/lib/chef/resource/user/solaris_user.rb +1 -1
  590. data/lib/chef/resource/user/windows_user.rb +5 -1
  591. data/lib/chef/resource/windows_ad_join.rb +120 -0
  592. data/lib/chef/resource/windows_auto_run.rb +87 -0
  593. data/lib/chef/resource/windows_certificate.rb +332 -0
  594. data/lib/chef/resource/windows_env.rb +49 -0
  595. data/lib/chef/resource/windows_feature.rb +90 -0
  596. data/lib/chef/resource/windows_feature_dism.rb +222 -0
  597. data/lib/chef/resource/windows_feature_powershell.rb +262 -0
  598. data/lib/chef/resource/windows_firewall_rule.rb +205 -0
  599. data/lib/chef/resource/windows_font.rb +125 -0
  600. data/lib/chef/resource/windows_package.rb +8 -2
  601. data/lib/chef/resource/windows_pagefile.rb +206 -0
  602. data/lib/chef/resource/{easy_install_package.rb → windows_path.rb} +14 -8
  603. data/lib/chef/resource/windows_printer.rb +146 -0
  604. data/lib/chef/resource/windows_printer_port.rb +136 -0
  605. data/lib/chef/resource/windows_script.rb +1 -1
  606. data/lib/chef/resource/windows_service.rb +86 -36
  607. data/lib/chef/resource/windows_share.rb +324 -0
  608. data/lib/chef/resource/windows_shortcut.rb +79 -0
  609. data/lib/chef/resource/windows_task.rb +349 -0
  610. data/lib/chef/resource/windows_workgroup.rb +112 -0
  611. data/lib/chef/resource/yum_package.rb +40 -24
  612. data/lib/chef/resource/yum_repository.rb +154 -45
  613. data/lib/chef/resource/zypper_package.rb +16 -0
  614. data/lib/chef/resource/zypper_repository.rb +103 -0
  615. data/lib/chef/resource_builder.rb +1 -65
  616. data/lib/chef/resource_collection.rb +19 -2
  617. data/lib/chef/resource_collection/resource_collection_serialization.rb +12 -3
  618. data/lib/chef/resource_collection/resource_list.rb +6 -0
  619. data/lib/chef/resource_collection/resource_set.rb +43 -16
  620. data/lib/chef/resource_definition.rb +1 -1
  621. data/lib/chef/resource_inspector.rb +108 -0
  622. data/lib/chef/resource_reporter.rb +9 -10
  623. data/lib/chef/resource_resolver.rb +5 -29
  624. data/lib/chef/resources.rb +53 -7
  625. data/lib/chef/role.rb +14 -20
  626. data/lib/chef/run_context.rb +91 -64
  627. data/lib/chef/run_context/cookbook_compiler.rb +65 -12
  628. data/lib/chef/run_list/run_list_expansion.rb +12 -10
  629. data/lib/chef/run_list/run_list_item.rb +1 -1
  630. data/lib/chef/run_list/versioned_recipe_list.rb +11 -9
  631. data/lib/chef/run_status.rb +14 -12
  632. data/lib/chef/runner.rb +50 -9
  633. data/lib/chef/search/query.rb +32 -33
  634. data/lib/chef/server_api.rb +3 -0
  635. data/lib/chef/server_api_versions.rb +21 -2
  636. data/lib/chef/shell.rb +86 -60
  637. data/lib/chef/shell/ext.rb +151 -151
  638. data/lib/chef/shell/model_wrapper.rb +1 -1
  639. data/lib/chef/shell/shell_session.rb +22 -11
  640. data/lib/chef/user.rb +19 -22
  641. data/lib/chef/user_v1.rb +38 -41
  642. data/lib/chef/util/backup.rb +2 -2
  643. data/lib/chef/util/diff.rb +3 -3
  644. data/lib/chef/util/dsc/configuration_generator.rb +12 -12
  645. data/lib/chef/util/dsc/lcm_output_parser.rb +59 -4
  646. data/lib/chef/util/dsc/local_configuration_manager.rb +35 -25
  647. data/lib/chef/util/file_edit.rb +14 -14
  648. data/lib/chef/util/powershell/cmdlet.rb +5 -5
  649. data/lib/chef/util/selinux.rb +6 -5
  650. data/lib/chef/util/windows/logon_session.rb +129 -0
  651. data/lib/chef/util/windows/net_group.rb +7 -1
  652. data/lib/chef/util/windows/net_use.rb +3 -3
  653. data/lib/chef/util/windows/net_user.rb +24 -16
  654. data/lib/chef/util/windows/volume.rb +2 -6
  655. data/lib/chef/version.rb +5 -3
  656. data/lib/chef/version/platform.rb +18 -0
  657. data/lib/chef/version_constraint.rb +3 -3
  658. data/lib/chef/version_constraint/platform.rb +2 -0
  659. data/lib/chef/version_string.rb +143 -0
  660. data/lib/chef/whitelist.rb +1 -1
  661. data/lib/chef/win32/api.rb +6 -6
  662. data/lib/chef/win32/api/error.rb +4 -4
  663. data/lib/chef/win32/api/file.rb +13 -12
  664. data/lib/chef/win32/api/net.rb +75 -59
  665. data/lib/chef/win32/api/security.rb +16 -0
  666. data/lib/chef/win32/eventlog.rb +2 -2
  667. data/lib/chef/win32/file.rb +10 -0
  668. data/lib/chef/win32/mutex.rb +1 -1
  669. data/lib/chef/win32/net.rb +15 -0
  670. data/lib/chef/win32/registry.rb +25 -25
  671. data/lib/chef/win32/security.rb +68 -35
  672. data/lib/chef/win32/security/securable_object.rb +10 -10
  673. data/lib/chef/win32/security/sid.rb +45 -2
  674. data/lib/chef/win32/system.rb +0 -0
  675. data/lib/chef/win32/unicode.rb +6 -0
  676. data/lib/chef/win32/version.rb +26 -33
  677. data/lib/chef/win32_service_constants.rb +143 -0
  678. data/spec/data/client.d_00/02-strings.rb +2 -0
  679. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
  680. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  681. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  682. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  683. data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
  684. data/spec/data/lwrp/resources/buck_passer.rb +5 -0
  685. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
  686. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
  687. data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
  688. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
  689. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
  690. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
  691. data/spec/data/mixin/invalid_data.rb +3 -0
  692. data/spec/data/mixin/real_data.rb +2 -0
  693. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
  694. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
  695. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
  696. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
  697. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
  698. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
  699. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
  700. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
  701. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
  702. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
  703. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
  704. data/spec/data/shef-config.rb +11 -10
  705. data/spec/data/templates/failed.erb +5 -0
  706. data/spec/data/windows_certificates/base64_test.cer +22 -0
  707. data/spec/data/windows_certificates/othertest.cer +0 -0
  708. data/spec/data/windows_certificates/test.cer +0 -0
  709. data/spec/data/windows_certificates/test.p7b +0 -0
  710. data/spec/data/windows_certificates/test.pem +21 -0
  711. data/spec/data/windows_certificates/test.pfx +0 -0
  712. data/spec/functional/assets/chefinittest +6 -4
  713. data/spec/functional/assets/inittest +36 -0
  714. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.aarch64.rpm +0 -0
  715. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.i686.rpm +0 -0
  716. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64.rpm +0 -0
  717. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64le.rpm +0 -0
  718. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.s390x.rpm +0 -0
  719. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.src.rpm +0 -0
  720. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.x86_64.rpm +0 -0
  721. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.aarch64.rpm +0 -0
  722. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.i686.rpm +0 -0
  723. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64.rpm +0 -0
  724. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64le.rpm +0 -0
  725. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.s390x.rpm +0 -0
  726. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.src.rpm +0 -0
  727. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.x86_64.rpm +0 -0
  728. data/spec/functional/assets/yumrepo/repodata/4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2 +0 -0
  729. data/spec/functional/assets/yumrepo/repodata/74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz +0 -0
  730. data/spec/functional/assets/yumrepo/repodata/a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2 +0 -0
  731. data/spec/functional/assets/yumrepo/repodata/af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2 +0 -0
  732. data/spec/functional/assets/yumrepo/repodata/bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz +0 -0
  733. data/spec/functional/assets/yumrepo/repodata/c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz +0 -0
  734. data/spec/functional/assets/yumrepo/repodata/filelists.xml.gz +0 -0
  735. data/spec/functional/assets/yumrepo/repodata/other.xml.gz +0 -0
  736. data/spec/functional/assets/yumrepo/repodata/primary.xml.gz +0 -0
  737. data/spec/functional/assets/yumrepo/repodata/repomd.xml +19 -53
  738. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.aarch64.rpm +0 -0
  739. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.i686.rpm +0 -0
  740. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.ppc64.rpm +0 -0
  741. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.ppc64le.rpm +0 -0
  742. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.s390x.rpm +0 -0
  743. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.src.rpm +0 -0
  744. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.x86_64.rpm +0 -0
  745. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.aarch64.rpm +0 -0
  746. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.i686.rpm +0 -0
  747. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.ppc64.rpm +0 -0
  748. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.ppc64le.rpm +0 -0
  749. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.s390x.rpm +0 -0
  750. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.src.rpm +0 -0
  751. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.x86_64.rpm +0 -0
  752. data/spec/functional/audit/rspec_formatter_spec.rb +1 -1
  753. data/spec/functional/audit/runner_spec.rb +1 -1
  754. data/spec/functional/dsl/reboot_pending_spec.rb +3 -3
  755. data/spec/functional/dsl/registry_helper_spec.rb +3 -3
  756. data/spec/functional/event_loggers/windows_eventlog_spec.rb +2 -2
  757. data/spec/functional/http/simple_spec.rb +25 -19
  758. data/spec/functional/knife/exec_spec.rb +1 -1
  759. data/spec/functional/knife/ssh_spec.rb +84 -9
  760. data/spec/functional/mixin/from_file_spec.rb +82 -0
  761. data/spec/functional/mixin/powershell_out_spec.rb +3 -3
  762. data/spec/functional/mixin/shell_out_spec.rb +33 -3
  763. data/spec/functional/mixin/user_context_spec.rb +117 -0
  764. data/spec/functional/notifications_spec.rb +1 -1
  765. data/spec/functional/rebooter_spec.rb +27 -15
  766. data/spec/functional/resource/aixinit_service_spec.rb +2 -2
  767. data/spec/functional/resource/{package_spec.rb → apt_package_spec.rb} +21 -21
  768. data/spec/functional/resource/bash_spec.rb +12 -46
  769. data/spec/functional/resource/bff_spec.rb +4 -4
  770. data/spec/functional/resource/chocolatey_package_spec.rb +1 -8
  771. data/spec/functional/resource/cron_spec.rb +3 -3
  772. data/spec/functional/resource/dnf_package_spec.rb +128 -128
  773. data/spec/functional/resource/dsc_resource_spec.rb +3 -3
  774. data/spec/functional/resource/dsc_script_spec.rb +95 -95
  775. data/spec/functional/resource/execute_spec.rb +5 -5
  776. data/spec/functional/resource/file_spec.rb +1 -1
  777. data/spec/functional/resource/git_spec.rb +19 -19
  778. data/spec/functional/resource/group_spec.rb +44 -29
  779. data/spec/functional/resource/ifconfig_spec.rb +8 -7
  780. data/spec/functional/resource/insserv_spec.rb +206 -0
  781. data/spec/functional/resource/link_spec.rb +15 -19
  782. data/spec/functional/resource/mount_spec.rb +10 -6
  783. data/spec/functional/resource/msu_package_spec.rb +14 -0
  784. data/spec/functional/resource/powershell_script_spec.rb +15 -17
  785. data/spec/functional/resource/reboot_spec.rb +3 -3
  786. data/spec/functional/resource/registry_spec.rb +86 -86
  787. data/spec/functional/resource/remote_file_spec.rb +190 -15
  788. data/spec/functional/resource/rpm_spec.rb +2 -2
  789. data/spec/functional/resource/template_spec.rb +35 -2
  790. data/{lib/chef/knife/cookbook_site_vendor.rb → spec/functional/resource/timezone_spec.rb} +15 -22
  791. data/spec/functional/resource/user/dscl_spec.rb +2 -3
  792. data/spec/functional/resource/user/windows_spec.rb +131 -19
  793. data/spec/functional/resource/windows_certificate_spec.rb +492 -0
  794. data/spec/functional/resource/windows_env_spec.rb +285 -0
  795. data/spec/functional/resource/windows_path_spec.rb +64 -0
  796. data/spec/functional/resource/windows_service_spec.rb +1 -1
  797. data/spec/functional/resource/windows_task_spec.rb +1917 -0
  798. data/spec/functional/resource/yum_package_spec.rb +959 -0
  799. data/spec/functional/resource/zypper_package_spec.rb +233 -0
  800. data/spec/functional/root_alias_spec.rb +78 -0
  801. data/spec/functional/run_lock_spec.rb +4 -4
  802. data/spec/functional/shell_spec.rb +39 -41
  803. data/spec/functional/util/powershell/cmdlet_spec.rb +9 -9
  804. data/spec/functional/version_spec.rb +1 -1
  805. data/spec/functional/win32/crypto_spec.rb +10 -10
  806. data/spec/functional/win32/registry_spec.rb +66 -66
  807. data/spec/functional/win32/security_spec.rb +113 -7
  808. data/spec/functional/win32/versions_spec.rb +7 -9
  809. data/spec/integration/client/client_spec.rb +384 -187
  810. data/spec/integration/client/exit_code_spec.rb +21 -124
  811. data/spec/integration/client/ipv6_spec.rb +37 -37
  812. data/spec/integration/knife/chef_fs_data_store_spec.rb +130 -130
  813. data/spec/integration/knife/chef_repo_path_spec.rb +422 -420
  814. data/spec/integration/knife/chef_repository_file_system_spec.rb +35 -132
  815. data/spec/integration/knife/chefignore_spec.rb +88 -88
  816. data/spec/integration/knife/client_bulk_delete_spec.rb +49 -49
  817. data/spec/integration/knife/client_create_spec.rb +6 -6
  818. data/spec/integration/knife/client_delete_spec.rb +13 -13
  819. data/spec/integration/knife/client_key_create_spec.rb +1 -1
  820. data/spec/integration/knife/client_key_delete_spec.rb +2 -2
  821. data/spec/integration/knife/client_key_list_spec.rb +4 -4
  822. data/spec/integration/knife/client_list_spec.rb +8 -8
  823. data/spec/integration/knife/common_options_spec.rb +59 -41
  824. data/spec/integration/knife/config_get_profile_spec.rb +112 -0
  825. data/spec/integration/knife/config_get_spec.rb +183 -0
  826. data/spec/integration/knife/config_list_profiles_spec.rb +188 -0
  827. data/spec/integration/knife/config_use_profile_spec.rb +100 -0
  828. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +38 -38
  829. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +16 -16
  830. data/spec/integration/knife/cookbook_download_spec.rb +13 -37
  831. data/spec/integration/knife/cookbook_list_spec.rb +8 -8
  832. data/spec/integration/knife/cookbook_show_spec.rb +85 -96
  833. data/spec/integration/knife/cookbook_upload_spec.rb +24 -24
  834. data/spec/integration/knife/data_bag_create_spec.rb +82 -13
  835. data/spec/integration/knife/data_bag_delete_spec.rb +8 -8
  836. data/spec/integration/knife/data_bag_edit_spec.rb +104 -0
  837. data/spec/integration/knife/data_bag_from_file_spec.rb +47 -47
  838. data/spec/integration/knife/data_bag_list_spec.rb +4 -4
  839. data/spec/integration/knife/data_bag_show_spec.rb +56 -15
  840. data/spec/integration/knife/delete_spec.rb +593 -593
  841. data/spec/integration/knife/deps_spec.rb +192 -196
  842. data/spec/integration/knife/diff_spec.rb +116 -116
  843. data/spec/integration/knife/download_spec.rb +510 -510
  844. data/spec/integration/knife/environment_compare_spec.rb +17 -17
  845. data/spec/integration/knife/environment_create_spec.rb +1 -1
  846. data/spec/integration/knife/environment_from_file_spec.rb +59 -59
  847. data/spec/integration/knife/environment_list_spec.rb +4 -4
  848. data/spec/integration/knife/environment_show_spec.rb +27 -27
  849. data/spec/integration/knife/list_spec.rb +731 -731
  850. data/spec/integration/knife/node_bulk_delete_spec.rb +8 -8
  851. data/spec/integration/knife/node_create_spec.rb +1 -1
  852. data/spec/integration/knife/node_delete_spec.rb +6 -6
  853. data/spec/integration/knife/node_environment_set_spec.rb +3 -3
  854. data/spec/integration/knife/node_from_file_spec.rb +16 -16
  855. data/spec/integration/knife/node_list_spec.rb +5 -5
  856. data/spec/integration/knife/raw_spec.rb +123 -119
  857. data/spec/integration/knife/redirection_spec.rb +6 -4
  858. data/spec/integration/knife/role_bulk_delete_spec.rb +8 -8
  859. data/spec/integration/knife/role_create_spec.rb +1 -1
  860. data/spec/integration/knife/role_delete_spec.rb +6 -6
  861. data/spec/integration/knife/role_from_file_spec.rb +42 -42
  862. data/spec/integration/knife/role_list_spec.rb +5 -5
  863. data/spec/integration/knife/role_show_spec.rb +11 -11
  864. data/spec/integration/knife/search_node_spec.rb +39 -0
  865. data/spec/integration/knife/serve_spec.rb +58 -22
  866. data/spec/integration/knife/show_spec.rb +57 -57
  867. data/spec/integration/knife/upload_spec.rb +399 -407
  868. data/spec/integration/recipes/accumulator_spec.rb +8 -8
  869. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +15 -19
  870. data/spec/integration/recipes/lwrp_spec.rb +12 -12
  871. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  872. data/spec/integration/recipes/notifies_spec.rb +217 -157
  873. data/spec/integration/recipes/notifying_block_spec.rb +2 -2
  874. data/spec/integration/recipes/recipe_dsl_spec.rb +87 -237
  875. data/spec/integration/recipes/remote_directory.rb +1 -1
  876. data/spec/integration/recipes/resource_action_spec.rb +62 -139
  877. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +144 -88
  878. data/spec/integration/recipes/resource_load_spec.rb +13 -29
  879. data/spec/integration/recipes/unified_mode_spec.rb +876 -0
  880. data/spec/integration/solo/solo_spec.rb +42 -42
  881. data/spec/scripts/ssl-serve.rb +12 -12
  882. data/spec/spec_helper.rb +126 -62
  883. data/spec/stress/win32/file_spec.rb +2 -2
  884. data/spec/stress/win32/security_spec.rb +2 -2
  885. data/spec/support/lib/chef/resource/one_two_three_four.rb +0 -2
  886. data/spec/support/lib/chef/resource/zen_master.rb +1 -3
  887. data/spec/support/mock/constant.rb +1 -1
  888. data/spec/support/platform_helpers.rb +54 -10
  889. data/spec/support/shared/context/client.rb +45 -35
  890. data/spec/support/shared/examples/client.rb +51 -0
  891. data/spec/support/shared/functional/directory_resource.rb +12 -10
  892. data/spec/support/shared/functional/execute_resource.rb +1 -1
  893. data/spec/support/shared/functional/file_resource.rb +8 -8
  894. data/spec/support/shared/functional/securable_resource.rb +116 -85
  895. data/spec/support/shared/functional/securable_resource_with_reporting.rb +6 -6
  896. data/spec/support/shared/functional/win32_service.rb +5 -5
  897. data/spec/support/shared/functional/windows_script.rb +3 -3
  898. data/spec/support/shared/integration/app_server_support.rb +5 -5
  899. data/spec/support/shared/integration/integration_helper.rb +2 -2
  900. data/spec/support/shared/integration/knife_support.rb +15 -4
  901. data/spec/support/shared/unit/api_error_inspector.rb +11 -11
  902. data/spec/support/shared/unit/api_versioning.rb +4 -4
  903. data/spec/support/shared/unit/application_dot_d.rb +2 -0
  904. data/spec/support/shared/unit/execute_resource.rb +14 -16
  905. data/spec/support/shared/unit/provider/file.rb +22 -13
  906. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +41 -41
  907. data/spec/support/shared/unit/script_resource.rb +1 -9
  908. data/spec/support/shared/unit/user_and_client_shared.rb +3 -3
  909. data/spec/tiny_server.rb +8 -9
  910. data/spec/unit/api_client/registration_spec.rb +31 -31
  911. data/spec/unit/api_client_spec.rb +8 -8
  912. data/spec/unit/api_client_v1_spec.rb +9 -9
  913. data/spec/unit/application/apply_spec.rb +4 -4
  914. data/spec/unit/application/client_spec.rb +53 -24
  915. data/spec/unit/application/exit_code_spec.rb +4 -89
  916. data/spec/unit/application/knife_spec.rb +3 -3
  917. data/spec/unit/application/solo_spec.rb +6 -13
  918. data/spec/unit/application_spec.rb +116 -41
  919. data/spec/unit/audit/audit_event_proxy_spec.rb +48 -48
  920. data/spec/unit/audit/audit_reporter_spec.rb +71 -75
  921. data/spec/unit/audit/control_group_data_spec.rb +34 -34
  922. data/spec/unit/audit/runner_spec.rb +2 -2
  923. data/spec/unit/chef_class_spec.rb +130 -0
  924. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +82 -0
  925. data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +65 -0
  926. data/spec/unit/chef_fs/diff_spec.rb +45 -45
  927. data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
  928. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -2
  929. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +4 -4
  930. data/spec/unit/chef_fs/file_system_spec.rb +9 -9
  931. data/spec/unit/chef_fs/parallelizer.rb +12 -12
  932. data/spec/unit/client_spec.rb +97 -46
  933. data/spec/unit/config_fetcher_spec.rb +23 -23
  934. data/spec/unit/config_spec.rb +2 -2
  935. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +22 -19
  936. data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
  937. data/spec/unit/cookbook/gem_installer_spec.rb +113 -0
  938. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
  939. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
  940. data/spec/unit/cookbook/metadata_spec.rb +114 -193
  941. data/spec/unit/cookbook/synchronizer_spec.rb +188 -158
  942. data/spec/unit/cookbook/syntax_check_spec.rb +1 -0
  943. data/spec/unit/cookbook_loader_spec.rb +33 -30
  944. data/spec/unit/cookbook_manifest_spec.rb +33 -48
  945. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +6 -10
  946. data/spec/unit/cookbook_spec.rb +10 -14
  947. data/spec/unit/cookbook_uploader_spec.rb +9 -9
  948. data/spec/unit/cookbook_version_file_specificity_spec.rb +156 -109
  949. data/spec/unit/cookbook_version_spec.rb +19 -128
  950. data/spec/unit/daemon_spec.rb +25 -16
  951. data/spec/unit/data_bag_item_spec.rb +7 -3
  952. data/spec/unit/data_bag_spec.rb +2 -2
  953. data/spec/unit/data_collector/messages/helpers_spec.rb +9 -0
  954. data/spec/unit/data_collector/messages_spec.rb +137 -0
  955. data/spec/unit/data_collector/resource_report_spec.rb +145 -0
  956. data/spec/unit/data_collector_spec.rb +137 -2
  957. data/spec/unit/deprecated_spec.rb +19 -13
  958. data/spec/unit/deprecation_spec.rb +0 -14
  959. data/spec/unit/dsl/audit_spec.rb +1 -1
  960. data/spec/unit/dsl/declare_resource_spec.rb +10 -1
  961. data/spec/unit/dsl/platform_introspection_spec.rb +16 -16
  962. data/spec/unit/dsl/reboot_pending_spec.rb +1 -14
  963. data/spec/unit/dsl/recipe_spec.rb +1 -18
  964. data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
  965. data/spec/unit/environment_spec.rb +19 -19
  966. data/spec/unit/exceptions_spec.rb +1 -1
  967. data/spec/unit/file_access_control_spec.rb +8 -8
  968. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +16 -4
  969. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +26 -26
  970. data/spec/unit/formatters/base_spec.rb +34 -5
  971. data/spec/unit/formatters/doc_spec.rb +18 -0
  972. data/spec/unit/formatters/error_description_spec.rb +66 -21
  973. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +16 -16
  974. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +4 -4
  975. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
  976. data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +1 -1
  977. data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +1 -1
  978. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +1 -1
  979. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +7 -7
  980. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +4 -4
  981. data/spec/unit/handler/json_file_spec.rb +1 -1
  982. data/spec/unit/http/api_versions_spec.rb +18 -5
  983. data/spec/unit/http/authenticator_spec.rb +58 -13
  984. data/spec/unit/http/http_request_spec.rb +7 -1
  985. data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
  986. data/spec/unit/http/ssl_policies_spec.rb +1 -1
  987. data/spec/unit/http/validate_content_length_spec.rb +7 -7
  988. data/spec/unit/http_spec.rb +9 -0
  989. data/spec/unit/json_compat_spec.rb +0 -32
  990. data/spec/unit/key_spec.rb +12 -12
  991. data/spec/unit/knife/bootstrap/client_builder_spec.rb +4 -4
  992. data/spec/unit/knife/bootstrap_spec.rb +160 -12
  993. data/spec/unit/knife/client_bulk_delete_spec.rb +1 -1
  994. data/spec/unit/knife/client_delete_spec.rb +2 -2
  995. data/spec/unit/knife/client_reregister_spec.rb +1 -1
  996. data/spec/unit/knife/configure_client_spec.rb +4 -6
  997. data/spec/unit/knife/configure_spec.rb +12 -63
  998. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +1 -1
  999. data/spec/unit/knife/cookbook_create_spec.rb +1 -220
  1000. data/spec/unit/knife/cookbook_delete_spec.rb +6 -6
  1001. data/spec/unit/knife/cookbook_download_spec.rb +64 -46
  1002. data/spec/unit/knife/cookbook_list_spec.rb +7 -7
  1003. data/spec/unit/knife/cookbook_show_spec.rb +62 -29
  1004. data/spec/unit/knife/cookbook_test_spec.rb +2 -2
  1005. data/spec/unit/knife/cookbook_upload_spec.rb +19 -19
  1006. data/spec/unit/knife/core/bootstrap_context_spec.rb +54 -37
  1007. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +21 -21
  1008. data/spec/unit/knife/core/gem_glob_loader_spec.rb +2 -2
  1009. data/spec/unit/knife/core/hashed_command_loader_spec.rb +1 -1
  1010. data/spec/unit/knife/core/node_editor_spec.rb +6 -6
  1011. data/spec/unit/knife/core/object_loader_spec.rb +1 -1
  1012. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
  1013. data/spec/unit/knife/core/ui_spec.rb +76 -66
  1014. data/spec/unit/knife/data_bag_create_spec.rb +107 -41
  1015. data/spec/unit/knife/data_bag_edit_spec.rb +2 -3
  1016. data/spec/unit/knife/data_bag_secret_options_spec.rb +5 -5
  1017. data/spec/unit/knife/data_bag_show_spec.rb +16 -2
  1018. data/spec/unit/knife/environment_compare_spec.rb +3 -3
  1019. data/spec/unit/knife/environment_from_file_spec.rb +1 -1
  1020. data/spec/unit/knife/key_create_spec.rb +4 -4
  1021. data/spec/unit/knife/key_delete_spec.rb +3 -3
  1022. data/spec/unit/knife/key_edit_spec.rb +3 -3
  1023. data/spec/unit/knife/key_list_spec.rb +3 -3
  1024. data/spec/unit/knife/key_show_spec.rb +3 -3
  1025. data/spec/unit/knife/node_delete_spec.rb +1 -1
  1026. data/spec/unit/knife/node_edit_spec.rb +10 -8
  1027. data/spec/unit/knife/node_from_file_spec.rb +1 -1
  1028. data/spec/unit/knife/node_policy_set_spec.rb +122 -0
  1029. data/spec/unit/knife/node_run_list_add_spec.rb +1 -1
  1030. data/spec/unit/knife/osc_user_edit_spec.rb +1 -1
  1031. data/spec/unit/knife/osc_user_reregister_spec.rb +2 -2
  1032. data/spec/unit/knife/osc_user_show_spec.rb +1 -1
  1033. data/spec/unit/knife/role_bulk_delete_spec.rb +1 -1
  1034. data/spec/unit/knife/role_create_spec.rb +1 -1
  1035. data/spec/unit/knife/role_delete_spec.rb +1 -1
  1036. data/spec/unit/knife/role_env_run_list_add_spec.rb +4 -4
  1037. data/spec/unit/knife/role_env_run_list_clear_spec.rb +1 -1
  1038. data/spec/unit/knife/role_env_run_list_remove_spec.rb +1 -1
  1039. data/spec/unit/knife/role_env_run_list_replace_spec.rb +1 -1
  1040. data/spec/unit/knife/role_env_run_list_set_spec.rb +1 -1
  1041. data/spec/unit/knife/role_from_file_spec.rb +1 -1
  1042. data/spec/unit/knife/role_run_list_add_spec.rb +4 -4
  1043. data/spec/unit/knife/role_run_list_clear_spec.rb +1 -1
  1044. data/spec/unit/knife/role_run_list_remove_spec.rb +1 -1
  1045. data/spec/unit/knife/role_run_list_replace_spec.rb +1 -1
  1046. data/spec/unit/knife/role_run_list_set_spec.rb +1 -1
  1047. data/spec/unit/knife/ssh_spec.rb +136 -66
  1048. data/spec/unit/knife/ssl_check_spec.rb +23 -23
  1049. data/spec/unit/knife/ssl_fetch_spec.rb +11 -11
  1050. data/spec/unit/knife/status_spec.rb +2 -0
  1051. data/spec/unit/knife/{cookbook_site_download_spec.rb → supermarket_download_spec.rb} +28 -26
  1052. data/spec/unit/knife/{cookbook_site_install_spec.rb → supermarket_install_spec.rb} +10 -9
  1053. data/spec/unit/knife/{cookbook_site_share_spec.rb → supermarket_share_spec.rb} +15 -15
  1054. data/spec/unit/knife/{cookbook_site_unshare_spec.rb → supermarket_unshare_spec.rb} +9 -8
  1055. data/spec/unit/knife/user_delete_spec.rb +1 -1
  1056. data/spec/unit/knife/user_reregister_spec.rb +1 -1
  1057. data/spec/unit/knife_spec.rb +65 -38
  1058. data/spec/unit/log/syslog_spec.rb +4 -6
  1059. data/spec/unit/log/winevt_spec.rb +3 -4
  1060. data/spec/unit/lwrp_spec.rb +50 -137
  1061. data/spec/unit/mash_spec.rb +3 -3
  1062. data/spec/unit/mixin/api_version_request_handling_spec.rb +18 -18
  1063. data/spec/unit/mixin/checksum_spec.rb +1 -1
  1064. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +8 -8
  1065. data/spec/unit/mixin/homebrew_user_spec.rb +2 -6
  1066. data/spec/unit/mixin/openssl_helper_spec.rb +857 -0
  1067. data/spec/unit/mixin/params_validate_spec.rb +104 -93
  1068. data/spec/unit/mixin/path_sanity_spec.rb +7 -7
  1069. data/spec/unit/mixin/powershell_exec_spec.rb +43 -0
  1070. data/spec/unit/mixin/powershell_type_coercions_spec.rb +8 -7
  1071. data/spec/unit/mixin/properties_spec.rb +12 -2
  1072. data/spec/unit/mixin/securable_spec.rb +27 -27
  1073. data/spec/unit/mixin/shell_out_spec.rb +335 -187
  1074. data/spec/unit/mixin/template_spec.rb +45 -0
  1075. data/spec/unit/mixin/user_context_spec.rb +108 -0
  1076. data/spec/unit/mixin/versioned_api_spec.rb +21 -0
  1077. data/spec/unit/mixin/xml_escape_spec.rb +1 -1
  1078. data/spec/unit/node/attribute_spec.rb +77 -45
  1079. data/spec/unit/node/immutable_collections_spec.rb +126 -5
  1080. data/spec/unit/node/vivid_mash_spec.rb +3 -3
  1081. data/spec/unit/node_map_spec.rb +90 -18
  1082. data/spec/unit/node_spec.rb +171 -156
  1083. data/spec/unit/org_spec.rb +2 -2
  1084. data/spec/unit/platform/query_helpers_spec.rb +30 -43
  1085. data/spec/unit/policy_builder/expand_node_object_spec.rb +6 -31
  1086. data/spec/unit/policy_builder/policyfile_spec.rb +162 -35
  1087. data/spec/unit/property/validation_spec.rb +108 -70
  1088. data/spec/unit/property_spec.rb +139 -135
  1089. data/spec/unit/provider/apt_preference_spec.rb +87 -0
  1090. data/spec/unit/provider/apt_repository_spec.rb +131 -60
  1091. data/spec/unit/provider/apt_update_spec.rb +9 -7
  1092. data/spec/unit/provider/cookbook_file/content_spec.rb +1 -1
  1093. data/spec/unit/provider/cookbook_file_spec.rb +2 -1
  1094. data/spec/unit/provider/cron/unix_spec.rb +20 -15
  1095. data/spec/unit/provider/cron_spec.rb +439 -365
  1096. data/spec/unit/provider/dsc_resource_spec.rb +10 -10
  1097. data/spec/unit/provider/dsc_script_spec.rb +1 -1
  1098. data/spec/unit/provider/execute_spec.rb +25 -16
  1099. data/spec/unit/provider/file/content_spec.rb +3 -3
  1100. data/spec/unit/provider/file_spec.rb +2 -1
  1101. data/spec/unit/provider/git_spec.rb +185 -130
  1102. data/spec/unit/provider/group/dscl_spec.rb +39 -31
  1103. data/spec/unit/provider/group/gpasswd_spec.rb +12 -9
  1104. data/spec/unit/provider/group/groupadd_spec.rb +16 -16
  1105. data/spec/unit/provider/group/groupmod_spec.rb +19 -16
  1106. data/spec/unit/provider/group/pw_spec.rb +12 -9
  1107. data/spec/unit/provider/group/suse_spec.rb +2 -2
  1108. data/spec/unit/provider/group/usermod_spec.rb +10 -10
  1109. data/spec/unit/provider/group/windows_spec.rb +18 -3
  1110. data/spec/unit/provider/group_spec.rb +16 -16
  1111. data/spec/unit/provider/http_request_spec.rb +1 -1
  1112. data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
  1113. data/spec/unit/provider/ifconfig/debian_spec.rb +16 -16
  1114. data/spec/unit/provider/ifconfig/redhat_spec.rb +10 -0
  1115. data/spec/unit/provider/ifconfig_spec.rb +33 -15
  1116. data/spec/unit/provider/launchd_spec.rb +52 -52
  1117. data/spec/unit/provider/link_spec.rb +13 -11
  1118. data/spec/unit/provider/log_spec.rb +18 -13
  1119. data/spec/unit/provider/mdadm_spec.rb +3 -3
  1120. data/spec/unit/provider/mount/aix_spec.rb +85 -45
  1121. data/spec/unit/provider/mount/mount_spec.rb +90 -37
  1122. data/spec/unit/provider/mount/solaris_spec.rb +88 -88
  1123. data/spec/unit/provider/mount/windows_spec.rb +6 -6
  1124. data/spec/unit/provider/ohai_spec.rb +9 -9
  1125. data/spec/unit/provider/osx_profile_spec.rb +6 -4
  1126. data/spec/unit/provider/package/apt_spec.rb +576 -447
  1127. data/spec/unit/provider/package/{aix_spec.rb → bff_spec.rb} +45 -43
  1128. data/spec/unit/provider/package/cab_spec.rb +58 -58
  1129. data/spec/unit/provider/package/chocolatey_spec.rb +66 -48
  1130. data/spec/unit/provider/package/dpkg_spec.rb +33 -33
  1131. data/spec/unit/provider/package/freebsd/pkg_spec.rb +36 -36
  1132. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +22 -22
  1133. data/spec/unit/provider/package/freebsd/port_spec.rb +21 -21
  1134. data/spec/unit/provider/package/homebrew_spec.rb +6 -5
  1135. data/spec/unit/provider/package/ips_spec.rb +96 -96
  1136. data/spec/unit/provider/package/macports_spec.rb +27 -27
  1137. data/spec/unit/provider/package/msu_spec.rb +44 -44
  1138. data/spec/unit/provider/package/openbsd_spec.rb +19 -19
  1139. data/spec/unit/provider/package/pacman_spec.rb +52 -52
  1140. data/spec/unit/provider/package/paludis_spec.rb +33 -33
  1141. data/spec/unit/provider/package/portage_spec.rb +27 -163
  1142. data/spec/unit/provider/package/powershell_spec.rb +236 -72
  1143. data/spec/unit/provider/package/rpm_spec.rb +26 -26
  1144. data/spec/unit/provider/package/rubygems_spec.rb +255 -98
  1145. data/spec/unit/provider/package/smartos_spec.rb +21 -21
  1146. data/spec/unit/provider/package/solaris_spec.rb +38 -38
  1147. data/spec/unit/provider/package/windows/exe_spec.rb +2 -2
  1148. data/spec/unit/provider/package/windows/msi_spec.rb +2 -2
  1149. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +78 -0
  1150. data/spec/unit/provider/package/windows_spec.rb +22 -2
  1151. data/{lib/chef/mixin/language_include_recipe.rb → spec/unit/provider/package/yum/python_helper_spec.rb} +8 -10
  1152. data/spec/unit/provider/package/yum/yum_cache_spec.rb +86 -4
  1153. data/spec/unit/provider/package/zypper_spec.rb +207 -68
  1154. data/spec/unit/provider/package_spec.rb +87 -23
  1155. data/spec/unit/provider/powershell_script_spec.rb +16 -6
  1156. data/spec/unit/provider/registry_key_spec.rb +103 -23
  1157. data/spec/unit/provider/remote_directory_spec.rb +1 -1
  1158. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +8 -8
  1159. data/spec/unit/provider/remote_file/content_spec.rb +6 -6
  1160. data/spec/unit/provider/remote_file/fetcher_spec.rb +6 -5
  1161. data/spec/unit/provider/remote_file/ftp_spec.rb +1 -1
  1162. data/spec/unit/provider/remote_file/http_spec.rb +26 -24
  1163. data/spec/unit/provider/remote_file/local_file_spec.rb +2 -2
  1164. data/spec/unit/provider/remote_file/network_file_spec.rb +9 -4
  1165. data/spec/unit/provider/remote_file/sftp_spec.rb +2 -2
  1166. data/spec/unit/provider/remote_file_spec.rb +2 -1
  1167. data/spec/unit/provider/route_spec.rb +36 -14
  1168. data/spec/unit/provider/script_spec.rb +2 -2
  1169. data/spec/unit/provider/service/aix_service_spec.rb +8 -8
  1170. data/spec/unit/provider/service/aixinit_service_spec.rb +4 -4
  1171. data/spec/unit/provider/service/arch_service_spec.rb +36 -36
  1172. data/spec/unit/provider/service/debian_service_spec.rb +42 -168
  1173. data/spec/unit/provider/service/freebsd_service_spec.rb +37 -37
  1174. data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
  1175. data/spec/unit/provider/service/init_service_spec.rb +30 -30
  1176. data/spec/unit/provider/service/insserv_service_spec.rb +4 -4
  1177. data/spec/unit/provider/service/invokercd_service_spec.rb +30 -30
  1178. data/spec/unit/provider/service/macosx_spec.rb +68 -63
  1179. data/spec/unit/provider/service/openbsd_service_spec.rb +12 -12
  1180. data/spec/unit/provider/service/redhat_spec.rb +27 -27
  1181. data/spec/unit/provider/service/simple_service_spec.rb +20 -20
  1182. data/spec/unit/provider/service/solaris_smf_service_spec.rb +54 -17
  1183. data/spec/unit/provider/service/systemd_service_spec.rb +37 -43
  1184. data/spec/unit/provider/service/upstart_service_spec.rb +33 -46
  1185. data/spec/unit/provider/service/windows_spec.rb +517 -70
  1186. data/spec/unit/provider/service_spec.rb +4 -4
  1187. data/spec/unit/provider/subversion_spec.rb +15 -15
  1188. data/spec/unit/provider/systemd_unit_spec.rb +241 -159
  1189. data/spec/unit/provider/template/content_spec.rb +44 -44
  1190. data/spec/unit/provider/template_spec.rb +3 -5
  1191. data/spec/unit/provider/user/aix_spec.rb +96 -0
  1192. data/spec/unit/provider/user/dscl_spec.rb +39 -21
  1193. data/spec/unit/provider/user/linux_spec.rb +5 -43
  1194. data/spec/unit/provider/user/pw_spec.rb +29 -49
  1195. data/spec/unit/provider/user/solaris_spec.rb +8 -9
  1196. data/spec/unit/provider/user/windows_spec.rb +23 -11
  1197. data/spec/unit/provider/user_spec.rb +52 -36
  1198. data/spec/unit/provider/{env_spec.rb → windows_env_spec.rb} +106 -16
  1199. data/spec/unit/provider/windows_path_spec.rb +65 -0
  1200. data/spec/unit/provider/windows_task_spec.rb +435 -0
  1201. data/spec/unit/provider/zypper_repository_spec.rb +126 -0
  1202. data/spec/unit/provider_resolver_spec.rb +41 -54
  1203. data/spec/unit/provider_spec.rb +10 -7
  1204. data/spec/unit/recipe_spec.rb +19 -188
  1205. data/spec/unit/resource/apt_package_spec.rb +19 -1
  1206. data/spec/unit/resource/apt_preference_spec.rb +57 -0
  1207. data/spec/unit/resource/apt_repository_spec.rb +58 -16
  1208. data/spec/unit/resource/apt_update_spec.rb +22 -10
  1209. data/spec/unit/resource/bash_spec.rb +14 -9
  1210. data/spec/unit/resource/batch_spec.rb +2 -5
  1211. data/spec/unit/resource/bff_package_spec.rb +51 -0
  1212. data/spec/unit/resource/breakpoint_spec.rb +30 -13
  1213. data/spec/unit/resource/build_essential_spec.rb +43 -0
  1214. data/spec/unit/resource/cab_package_spec.rb +30 -4
  1215. data/spec/unit/resource/chef_gem_spec.rb +32 -64
  1216. data/spec/unit/resource/chef_handler_spec.rb +40 -0
  1217. data/spec/unit/resource/chocolatey_config_spec.rb +98 -0
  1218. data/spec/unit/resource/chocolatey_package_spec.rb +24 -12
  1219. data/spec/unit/resource/chocolatey_source_spec.rb +102 -0
  1220. data/spec/unit/resource/conditional_spec.rb +5 -5
  1221. data/spec/unit/resource/cookbook_file_spec.rb +36 -31
  1222. data/{lib/chef/mixin/language_include_attribute.rb → spec/unit/resource/cron_access_spec.rb} +14 -12
  1223. data/spec/unit/resource/cron_d_spec.rb +90 -0
  1224. data/spec/unit/resource/cron_spec.rb +73 -86
  1225. data/spec/unit/resource/csh_spec.rb +14 -9
  1226. data/spec/unit/resource/directory_spec.rb +23 -36
  1227. data/spec/unit/resource/{deploy_revision_spec.rb → dmg_package_spec.rb} +15 -18
  1228. data/spec/unit/resource/dnf_package_spec.rb +47 -38
  1229. data/spec/unit/resource/dpkg_package_spec.rb +18 -0
  1230. data/spec/unit/resource/dsc_resource_spec.rb +7 -7
  1231. data/spec/unit/resource/dsc_script_spec.rb +49 -49
  1232. data/spec/unit/resource/execute_spec.rb +47 -19
  1233. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +1 -1
  1234. data/spec/unit/resource/file/verification_spec.rb +27 -19
  1235. data/spec/unit/resource/file_spec.rb +58 -61
  1236. data/spec/unit/resource/freebsd_package_spec.rb +47 -31
  1237. data/spec/unit/resource/gem_package_spec.rb +30 -5
  1238. data/spec/unit/resource/git_spec.rb +23 -11
  1239. data/spec/unit/resource/group_spec.rb +78 -75
  1240. data/spec/unit/resource/homebrew_cask_spec.rb +40 -0
  1241. data/spec/unit/resource/homebrew_package_spec.rb +18 -0
  1242. data/spec/unit/resource/homebrew_tap_spec.rb +44 -0
  1243. data/spec/unit/resource/hostname_spec.rb +47 -0
  1244. data/spec/unit/resource/http_request_spec.rb +23 -17
  1245. data/spec/unit/resource/ifconfig_spec.rb +4 -4
  1246. data/spec/unit/resource/ips_package_spec.rb +21 -7
  1247. data/spec/unit/resource/kernel_module_spec.rb +48 -0
  1248. data/spec/unit/resource/ksh_spec.rb +14 -9
  1249. data/spec/unit/resource/launchd_spec.rb +23 -15
  1250. data/spec/unit/resource/link_spec.rb +52 -62
  1251. data/spec/unit/resource/locale_spec.rb +60 -0
  1252. data/spec/unit/resource/log_spec.rb +22 -31
  1253. data/spec/unit/resource/{timestamped_deploy_spec.rb → macos_user_defaults_spec.rb} +14 -11
  1254. data/spec/unit/resource/macports_package_spec.rb +19 -0
  1255. data/spec/unit/resource/mdadm_spec.rb +41 -44
  1256. data/spec/unit/resource/mount_spec.rb +94 -131
  1257. data/spec/unit/resource/msu_package_spec.rb +25 -11
  1258. data/spec/unit/resource/ohai_hint_spec.rb +44 -0
  1259. data/spec/unit/resource/ohai_spec.rb +17 -16
  1260. data/spec/unit/resource/openbsd_package_spec.rb +24 -14
  1261. data/spec/unit/resource/openssl_dhparam.rb +61 -0
  1262. data/spec/unit/resource/openssl_ec_private_key_spec.rb +64 -0
  1263. data/spec/unit/resource/openssl_ec_public_key_spec.rb +43 -0
  1264. data/spec/unit/resource/openssl_rsa_private_key_spec.rb +64 -0
  1265. data/spec/unit/resource/openssl_rsa_public_key_spec.rb +43 -0
  1266. data/spec/unit/resource/openssl_x509_certificate_spec.rb +72 -0
  1267. data/spec/unit/resource/openssl_x509_crl_spec.rb +61 -0
  1268. data/spec/unit/resource/openssl_x509_request.rb +68 -0
  1269. data/spec/unit/resource/osx_profile_spec.rb +10 -12
  1270. data/spec/unit/resource/package_spec.rb +47 -37
  1271. data/spec/unit/resource/pacman_package_spec.rb +17 -3
  1272. data/spec/unit/resource/paludis_package_spec.rb +36 -0
  1273. data/spec/unit/resource/perl_spec.rb +13 -9
  1274. data/spec/unit/resource/portage_package_spec.rb +18 -10
  1275. data/spec/unit/resource/powershell_package_source_spec.rb +219 -0
  1276. data/spec/unit/resource/powershell_package_spec.rb +42 -12
  1277. data/spec/unit/resource/powershell_script_spec.rb +10 -10
  1278. data/spec/unit/resource/python_spec.rb +10 -10
  1279. data/spec/unit/resource/reboot_spec.rb +47 -0
  1280. data/spec/unit/resource/registry_key_spec.rb +99 -99
  1281. data/spec/unit/resource/remote_directory_spec.rb +50 -42
  1282. data/spec/unit/resource/remote_file_spec.rb +95 -82
  1283. data/spec/unit/resource/resource_notification_spec.rb +8 -8
  1284. data/spec/unit/resource/rhsm_errata_level_spec.rb +50 -0
  1285. data/spec/unit/resource/rhsm_errata_spec.rb +39 -0
  1286. data/spec/unit/resource/rhsm_register_spec.rb +204 -0
  1287. data/spec/unit/resource/rhsm_repo_spec.rb +64 -0
  1288. data/spec/unit/resource/rhsm_subscription_spec.rb +98 -0
  1289. data/spec/unit/resource/route_spec.rb +36 -48
  1290. data/spec/unit/resource/rpm_package_spec.rb +22 -6
  1291. data/spec/unit/resource/ruby_block_spec.rb +15 -18
  1292. data/spec/unit/resource/ruby_spec.rb +9 -10
  1293. data/spec/unit/resource/scm_spec.rb +64 -84
  1294. data/spec/unit/resource/script_spec.rb +10 -2
  1295. data/spec/unit/resource/service_spec.rb +102 -75
  1296. data/spec/unit/resource/smartos_package_spec.rb +21 -2
  1297. data/spec/unit/resource/solaris_package_spec.rb +16 -4
  1298. data/spec/unit/resource/ssh_known_hosts_entry_spec.rb +55 -0
  1299. data/spec/unit/resource/subversion_spec.rb +39 -19
  1300. data/spec/unit/resource/sudo_spec.rb +99 -0
  1301. data/spec/unit/resource/swap_file_spec.rb +39 -0
  1302. data/spec/unit/resource/sysctl_spec.rb +54 -0
  1303. data/spec/unit/resource/systemd_unit_spec.rb +58 -61
  1304. data/spec/unit/resource/template_spec.rb +74 -62
  1305. data/spec/unit/resource/timezone.rb +39 -0
  1306. data/spec/unit/resource/user_spec.rb +45 -56
  1307. data/spec/unit/resource/windows_ad_join_spec.rb +51 -0
  1308. data/spec/unit/resource/windows_auto_run_spec.rb +50 -0
  1309. data/spec/unit/resource/windows_certificate.rb +83 -0
  1310. data/spec/unit/resource/windows_env_spec.rb +75 -0
  1311. data/spec/unit/resource/windows_feature.rb +64 -0
  1312. data/spec/unit/resource/windows_feature_dism.rb +72 -0
  1313. data/spec/unit/resource/windows_feature_powershell.rb +72 -0
  1314. data/spec/unit/resource/windows_firewall_rule_spec.rb +401 -0
  1315. data/spec/unit/resource/windows_font_spec.rb +43 -0
  1316. data/spec/unit/resource/windows_package_spec.rb +16 -6
  1317. data/spec/unit/resource/windows_pagefile_spec.rb +49 -0
  1318. data/spec/unit/resource/windows_path_spec.rb +40 -0
  1319. data/spec/unit/resource/windows_printer_port_spec.rb +62 -0
  1320. data/spec/unit/resource/windows_printer_spec.rb +52 -0
  1321. data/spec/unit/resource/windows_service_spec.rb +49 -5
  1322. data/spec/unit/resource/windows_share.rb +39 -0
  1323. data/spec/unit/resource/windows_shortcut_spec.rb +38 -0
  1324. data/spec/unit/resource/windows_task_spec.rb +399 -0
  1325. data/spec/unit/resource/windows_workgroup_spec.rb +74 -0
  1326. data/spec/unit/resource/yum_package_spec.rb +6 -6
  1327. data/spec/unit/resource/yum_repository_spec.rb +112 -9
  1328. data/spec/unit/resource/zypper_package_spec.rb +51 -0
  1329. data/spec/unit/resource/zypper_repository_spec.rb +115 -0
  1330. data/spec/unit/resource_collection/resource_set_spec.rb +52 -7
  1331. data/spec/unit/resource_collection_spec.rb +17 -8
  1332. data/spec/unit/resource_definition_spec.rb +2 -2
  1333. data/spec/unit/resource_inspector_spec.rb +60 -0
  1334. data/spec/unit/resource_reporter_spec.rb +39 -39
  1335. data/spec/unit/resource_spec.rb +154 -100
  1336. data/spec/unit/role_spec.rb +22 -22
  1337. data/spec/unit/run_context/child_run_context_spec.rb +3 -3
  1338. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
  1339. data/spec/unit/run_context_spec.rb +1 -1
  1340. data/spec/unit/run_list/run_list_item_spec.rb +3 -3
  1341. data/spec/unit/run_list/versioned_recipe_list_spec.rb +19 -16
  1342. data/spec/unit/run_list_spec.rb +6 -6
  1343. data/spec/unit/runner_spec.rb +16 -30
  1344. data/spec/unit/scan_access_control_spec.rb +3 -3
  1345. data/spec/unit/search/query_spec.rb +36 -43
  1346. data/spec/unit/server_api_spec.rb +75 -1
  1347. data/spec/unit/server_api_versions_spec.rb +22 -0
  1348. data/spec/unit/shell/model_wrapper_spec.rb +4 -4
  1349. data/spec/unit/shell/shell_ext_spec.rb +4 -4
  1350. data/spec/unit/shell/shell_session_spec.rb +113 -58
  1351. data/spec/unit/user_spec.rb +3 -3
  1352. data/spec/unit/user_v1_spec.rb +27 -27
  1353. data/spec/unit/util/diff_spec.rb +1 -1
  1354. data/spec/unit/util/dsc/configuration_generator_spec.rb +4 -4
  1355. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +172 -88
  1356. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +77 -24
  1357. data/spec/unit/util/file_edit_spec.rb +38 -38
  1358. data/spec/unit/util/powershell/cmdlet_spec.rb +1 -1
  1359. data/spec/unit/util/selinux_spec.rb +10 -13
  1360. data/spec/unit/util/windows/logon_session_spec.rb +285 -0
  1361. data/spec/unit/version_string_spec.rb +79 -0
  1362. data/spec/unit/win32/error_spec.rb +12 -2
  1363. data/spec/unit/win32/link_spec.rb +73 -0
  1364. data/spec/unit/win32/registry_spec.rb +3 -3
  1365. data/spec/unit/win32/security_spec.rb +69 -1
  1366. data/spec/unit/windows_service_spec.rb +6 -4
  1367. data/tasks/announce.rb +1 -1
  1368. data/tasks/bin/run_external_test +22 -40
  1369. data/tasks/dependencies.rb +21 -114
  1370. data/tasks/maintainers.rb +13 -13
  1371. data/tasks/rspec.rb +3 -3
  1372. data/tasks/templates/prerelease.md.erb +11 -2
  1373. data/tasks/templates/release.md.erb +9 -1
  1374. metadata +335 -404
  1375. data/CONTRIBUTING.md +0 -151
  1376. data/VERSION +0 -1
  1377. data/acceptance/.gitignore +0 -3
  1378. data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +0 -33
  1379. data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +0 -282
  1380. data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +0 -59
  1381. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +0 -68
  1382. data/acceptance/.shared/kitchen_acceptance/metadata.rb +0 -1
  1383. data/acceptance/Gemfile +0 -16
  1384. data/acceptance/Gemfile.lock +0 -258
  1385. data/acceptance/README.md +0 -137
  1386. data/acceptance/basics/.acceptance/acceptance-cookbook/.gitignore +0 -2
  1387. data/acceptance/basics/.acceptance/acceptance-cookbook/metadata.rb +0 -3
  1388. data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/destroy.rb +0 -1
  1389. data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/provision.rb +0 -1
  1390. data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/verify.rb +0 -1
  1391. data/acceptance/basics/.kitchen.yml +0 -4
  1392. data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +0 -19
  1393. data/acceptance/basics/test/integration/chef-current-install/serverspec/spec_helper.rb +0 -6
  1394. data/acceptance/basics/test/integration/helpers/serverspec/Gemfile +0 -8
  1395. data/acceptance/data-collector/.acceptance/acceptance-cookbook/.gitignore +0 -2
  1396. data/acceptance/data-collector/.acceptance/acceptance-cookbook/metadata.rb +0 -3
  1397. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/destroy.rb +0 -2
  1398. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/provision.rb +0 -2
  1399. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/verify.rb +0 -2
  1400. data/acceptance/data-collector/.acceptance/data-collector-test/.gitignore +0 -16
  1401. data/acceptance/data-collector/.acceptance/data-collector-test/Berksfile +0 -3
  1402. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/api.rb +0 -85
  1403. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/apigemfile +0 -3
  1404. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-both-mode.rb +0 -4
  1405. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-client-mode.rb +0 -4
  1406. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-no-endpoint.rb +0 -2
  1407. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-solo-mode.rb +0 -4
  1408. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/config.ru +0 -2
  1409. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +0 -7
  1410. data/acceptance/data-collector/.acceptance/data-collector-test/recipes/default.rb +0 -38
  1411. data/acceptance/data-collector/.kitchen.yml +0 -9
  1412. data/acceptance/data-collector/Berksfile +0 -3
  1413. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +0 -204
  1414. data/acceptance/data-collector/test/integration/helpers/serverspec/Gemfile +0 -8
  1415. data/acceptance/fips/.acceptance/acceptance-cookbook/.gitignore +0 -2
  1416. data/acceptance/fips/.acceptance/acceptance-cookbook/metadata.rb +0 -2
  1417. data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/destroy.rb +0 -1
  1418. data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/provision.rb +0 -1
  1419. data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/verify.rb +0 -1
  1420. data/acceptance/fips/.kitchen.yml +0 -8
  1421. data/acceptance/fips/test/integration/fips-integration/serverspec/Gemfile +0 -9
  1422. data/acceptance/fips/test/integration/fips-integration/serverspec/fips-integration_spec.rb +0 -52
  1423. data/acceptance/fips/test/integration/fips-unit-functional/serverspec/Gemfile +0 -7
  1424. data/acceptance/fips/test/integration/fips-unit-functional/serverspec/fips-unit-functional_spec.rb +0 -56
  1425. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/.gitignore +0 -2
  1426. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/metadata.rb +0 -1
  1427. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/destroy.rb +0 -1
  1428. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/provision.rb +0 -1
  1429. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/verify.rb +0 -61
  1430. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/.gitignore +0 -2
  1431. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/cookbook_kitchen.rb +0 -43
  1432. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +0 -45
  1433. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/metadata.rb +0 -3
  1434. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/destroy.rb +0 -1
  1435. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/provision.rb +0 -1
  1436. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/verify.rb +0 -1
  1437. data/acceptance/top-cookbooks/.gitignore +0 -1
  1438. data/acceptance/top-cookbooks/.kitchen.chocolatey.yml +0 -6
  1439. data/acceptance/top-cookbooks/.kitchen.docker.yml +0 -9
  1440. data/acceptance/top-cookbooks/.kitchen.git.yml +0 -11
  1441. data/acceptance/top-cookbooks/.kitchen.iis.yml +0 -4
  1442. data/acceptance/top-cookbooks/.kitchen.learn-the-basics-rhel.yml +0 -7
  1443. data/acceptance/top-cookbooks/.kitchen.learn-the-basics-ubuntu.yml +0 -7
  1444. data/acceptance/top-cookbooks/.kitchen.learn-the-basics-windows.yml +0 -7
  1445. data/acceptance/top-cookbooks/.kitchen.powershell.yml +0 -4
  1446. data/acceptance/top-cookbooks/.kitchen.sql_server.yml +0 -5
  1447. data/acceptance/top-cookbooks/.kitchen.winbox.yml +0 -8
  1448. data/acceptance/top-cookbooks/.kitchen.windows.yml +0 -38
  1449. data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +0 -2
  1450. data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +0 -2
  1451. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +0 -1
  1452. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +0 -1
  1453. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +0 -1
  1454. data/acceptance/trivial/.kitchen.yml +0 -7
  1455. data/acceptance/trivial/test/integration/chef-current-install/inspec/chef_client_spec.rb +0 -5
  1456. data/acceptance/windows-service/.acceptance/acceptance-cookbook/.gitignore +0 -2
  1457. data/acceptance/windows-service/.acceptance/acceptance-cookbook/metadata.rb +0 -2
  1458. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/destroy.rb +0 -1
  1459. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/provision.rb +0 -1
  1460. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/verify.rb +0 -1
  1461. data/acceptance/windows-service/.kitchen.yml +0 -7
  1462. data/acceptance/windows-service/test/integration/chef-windows-service/inspec/chef_windows_service_spec.rb +0 -58
  1463. data/distro/common/html/_sources/ctl_chef_client.txt +0 -36
  1464. data/distro/common/html/_sources/ctl_chef_server.txt +0 -341
  1465. data/distro/common/html/_sources/ctl_chef_shell.txt +0 -15
  1466. data/distro/common/html/_sources/ctl_chef_solo.txt +0 -25
  1467. data/distro/common/html/_sources/index.txt +0 -135
  1468. data/distro/common/html/_sources/knife.txt +0 -74
  1469. data/distro/common/html/_sources/knife_bootstrap.txt +0 -56
  1470. data/distro/common/html/_sources/knife_client.txt +0 -151
  1471. data/distro/common/html/_sources/knife_common_options.txt +0 -6
  1472. data/distro/common/html/_sources/knife_configure.txt +0 -29
  1473. data/distro/common/html/_sources/knife_cookbook.txt +0 -236
  1474. data/distro/common/html/_sources/knife_cookbook_site.txt +0 -157
  1475. data/distro/common/html/_sources/knife_data_bag.txt +0 -160
  1476. data/distro/common/html/_sources/knife_delete.txt +0 -26
  1477. data/distro/common/html/_sources/knife_deps.txt +0 -61
  1478. data/distro/common/html/_sources/knife_diff.txt +0 -34
  1479. data/distro/common/html/_sources/knife_download.txt +0 -44
  1480. data/distro/common/html/_sources/knife_edit.txt +0 -26
  1481. data/distro/common/html/_sources/knife_environment.txt +0 -158
  1482. data/distro/common/html/_sources/knife_exec.txt +0 -47
  1483. data/distro/common/html/_sources/knife_index_rebuild.txt +0 -21
  1484. data/distro/common/html/_sources/knife_list.txt +0 -33
  1485. data/distro/common/html/_sources/knife_node.txt +0 -250
  1486. data/distro/common/html/_sources/knife_raw.txt +0 -35
  1487. data/distro/common/html/_sources/knife_recipe_list.txt +0 -23
  1488. data/distro/common/html/_sources/knife_role.txt +0 -157
  1489. data/distro/common/html/_sources/knife_search.txt +0 -53
  1490. data/distro/common/html/_sources/knife_serve.txt +0 -19
  1491. data/distro/common/html/_sources/knife_show.txt +0 -27
  1492. data/distro/common/html/_sources/knife_ssh.txt +0 -43
  1493. data/distro/common/html/_sources/knife_ssl_check.txt +0 -41
  1494. data/distro/common/html/_sources/knife_ssl_fetch.txt +0 -41
  1495. data/distro/common/html/_sources/knife_status.txt +0 -37
  1496. data/distro/common/html/_sources/knife_tag.txt +0 -69
  1497. data/distro/common/html/_sources/knife_upload.txt +0 -49
  1498. data/distro/common/html/_sources/knife_user.txt +0 -127
  1499. data/distro/common/html/_sources/knife_using.txt +0 -43
  1500. data/distro/common/html/_sources/knife_xargs.txt +0 -30
  1501. data/distro/common/html/_static/ajax-loader.gif +0 -0
  1502. data/distro/common/html/_static/basic.css +0 -537
  1503. data/distro/common/html/_static/chef.ico +0 -0
  1504. data/distro/common/html/_static/chef_html_logo.png +0 -0
  1505. data/distro/common/html/_static/comment-bright.png +0 -0
  1506. data/distro/common/html/_static/comment-close.png +0 -0
  1507. data/distro/common/html/_static/comment.png +0 -0
  1508. data/distro/common/html/_static/contents.png +0 -0
  1509. data/distro/common/html/_static/doctools.js +0 -238
  1510. data/distro/common/html/_static/down-pressed.png +0 -0
  1511. data/distro/common/html/_static/down.png +0 -0
  1512. data/distro/common/html/_static/file.png +0 -0
  1513. data/distro/common/html/_static/guide.css +0 -505
  1514. data/distro/common/html/_static/jquery.js +0 -2
  1515. data/distro/common/html/_static/minus.png +0 -0
  1516. data/distro/common/html/_static/navigation.png +0 -0
  1517. data/distro/common/html/_static/plus.png +0 -0
  1518. data/distro/common/html/_static/pygments.css +0 -62
  1519. data/distro/common/html/_static/searchtools.js +0 -622
  1520. data/distro/common/html/_static/underscore.js +0 -31
  1521. data/distro/common/html/_static/up-pressed.png +0 -0
  1522. data/distro/common/html/_static/up.png +0 -0
  1523. data/distro/common/html/_static/websupport.js +0 -808
  1524. data/distro/common/html/ctl_chef_client.html +0 -270
  1525. data/distro/common/html/ctl_chef_server.html +0 -728
  1526. data/distro/common/html/ctl_chef_shell.html +0 -163
  1527. data/distro/common/html/ctl_chef_solo.html +0 -194
  1528. data/distro/common/html/index.html +0 -202
  1529. data/distro/common/html/knife.html +0 -170
  1530. data/distro/common/html/knife_bootstrap.html +0 -285
  1531. data/distro/common/html/knife_client.html +0 -285
  1532. data/distro/common/html/knife_common_options.html +0 -96
  1533. data/distro/common/html/knife_configure.html +0 -105
  1534. data/distro/common/html/knife_cookbook.html +0 -487
  1535. data/distro/common/html/knife_cookbook_site.html +0 -375
  1536. data/distro/common/html/knife_data_bag.html +0 -374
  1537. data/distro/common/html/knife_delete.html +0 -93
  1538. data/distro/common/html/knife_deps.html +0 -143
  1539. data/distro/common/html/knife_diff.html +0 -123
  1540. data/distro/common/html/knife_download.html +0 -145
  1541. data/distro/common/html/knife_edit.html +0 -89
  1542. data/distro/common/html/knife_environment.html +0 -322
  1543. data/distro/common/html/knife_exec.html +0 -220
  1544. data/distro/common/html/knife_index_rebuild.html +0 -83
  1545. data/distro/common/html/knife_list.html +0 -114
  1546. data/distro/common/html/knife_node.html +0 -458
  1547. data/distro/common/html/knife_raw.html +0 -110
  1548. data/distro/common/html/knife_recipe_list.html +0 -91
  1549. data/distro/common/html/knife_role.html +0 -295
  1550. data/distro/common/html/knife_search.html +0 -203
  1551. data/distro/common/html/knife_serve.html +0 -79
  1552. data/distro/common/html/knife_show.html +0 -104
  1553. data/distro/common/html/knife_ssh.html +0 -177
  1554. data/distro/common/html/knife_ssl_check.html +0 -151
  1555. data/distro/common/html/knife_ssl_fetch.html +0 -151
  1556. data/distro/common/html/knife_status.html +0 -144
  1557. data/distro/common/html/knife_tag.html +0 -138
  1558. data/distro/common/html/knife_upload.html +0 -153
  1559. data/distro/common/html/knife_user.html +0 -242
  1560. data/distro/common/html/knife_using.html +0 -210
  1561. data/distro/common/html/knife_xargs.html +0 -122
  1562. data/distro/common/html/objects.inv +0 -0
  1563. data/distro/common/html/search.html +0 -82
  1564. data/distro/common/html/searchindex.js +0 -1
  1565. data/distro/common/man/man1/README.md +0 -58
  1566. data/distro/common/man/man1/chef-shell.1 +0 -194
  1567. data/distro/common/man/man1/knife-bootstrap.1 +0 -215
  1568. data/distro/common/man/man1/knife-client.1 +0 -443
  1569. data/distro/common/man/man1/knife-configure.1 +0 -161
  1570. data/distro/common/man/man1/knife-cookbook-site.1 +0 -552
  1571. data/distro/common/man/man1/knife-cookbook.1 +0 -770
  1572. data/distro/common/man/man1/knife-data-bag.1 +0 -617
  1573. data/distro/common/man/man1/knife-delete.1 +0 -127
  1574. data/distro/common/man/man1/knife-deps.1 +0 -246
  1575. data/distro/common/man/man1/knife-diff.1 +0 -226
  1576. data/distro/common/man/man1/knife-download.1 +0 -258
  1577. data/distro/common/man/man1/knife-edit.1 +0 -121
  1578. data/distro/common/man/man1/knife-environment.1 +0 -496
  1579. data/distro/common/man/man1/knife-exec.1 +0 -362
  1580. data/distro/common/man/man1/knife-index-rebuild.1 +0 -63
  1581. data/distro/common/man/man1/knife-list.1 +0 -174
  1582. data/distro/common/man/man1/knife-node.1 +0 -716
  1583. data/distro/common/man/man1/knife-raw.1 +0 -172
  1584. data/distro/common/man/man1/knife-recipe-list.1 +0 -85
  1585. data/distro/common/man/man1/knife-role.1 +0 -426
  1586. data/distro/common/man/man1/knife-search.1 +0 -359
  1587. data/distro/common/man/man1/knife-serve.1 +0 -109
  1588. data/distro/common/man/man1/knife-show.1 +0 -160
  1589. data/distro/common/man/man1/knife-ssh.1 +0 -284
  1590. data/distro/common/man/man1/knife-ssl-check.1 +0 -207
  1591. data/distro/common/man/man1/knife-ssl-fetch.1 +0 -207
  1592. data/distro/common/man/man1/knife-status.1 +0 -234
  1593. data/distro/common/man/man1/knife-tag.1 +0 -189
  1594. data/distro/common/man/man1/knife-upload.1 +0 -280
  1595. data/distro/common/man/man1/knife-user.1 +0 -356
  1596. data/distro/common/man/man1/knife-xargs.1 +0 -189
  1597. data/distro/common/man/man1/knife.1 +0 -332
  1598. data/distro/common/man/man8/chef-apply.8 +0 -86
  1599. data/distro/common/man/man8/chef-client.8 +0 -398
  1600. data/distro/common/man/man8/chef-solo.8 +0 -260
  1601. data/distro/common/markdown/README +0 -3
  1602. data/distro/common/markdown/man1/chef-shell.mkd +0 -195
  1603. data/distro/common/markdown/man1/knife-bootstrap.mkd +0 -141
  1604. data/distro/common/markdown/man1/knife-client.mkd +0 -103
  1605. data/distro/common/markdown/man1/knife-configure.mkd +0 -71
  1606. data/distro/common/markdown/man1/knife-cookbook-site.mkd +0 -123
  1607. data/distro/common/markdown/man1/knife-cookbook.mkd +0 -263
  1608. data/distro/common/markdown/man1/knife-data-bag.mkd +0 -121
  1609. data/distro/common/markdown/man1/knife-environment.mkd +0 -151
  1610. data/distro/common/markdown/man1/knife-exec.mkd +0 -42
  1611. data/distro/common/markdown/man1/knife-index.mkd +0 -30
  1612. data/distro/common/markdown/man1/knife-node.mkd +0 -130
  1613. data/distro/common/markdown/man1/knife-role.mkd +0 -85
  1614. data/distro/common/markdown/man1/knife-search.mkd +0 -180
  1615. data/distro/common/markdown/man1/knife-ssh.mkd +0 -69
  1616. data/distro/common/markdown/man1/knife-status.mkd +0 -36
  1617. data/distro/common/markdown/man1/knife-tag.mkd +0 -39
  1618. data/distro/common/markdown/man1/knife.mkd +0 -213
  1619. data/distro/common/markdown/man8/chef-client.mkd +0 -75
  1620. data/distro/common/markdown/man8/chef-expander.mkd +0 -81
  1621. data/distro/common/markdown/man8/chef-expanderctl.mkd +0 -57
  1622. data/distro/common/markdown/man8/chef-server-webui.mkd +0 -121
  1623. data/distro/common/markdown/man8/chef-server.mkd +0 -120
  1624. data/distro/common/markdown/man8/chef-solo.mkd +0 -107
  1625. data/distro/common/markdown/man8/chef-solr.mkd +0 -89
  1626. data/distro/powershell/chef/chef.psm1 +0 -442
  1627. data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
  1628. data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
  1629. data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
  1630. data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
  1631. data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
  1632. data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
  1633. data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
  1634. data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
  1635. data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
  1636. data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
  1637. data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
  1638. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
  1639. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
  1640. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
  1641. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
  1642. data/lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb +0 -34
  1643. data/lib/chef/deprecation/mixin/template.rb +0 -48
  1644. data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
  1645. data/lib/chef/deprecation/provider/file.rb +0 -198
  1646. data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
  1647. data/lib/chef/deprecation/provider/remote_file.rb +0 -85
  1648. data/lib/chef/deprecation/provider/template.rb +0 -63
  1649. data/lib/chef/dsl/method_missing.rb +0 -75
  1650. data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
  1651. data/lib/chef/knife/help.rb +0 -101
  1652. data/lib/chef/knife/help_topics.rb +0 -4
  1653. data/lib/chef/knife/index_rebuild.rb +0 -133
  1654. data/lib/chef/mixin/command.rb +0 -194
  1655. data/lib/chef/mixin/command/unix.rb +0 -220
  1656. data/lib/chef/mixin/command/windows.rb +0 -71
  1657. data/lib/chef/mixin/language.rb +0 -48
  1658. data/lib/chef/mixin/recipe_definition_dsl_core.rb +0 -35
  1659. data/lib/chef/provider/deploy.rb +0 -476
  1660. data/lib/chef/provider/deploy/revision.rb +0 -107
  1661. data/lib/chef/provider/deploy/timestamped.rb +0 -34
  1662. data/lib/chef/provider/env/windows.rb +0 -72
  1663. data/lib/chef/provider/erl_call.rb +0 -108
  1664. data/lib/chef/provider/package/easy_install.rb +0 -135
  1665. data/lib/chef/provider/package/yum/yum-dump.py +0 -307
  1666. data/lib/chef/resource/deploy.rb +0 -443
  1667. data/lib/chef/resource/deploy_revision.rb +0 -31
  1668. data/lib/chef/resource/env.rb +0 -65
  1669. data/lib/chef/resource/erl_call.rb +0 -85
  1670. data/lib/chef/rest.rb +0 -210
  1671. data/lib/chef/shell_out.rb +0 -13
  1672. data/lib/chef/tasks/chef_repo.rake +0 -200
  1673. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.i686.rpm +0 -0
  1674. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.src.rpm +0 -0
  1675. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.x86_64.rpm +0 -0
  1676. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.i686.rpm +0 -0
  1677. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.src.rpm +0 -0
  1678. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.x86_64.rpm +0 -0
  1679. data/spec/functional/assets/yumrepo/repodata/313329137b55fd333b2dc66394a6661a2befa6cc535d8460d92a4a78a9c581f0-primary.sqlite.bz2 +0 -0
  1680. data/spec/functional/assets/yumrepo/repodata/31ac4db5d5ac593728fcc26aef82b7b93c4cc4dbec843786b1845b939b658553-other.xml.gz +0 -0
  1681. data/spec/functional/assets/yumrepo/repodata/4ac40fa3c6728c1401318e2e20a997436624e83dcf7a5f952b851ef422637773-filelists.sqlite.bz2 +0 -0
  1682. data/spec/functional/assets/yumrepo/repodata/66391e53f0510b98b3f0b79f40ba1048026d9a1ef20905d9c40ba6f5411f3243-primary.xml.gz +0 -0
  1683. data/spec/functional/assets/yumrepo/repodata/8b34697595fcc87928e12d24644dda9462c3857bd932861e28bc77ae1f31be16-filelists.xml.gz +0 -0
  1684. data/spec/functional/assets/yumrepo/repodata/b97cca3fe14bcf06c52be4449b6108f7731239ff221111dcce8aada5467f60dc-other.sqlite.bz2 +0 -0
  1685. data/spec/functional/resource/deploy_revision_spec.rb +0 -881
  1686. data/spec/functional/resource/env_spec.rb +0 -192
  1687. data/spec/functional/resource/user/useradd_spec.rb +0 -709
  1688. data/spec/functional/rest_spec.rb +0 -95
  1689. data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
  1690. data/spec/unit/knife/index_rebuild_spec.rb +0 -125
  1691. data/spec/unit/knife/knife_help.rb +0 -92
  1692. data/spec/unit/lib_backcompat_spec.rb +0 -34
  1693. data/spec/unit/mixin/command_spec.rb +0 -107
  1694. data/spec/unit/platform_spec.rb +0 -269
  1695. data/spec/unit/provider/breakpoint_spec.rb +0 -53
  1696. data/spec/unit/provider/deploy/revision_spec.rb +0 -110
  1697. data/spec/unit/provider/deploy/timestamped_spec.rb +0 -40
  1698. data/spec/unit/provider/deploy_spec.rb +0 -641
  1699. data/spec/unit/provider/env/windows_spec.rb +0 -103
  1700. data/spec/unit/provider/erl_call_spec.rb +0 -85
  1701. data/spec/unit/provider/package/easy_install_spec.rb +0 -114
  1702. data/spec/unit/provider/package/yum_spec.rb +0 -2294
  1703. data/spec/unit/resource/deploy_spec.rb +0 -283
  1704. data/spec/unit/resource/easy_install_package_spec.rb +0 -39
  1705. data/spec/unit/resource/env_spec.rb +0 -85
  1706. data/spec/unit/resource/erl_call_spec.rb +0 -81
  1707. data/spec/unit/rest/auth_credentials_spec.rb +0 -292
  1708. data/spec/unit/rest_spec.rb +0 -753
  1709. data/spec/unit/shell_out_spec.rb +0 -18
  1710. data/tasks/bin/bundle-platform +0 -20
  1711. data/tasks/bin/bundle-platform.bat +0 -2
  1712. data/tasks/bin/bundler_patch.rb +0 -27
  1713. data/tasks/bin/create-override-gemfile +0 -110
  1714. data/tasks/bin/gem-version-diff +0 -37
  1715. data/tasks/bundle.rb +0 -97
  1716. data/tasks/bundle_util.rb +0 -110
  1717. data/tasks/cbgb.rb +0 -84
  1718. data/tasks/changelog.rb +0 -33
  1719. data/tasks/gemfile_util.rb +0 -390
@@ -0,0 +1,324 @@
1
+ #
2
+ # Author:: Sölvi Páll Ásgeirsson (<solvip@gmail.com>)
3
+ # Author:: Richard Lavey (richard.lavey@calastone.com)
4
+ # Author:: Tim Smith (tsmith@chef.io)
5
+ #
6
+ # Copyright:: 2014-2017, Sölvi Páll Ásgeirsson.
7
+ # Copyright:: 2018, Chef Software, Inc.
8
+ #
9
+ # Licensed under the Apache License, Version 2.0 (the "License");
10
+ # you may not use this file except in compliance with the License.
11
+ # You may obtain a copy of the License at
12
+ #
13
+ # http://www.apache.org/licenses/LICENSE-2.0
14
+ #
15
+ # Unless required by applicable law or agreed to in writing, software
16
+ # distributed under the License is distributed on an "AS IS" BASIS,
17
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ # See the License for the specific language governing permissions and
19
+ # limitations under the License.
20
+ #
21
+
22
+ require "chef/resource"
23
+ require "chef/json_compat"
24
+ require "chef/util/path_helper"
25
+
26
+ class Chef
27
+ class Resource
28
+ class WindowsShare < Chef::Resource
29
+ preview_resource true
30
+ resource_name :windows_share
31
+
32
+ description "Use the windows_share resource to create, modify and remove Windows shares."
33
+ introduced "14.7"
34
+
35
+ # Specifies a name for the SMB share. The name may be composed of any valid file name characters, but must be less than 80 characters long. The names pipe and mailslot are reserved for use by the computer.
36
+ property :share_name, String,
37
+ description: "An optional property to set the share name if it differs from the resource block's name.",
38
+ name_property: true
39
+
40
+ # Specifies the path of the location of the folder to share. The path must be fully qualified. Relative paths or paths that contain wildcard characters are not permitted.
41
+ property :path, String,
42
+ description: "The path of the folder to share. Required when creating. If the share already exists on a different path then it is deleted and re-created."
43
+
44
+ # Specifies an optional description of the SMB share. A description of the share is displayed by running the Get-SmbShare cmdlet. The description may not contain more than 256 characters.
45
+ property :description, String,
46
+ description: "The description to be applied to the share.",
47
+ default: ""
48
+
49
+ # Specifies which accounts are granted full permission to access the share. Use a comma-separated list to specify multiple accounts. An account may not be specified more than once in the FullAccess, ChangeAccess, or ReadAccess parameter lists, but may be specified once in the FullAccess, ChangeAccess, or ReadAccess parameter list and once in the NoAccess parameter list.
50
+ property :full_users, Array,
51
+ description: "The users that should have 'Full control' permissions on the share in domain\\username format.",
52
+ default: lazy { [] }, coerce: proc { |u| u.sort }
53
+
54
+ # Specifies which users are granted modify permission to access the share
55
+ property :change_users, Array,
56
+ description: "The users that should have 'modify' permission on the share in domain\\username format.",
57
+ default: lazy { [] }, coerce: proc { |u| u.sort }
58
+
59
+ # Specifies which users are granted read permission to access the share. Multiple users can be specified by supplying a comma-separated list.
60
+ property :read_users, Array,
61
+ description: "The users that should have 'read' permission on the share in domain\\username format.",
62
+ default: lazy { [] }, coerce: proc { |u| u.sort }
63
+
64
+ # Specifies the lifetime of the new SMB share. A temporary share does not persist beyond the next restart of the computer. By default, new SMB shares are persistent, and non-temporary.
65
+ property :temporary, [TrueClass, FalseClass],
66
+ description: "The lifetime of the new SMB share. A temporary share does not persist beyond the next restart of the computer.",
67
+ default: false
68
+
69
+ # Specifies the scope name of the share.
70
+ property :scope_name, String,
71
+ description: "The scope name of the share.",
72
+ default: "*"
73
+
74
+ # Specifies the continuous availability time-out for the share.
75
+ property :ca_timeout, Integer,
76
+ description: "The continuous availability time-out for the share.",
77
+ default: 0
78
+
79
+ # Indicates that the share is continuously available.
80
+ property :continuously_available, [TrueClass, FalseClass],
81
+ description: "Indicates that the share is continuously available.",
82
+ default: false
83
+
84
+ # Specifies the caching mode of the offline files for the SMB share.
85
+ # property :caching_mode, String, equal_to: %w(None Manual Documents Programs BranchCache)
86
+
87
+ # Specifies the maximum number of concurrently connected users that the new SMB share may accommodate. If this parameter is set to zero (0), then the number of users is unlimited.
88
+ property :concurrent_user_limit, Integer,
89
+ description: "The maximum number of concurrently connected users the share can accommodate.",
90
+ default: 0
91
+
92
+ # Indicates that the share is encrypted.
93
+ property :encrypt_data, [TrueClass, FalseClass],
94
+ description: "Indicates that the share is encrypted.",
95
+ default: false
96
+
97
+ # Specifies which files and folders in the SMB share are visible to users. AccessBased: SMB does not the display the files and folders for a share to a user unless that user has rights to access the files and folders. By default, access-based enumeration is disabled for new SMB shares. Unrestricted: SMB displays files and folders to a user even when the user does not have permission to access the items.
98
+ # property :folder_enumeration_mode, String, equal_to: %(AccessBased Unrestricted)
99
+
100
+ include Chef::Mixin::PowershellOut
101
+
102
+ load_current_value do |desired|
103
+ # this command selects individual objects because EncryptData & CachingMode have underlying
104
+ # types that get converted to their Integer values by ConvertTo-Json & we need to make sure
105
+ # those get written out as strings
106
+ share_state_cmd = "Get-SmbShare -Name '#{desired.share_name}' | Select-Object Name,Path, Description, Temporary, CATimeout, ContinuouslyAvailable, ConcurrentUserLimit, EncryptData | ConvertTo-Json -Compress"
107
+
108
+ Chef::Log.debug("Running '#{share_state_cmd}' to determine share state'")
109
+ ps_results = powershell_out(share_state_cmd)
110
+
111
+ # detect a failure without raising and then set current_resource to nil
112
+ if ps_results.error?
113
+ Chef::Log.debug("Error fetching share state: #{ps_results.stderr}")
114
+ current_value_does_not_exist!
115
+ end
116
+
117
+ Chef::Log.debug("The Get-SmbShare results were #{ps_results.stdout}")
118
+ results = Chef::JSONCompat.from_json(ps_results.stdout)
119
+
120
+ path results["Path"]
121
+ description results["Description"]
122
+ temporary results["Temporary"]
123
+ ca_timeout results["CATimeout"]
124
+ continuously_available results["ContinuouslyAvailable"]
125
+ # caching_mode results['CachingMode']
126
+ concurrent_user_limit results["ConcurrentUserLimit"]
127
+ encrypt_data results["EncryptData"]
128
+ # folder_enumeration_mode results['FolderEnumerationMode']
129
+
130
+ perm_state_cmd = %{Get-SmbShareAccess -Name "#{desired.share_name}" | Select-Object AccountName,AccessControlType,AccessRight | ConvertTo-Json -Compress}
131
+
132
+ Chef::Log.debug("Running '#{perm_state_cmd}' to determine share permissions state'")
133
+ ps_perm_results = powershell_out(perm_state_cmd)
134
+
135
+ # we raise here instead of warning like above because we'd only get here if the above Get-SmbShare
136
+ # command was successful and that continuing would leave us with 1/2 known state
137
+ raise "Could not determine #{desired.share_name} share permissions by running '#{perm_state_cmd}'" if ps_perm_results.error?
138
+
139
+ Chef::Log.debug("The Get-SmbShareAccess results were #{ps_perm_results.stdout}")
140
+
141
+ f_users, c_users, r_users = parse_permissions(ps_perm_results.stdout)
142
+
143
+ full_users f_users
144
+ change_users c_users
145
+ read_users r_users
146
+ end
147
+
148
+ def after_created
149
+ raise "The windows_share resource relies on PowerShell cmdlets not present in Windows releases prior to 8/2012. Cannot continue!" if node["platform_version"].to_f < 6.3
150
+ end
151
+
152
+ # given the string output of Get-SmbShareAccess parse out
153
+ # arrays of full access users, change users, and read only users
154
+ def parse_permissions(results_string)
155
+ json_results = Chef::JSONCompat.from_json(results_string)
156
+ json_results = [json_results] unless json_results.is_a?(Array) # single result is not an array
157
+
158
+ f_users = []
159
+ c_users = []
160
+ r_users = []
161
+
162
+ json_results.each do |perm|
163
+ next unless perm["AccessControlType"] == 0 # allow
164
+ case perm["AccessRight"]
165
+ when 0 then f_users << stripped_account(perm["AccountName"]) # 0 full control
166
+ when 1 then c_users << stripped_account(perm["AccountName"]) # 1 == change
167
+ when 2 then r_users << stripped_account(perm["AccountName"]) # 2 == read
168
+ end
169
+ end
170
+ [f_users, c_users, r_users]
171
+ end
172
+
173
+ # local names are returned from Get-SmbShareAccess in the full format MACHINE\\NAME
174
+ # but users of this resource would simply say NAME so we need to strip the values for comparison
175
+ def stripped_account(name)
176
+ name.slice!("#{node['hostname']}\\")
177
+ name
178
+ end
179
+
180
+ action :create do
181
+ description "Create and modify Windows shares."
182
+
183
+ # we do this here instead of requiring the property because :delete doesn't need path set
184
+ raise "No path property set" unless new_resource.path
185
+
186
+ converge_if_changed do
187
+ # you can't actually change the path so you have to delete the old share first
188
+ if different_path?
189
+ Chef::Log.debug("The path has changed so we will delete and recreate share")
190
+ delete_share
191
+ create_share
192
+ elsif current_resource.nil?
193
+ # powershell cmdlet for create is different than updates
194
+ Chef::Log.debug("The current resource is nil so we will create a new share")
195
+ create_share
196
+ else
197
+ Chef::Log.debug("The current resource was not nil so we will update an existing share")
198
+ update_share
199
+ end
200
+
201
+ # creating the share does not set permissions so we need to update
202
+ update_permissions
203
+ end
204
+ end
205
+
206
+ action :delete do
207
+ description "Delete an existing Windows share."
208
+
209
+ if current_resource.nil?
210
+ Chef::Log.debug("#{new_resource.share_name} does not exist - nothing to do")
211
+ else
212
+ converge_by("delete #{new_resource.share_name}") do
213
+ delete_share
214
+ end
215
+ end
216
+ end
217
+
218
+ action_class do
219
+ def different_path?
220
+ return false if current_resource.nil? # going from nil to something isn't different for our concerns
221
+ return false if current_resource.path == Chef::Util::PathHelper.cleanpath(new_resource.path)
222
+ true
223
+ end
224
+
225
+ def delete_share
226
+ delete_command = "Remove-SmbShare -Name '#{new_resource.share_name}' -Force"
227
+
228
+ Chef::Log.debug("Running '#{delete_command}' to remove the share")
229
+ powershell_out!(delete_command)
230
+ end
231
+
232
+ def update_share
233
+ update_command = "Set-SmbShare -Name '#{new_resource.share_name}' -Description '#{new_resource.description}' -Force"
234
+
235
+ Chef::Log.debug("Running '#{update_command}' to update the share")
236
+ powershell_out!(update_command)
237
+ end
238
+
239
+ def create_share
240
+ raise "#{new_resource.path} is missing or not a directory. Shares cannot be created if the path doesn't first exist." unless ::File.directory? new_resource.path
241
+
242
+ share_cmd = "New-SmbShare -Name '#{new_resource.share_name}' -Path '#{Chef::Util::PathHelper.cleanpath(new_resource.path)}' -Description '#{new_resource.description}' -ConcurrentUserLimit #{new_resource.concurrent_user_limit} -CATimeout #{new_resource.ca_timeout} -EncryptData:#{bool_string(new_resource.encrypt_data)} -ContinuouslyAvailable:#{bool_string(new_resource.continuously_available)}"
243
+ share_cmd << " -ScopeName #{new_resource.scope_name}" unless new_resource.scope_name == "*" # passing * causes the command to fail
244
+ share_cmd << " -Temporary:#{bool_string(new_resource.temporary)}" if new_resource.temporary # only set true
245
+
246
+ Chef::Log.debug("Running '#{share_cmd}' to create the share")
247
+ powershell_out!(share_cmd)
248
+
249
+ # New-SmbShare adds the "Everyone" user with read access no matter what so we need to remove it
250
+ # before we add our permissions
251
+ revoke_user_permissions(["Everyone"])
252
+ end
253
+
254
+ # determine what users in the current state don't exist in the desired state
255
+ # users/groups will have their permissions updated with the same command that
256
+ # sets it, but removes must be performed with Revoke-SmbShareAccess
257
+ def users_to_revoke
258
+ @users_to_revoke ||= begin
259
+ # if the resource doesn't exist then nothing needs to be revoked
260
+ if current_resource.nil?
261
+ []
262
+ else # if it exists then calculate the current to new resource diffs
263
+ (current_resource.full_users + current_resource.change_users + current_resource.read_users) - (new_resource.full_users + new_resource.change_users + new_resource.read_users)
264
+ end
265
+ end
266
+ end
267
+
268
+ # update existing permissions on a share
269
+ def update_permissions
270
+ # revoke any users that had something, but now has nothing
271
+ revoke_user_permissions(users_to_revoke) unless users_to_revoke.empty?
272
+
273
+ # set permissions for each of the permission types
274
+ %w{full read change}.each do |perm_type|
275
+ # set permissions for a brand new share OR
276
+ # update permissions if the current state and desired state differ
277
+ next unless permissions_need_update?(perm_type)
278
+ grant_command = "Grant-SmbShareAccess -Name '#{new_resource.share_name}' -AccountName \"#{new_resource.send("#{perm_type}_users").join('","')}\" -Force -AccessRight #{perm_type}"
279
+
280
+ Chef::Log.debug("Running '#{grant_command}' to update the share permissions")
281
+ powershell_out!(grant_command)
282
+ end
283
+ end
284
+
285
+ # determine if permissions need to be updated.
286
+ # Brand new share with no permissions defined: no
287
+ # Brand new share with permissions defined: yes
288
+ # Existing share with differing permissions: yes
289
+ #
290
+ # @param [String] type the permissions type (Full, Read, or Change)
291
+ def permissions_need_update?(type)
292
+ property_name = "#{type}_users"
293
+
294
+ # brand new share, but nothing to set
295
+ return false if current_resource.nil? && new_resource.send(property_name).empty?
296
+
297
+ # brand new share with new permissions to set
298
+ return true if current_resource.nil? && !new_resource.send(property_name).empty?
299
+
300
+ # there's a difference between the current and desired state
301
+ return true unless (new_resource.send(property_name) - current_resource.send(property_name)).empty?
302
+
303
+ # anything else
304
+ false
305
+ end
306
+
307
+ # revoke user permissions from a share
308
+ # @param [Array] users
309
+ def revoke_user_permissions(users)
310
+ revoke_command = "Revoke-SmbShareAccess -Name '#{new_resource.share_name}' -AccountName \"#{users.join('","')}\" -Force"
311
+ Chef::Log.debug("Running '#{revoke_command}' to revoke share permissions")
312
+ powershell_out!(revoke_command)
313
+ end
314
+
315
+ # convert True/False into "$True" & "$False"
316
+ def bool_string(bool)
317
+ # bool ? 1 : 0
318
+ bool ? "$true" : "$false"
319
+ end
320
+ end
321
+
322
+ end
323
+ end
324
+ end
@@ -0,0 +1,79 @@
1
+ #
2
+ # Author:: Doug MacEachern <dougm@vmware.com>
3
+ # Copyright:: 2010-2018, VMware, Inc.
4
+ # Copyright:: 2017-2018, Chef Software, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "chef/resource"
20
+
21
+ class Chef
22
+ class Resource
23
+ class WindowsShortcut < Chef::Resource
24
+ resource_name :windows_shortcut
25
+ provides(:windows_shortcut) { true }
26
+
27
+ description "Use the windows_shortcut resource to create shortcut files on Windows."
28
+ introduced "14.0"
29
+
30
+ property :shortcut_name, String,
31
+ description: "An optional property to set the shortcut name if it differs from the resource block's name.",
32
+ name_property: true
33
+
34
+ property :target, String,
35
+ description: "The destination that the shortcut links to."
36
+
37
+ property :arguments, String,
38
+ description: "Arguments to pass to the target when the shortcut is executed."
39
+
40
+ property :description, String,
41
+ description: "The description of the shortcut"
42
+
43
+ property :cwd, String,
44
+ description: "Working directory to use when the target is executed."
45
+
46
+ property :iconlocation, String,
47
+ description: "Icon to use for the shortcut. Accepts the format of 'path, index', where index is the icon file to use. See https://msdn.microsoft.com/en-us/library/3s9bx7at.aspx for details"
48
+
49
+ load_current_value do |desired|
50
+ require "win32ole" if RUBY_PLATFORM =~ /mswin|mingw32|windows/
51
+
52
+ link = WIN32OLE.new("WScript.Shell").CreateShortcut(desired.shortcut_name)
53
+ name desired.shortcut_name
54
+ target(link.TargetPath)
55
+ arguments(link.Arguments)
56
+ description(link.Description)
57
+ cwd(link.WorkingDirectory)
58
+ iconlocation(link.IconLocation)
59
+ end
60
+
61
+ action :create do
62
+ description "Create or modify a Windows shortcut."
63
+
64
+ converge_if_changed do
65
+ converge_by "creating shortcut #{new_resource.shortcut_name}" do
66
+ link = WIN32OLE.new("WScript.Shell").CreateShortcut(new_resource.shortcut_name)
67
+ link.TargetPath = new_resource.target unless new_resource.target.nil?
68
+ link.Arguments = new_resource.arguments unless new_resource.arguments.nil?
69
+ link.Description = new_resource.description unless new_resource.description.nil?
70
+ link.WorkingDirectory = new_resource.cwd unless new_resource.cwd.nil?
71
+ link.IconLocation = new_resource.iconlocation unless new_resource.iconlocation.nil?
72
+ # ignoring: WindowStyle, Hotkey
73
+ link.Save
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,349 @@
1
+ #
2
+ # Author:: Nimisha Sharad (<nimisha.sharad@msystechnologies.com>)
3
+ # Copyright:: Copyright 2008-2016, Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "chef/resource"
20
+ require "chef/win32/security" if Chef::Platform.windows?
21
+
22
+ class Chef
23
+ class Resource
24
+ class WindowsTask < Chef::Resource
25
+ resource_name :windows_task
26
+ provides(:windows_task) { true }
27
+
28
+ description "Use the windows_task resource to create, delete or run a Windows scheduled task. Requires Windows Server 2008 or later due to API usage."
29
+ introduced "13.0"
30
+
31
+ allowed_actions :create, :delete, :run, :end, :enable, :disable, :change
32
+ default_action :create
33
+
34
+ property :task_name, String, regex: [/\A[^\/\:\*\?\<\>\|]+\z/],
35
+ description: "An optional property to set the task name if it differs from the resource block's name. Example: 'Task Name' or '/Task Name'",
36
+ name_property: true
37
+
38
+ property :command, String,
39
+ description: "The command to be executed by the windows scheduled task."
40
+
41
+ property :cwd, String,
42
+ description: "The directory the task will be run from."
43
+
44
+ property :user, String,
45
+ description: "The user to run the task as.",
46
+ default: lazy { Chef::ReservedNames::Win32::Security::SID.LocalSystem.account_simple_name if Chef::Platform.windows? },
47
+ default_description: "The localized SYSTEM user for the node."
48
+
49
+ property :password, String,
50
+ description: "The user’s password. The user property must be set if using this property."
51
+
52
+ property :run_level, Symbol, equal_to: [:highest, :limited],
53
+ description: "Run with ':limited' or ':highest' privileges.",
54
+ default: :limited
55
+
56
+ property :force, [TrueClass, FalseClass],
57
+ description: "When used with create, will update the task.",
58
+ default: false
59
+
60
+ property :interactive_enabled, [TrueClass, FalseClass],
61
+ description: "Allow task to run interactively or non-interactively. Requires user and password to also be set.",
62
+ default: false
63
+
64
+ property :frequency_modifier, [Integer, String],
65
+ default: 1
66
+
67
+ property :frequency, Symbol, equal_to: [:minute,
68
+ :hourly,
69
+ :daily,
70
+ :weekly,
71
+ :monthly,
72
+ :once,
73
+ :on_logon,
74
+ :onstart,
75
+ :on_idle,
76
+ :none],
77
+ description: "The frequency with which to run the task."
78
+
79
+ property :start_day, String,
80
+ description: "Specifies the first date on which the task runs in MM/DD/YYYY format."
81
+
82
+ property :start_time, String,
83
+ description: "Specifies the start time to run the task, in HH:mm format."
84
+
85
+ property :day, [String, Integer],
86
+ description: "The day(s) on which the task runs."
87
+
88
+ property :months, String,
89
+ description: "The Months of the year on which the task runs, such as: 'JAN, FEB' or '\*'. Multiple months should be comma delimited. e.g. 'Jan, Feb, Mar, Dec'."
90
+
91
+ property :idle_time, Integer,
92
+ description: "For :on_idle frequency, the time (in minutes) without user activity that must pass to trigger the task, from 1 - 999."
93
+
94
+ property :random_delay, [String, Integer],
95
+ description: "Delays the task up to a given time (in seconds)."
96
+
97
+ property :execution_time_limit, [String, Integer],
98
+ description: "The maximum time (in seconds) the task will run.",
99
+ default: "PT72H" # 72 hours in ISO8601 duration format
100
+
101
+ property :minutes_duration, [String, Integer],
102
+ description: ""
103
+
104
+ property :minutes_interval, [String, Integer],
105
+ description: ""
106
+
107
+ property :priority, Integer,
108
+ description: "Use to set Priority Levels range from 0 to 10.",
109
+ default: 7, callbacks: { "should be in range of 0 to 10" => proc { |v| v >= 0 && v <= 10 } }
110
+
111
+ property :disallow_start_if_on_batteries, [TrueClass, FalseClass],
112
+ introduced: "14.4", default: false,
113
+ description: "Disallow start of the task if the system is running on battery power."
114
+
115
+ property :stop_if_going_on_batteries, [TrueClass, FalseClass],
116
+ introduced: "14.4", default: false,
117
+ description: "Scheduled task option when system is switching on battery."
118
+
119
+ property :description, String,
120
+ introduced: "14.7",
121
+ description: "The task description."
122
+
123
+ attr_accessor :exists, :task, :command_arguments
124
+
125
+ VALID_WEEK_DAYS = %w{ mon tue wed thu fri sat sun * }.freeze
126
+ VALID_DAYS_OF_MONTH = ("1".."31").to_a << "last" << "lastday"
127
+ VALID_MONTHS = %w{JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC *}.freeze
128
+ VALID_WEEKS = %w{FIRST SECOND THIRD FOURTH LAST LASTDAY}.freeze
129
+
130
+ def after_created
131
+ if random_delay
132
+ validate_random_delay(random_delay, frequency)
133
+ random_delay(sec_to_min(random_delay))
134
+ end
135
+
136
+ if execution_time_limit
137
+ execution_time_limit(259200) if execution_time_limit == "PT72H"
138
+ raise ArgumentError, "Invalid value passed for `execution_time_limit`. Please pass seconds as an Integer (e.g. 60) or a String with numeric values only (e.g. '60')." unless numeric_value_in_string?(execution_time_limit)
139
+ execution_time_limit(sec_to_min(execution_time_limit))
140
+ end
141
+
142
+ validate_frequency(frequency) if action.include?(:create) || action.include?(:change)
143
+ validate_start_time(start_time, frequency)
144
+ validate_start_day(start_day, frequency) if start_day
145
+ validate_user_and_password(user, password)
146
+ validate_create_frequency_modifier(frequency, frequency_modifier) if frequency_modifier
147
+ validate_create_day(day, frequency, frequency_modifier) if day
148
+ validate_create_months(months, frequency) if months
149
+ validate_frequency_monthly(frequency_modifier, months, day) if frequency == :monthly
150
+ validate_idle_time(idle_time, frequency)
151
+ idempotency_warning_for_frequency_weekly(day, start_day) if frequency == :weekly
152
+ end
153
+
154
+ private
155
+
156
+ ## Resource is not idempotent when day, start_day is not provided with frequency :weekly
157
+ ## we set start_day when not given by user as current date based on which we set the day property for current current date day is monday ..
158
+ ## we set the monday as the day so at next run when new_resource.day is nil and current_resource day is monday due to which udpate gets called
159
+ def idempotency_warning_for_frequency_weekly(day, start_day)
160
+ if start_day.nil? && day.nil?
161
+ logger.warn "To maintain idempotency for frequency :weekly provide start_day, start_time and day."
162
+ end
163
+ end
164
+
165
+ # Validate the passed value is numeric values only if it is a string
166
+ def numeric_value_in_string?(val)
167
+ return true if Integer(val)
168
+ rescue ArgumentError
169
+ false
170
+ end
171
+
172
+ def validate_frequency(frequency)
173
+ if frequency.nil? || !([:minute, :hourly, :daily, :weekly, :monthly, :once, :on_logon, :onstart, :on_idle, :none].include?(frequency))
174
+ raise ArgumentError, "Frequency needs to be provided. Valid frequencies are :minute, :hourly, :daily, :weekly, :monthly, :once, :on_logon, :onstart, :on_idle, :none."
175
+ end
176
+ end
177
+
178
+ def validate_frequency_monthly(frequency_modifier, months, day)
179
+ # validates the frequency :monthly and raises error if frequency_modifier is first, second, thrid etc and day is not provided
180
+ if (frequency_modifier != 1) && (frequency_modifier_includes_days_of_weeks?(frequency_modifier)) && !(day)
181
+ raise ArgumentError, "Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be seprated by comma."
182
+ end
183
+
184
+ # frequency_modifer 2-12 is used to set every (n) months, so using :months propety with frequency_modifer is not valid since they both used to set months.
185
+ # Not checking value 1 here for frequecy_modifier since we are setting that as default value it won't break anything since preference is given to months property
186
+ if (frequency_modifier.to_i.between?(2, 12)) && !(months.nil?)
187
+ raise ArgumentError, "For frequency :monthly either use property months or frequency_modifier to set months."
188
+ end
189
+ end
190
+
191
+ # returns true if frequency_modifer has values First, second, third, fourth, last, lastday
192
+ def frequency_modifier_includes_days_of_weeks?(frequency_modifier)
193
+ frequency_modifier = frequency_modifier.to_s.split(",")
194
+ frequency_modifier.map! { |value| value.strip.upcase }
195
+ (frequency_modifier - VALID_WEEKS).empty?
196
+ end
197
+
198
+ def validate_random_delay(random_delay, frequency)
199
+ if [:on_logon, :onstart, :on_idle, :none].include? frequency
200
+ raise ArgumentError, "`random_delay` property is supported only for frequency :once, :minute, :hourly, :daily, :weekly and :monthly"
201
+ end
202
+
203
+ raise ArgumentError, "Invalid value passed for `random_delay`. Please pass seconds as an Integer (e.g. 60) or a String with numeric values only (e.g. '60')." unless numeric_value_in_string?(random_delay)
204
+ end
205
+
206
+ # @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~f
207
+ def validate_start_day(start_day, frequency)
208
+ if start_day && frequency == :none
209
+ raise ArgumentError, "`start_day` property is not supported with frequency: #{frequency}"
210
+ end
211
+
212
+ # make sure the start_day is in MM/DD/YYYY format: http://rubular.com/r/cgjHemtWl5
213
+ if start_day
214
+ raise ArgumentError, "`start_day` property must be in the MM/DD/YYYY format." unless /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d$/ =~ start_day
215
+ end
216
+ end
217
+
218
+ # @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~
219
+ def validate_start_time(start_time, frequency)
220
+ if start_time
221
+ raise ArgumentError, "`start_time` property is not supported with `frequency :none`" if frequency == :none
222
+ raise ArgumentError, "`start_time` property must be in the HH:mm format (e.g. 6:20pm -> 18:20)." unless /^[0-2][0-9]:[0-5][0-9]$/ =~ start_time
223
+ else
224
+ raise ArgumentError, "`start_time` needs to be provided with `frequency :once`" if frequency == :once
225
+ end
226
+ end
227
+
228
+ # System users will not require a password
229
+ # Other users will require a password if the task is non-interactive.
230
+ #
231
+ # @param [String] user
232
+ # @param [String] password
233
+ #
234
+ def validate_user_and_password(user, password)
235
+ if non_system_user?(user)
236
+ if password.nil? && !interactive_enabled
237
+ raise ArgumentError, "Please provide a password or check if this task needs to be interactive! Valid passwordless users are: '#{Chef::ReservedNames::Win32::Security::SID::SYSTEM_USER.join("', '")}'"
238
+ end
239
+ else
240
+ unless password.nil?
241
+ raise ArgumentError, "Password is not required for system users."
242
+ end
243
+ end
244
+ end
245
+
246
+ # Password is not required for system user and required for non-system user.
247
+ def password_required?(user)
248
+ @password_required ||= (!user.nil? && !Chef::ReservedNames::Win32::Security::SID.system_user?(user))
249
+ end
250
+
251
+ alias non_system_user? password_required?
252
+
253
+ def validate_create_frequency_modifier(frequency, frequency_modifier)
254
+ if ([:on_logon, :onstart, :on_idle, :none].include?(frequency)) && ( frequency_modifier != 1)
255
+ raise ArgumentError, "frequency_modifier property not supported with frequency :#{frequency}"
256
+ end
257
+
258
+ if frequency == :monthly
259
+ unless (1..12).cover?(frequency_modifier.to_i) || frequency_modifier_includes_days_of_weeks?(frequency_modifier)
260
+ raise ArgumentError, "frequency_modifier value #{frequency_modifier} is invalid. Valid values for :monthly frequency are 1 - 12, 'FIRST', 'SECOND', 'THIRD', 'FOURTH', 'LAST'."
261
+ end
262
+ else
263
+ unless frequency.nil? || frequency_modifier.nil?
264
+ frequency_modifier = frequency_modifier.to_i
265
+ min = 1
266
+ max = case frequency
267
+ when :minute
268
+ 1439
269
+ when :hourly
270
+ 23
271
+ when :daily
272
+ 365
273
+ when :weekly
274
+ 52
275
+ else
276
+ min
277
+ end
278
+ unless frequency_modifier.between?(min, max)
279
+ raise ArgumentError, "frequency_modifier value #{frequency_modifier} is invalid. Valid values for :#{frequency} frequency are #{min} - #{max}."
280
+ end
281
+ end
282
+ end
283
+ end
284
+
285
+ def validate_create_day(day, frequency, frequency_modifier)
286
+ raise ArgumentError, "day property is only valid for tasks that run monthly or weekly" unless [:weekly, :monthly].include?(frequency)
287
+
288
+ # This has been verified with schtask.exe https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/schtasks#d-dayday--
289
+ # verified with earlier code if day "*" is given with frequency it raised exception Invalid value for /D option
290
+ raise ArgumentError, "day wild card (*) is only valid with frequency :weekly" if frequency == :monthly && day == "*"
291
+
292
+ if day.is_a?(String) && day.to_i.to_s != day
293
+ days = day.split(",")
294
+ if days_includes_days_of_months?(days)
295
+ # Following error will be raise if day is set as 1-31 and frequency is selected as :weekly since those values are valid with only frequency :monthly
296
+ raise ArgumentError, "day values 1-31 or last is only valid with frequency :monthly" if frequency == :weekly
297
+ else
298
+ days.map! { |day| day.to_s.strip.downcase }
299
+ unless (days - VALID_WEEK_DAYS).empty?
300
+ raise ArgumentError, "day property invalid. Only valid values are: #{VALID_WEEK_DAYS.map(&:upcase).join(', ')}. Multiple values must be separated by a comma."
301
+ end
302
+ end
303
+ end
304
+ end
305
+
306
+ def validate_create_months(months, frequency)
307
+ raise ArgumentError, "months property is only valid for tasks that run monthly" if frequency != :monthly
308
+ if months.is_a?(String)
309
+ months = months.split(",")
310
+ months.map! { |month| month.strip.upcase }
311
+ unless (months - VALID_MONTHS).empty?
312
+ raise ArgumentError, "months property invalid. Only valid values are: #{VALID_MONTHS.join(', ')}. Multiple values must be separated by a comma."
313
+ end
314
+ end
315
+ end
316
+
317
+ # This method returns true if day has values from 1-31 which is a days of moths and used with frequency :monthly
318
+ def days_includes_days_of_months?(days)
319
+ days.map! { |day| day.to_s.strip.downcase }
320
+ (days - VALID_DAYS_OF_MONTH).empty?
321
+ end
322
+
323
+ def validate_idle_time(idle_time, frequency)
324
+ if !idle_time.nil? && frequency != :on_idle
325
+ raise ArgumentError, "idle_time property is only valid for tasks that run on_idle"
326
+ end
327
+ if idle_time.nil? && frequency == :on_idle
328
+ raise ArgumentError, "idle_time value should be set for :on_idle frequency."
329
+ end
330
+ unless idle_time.nil? || idle_time > 0 && idle_time <= 999
331
+ raise ArgumentError, "idle_time value #{idle_time} is invalid. Valid values for :on_idle frequency are 1 - 999."
332
+ end
333
+ end
334
+
335
+ # Converts the number of seconds to an ISO8601 duration format and returns it.
336
+ # Ref : https://github.com/arnau/ISO8601/blob/master/lib/iso8601/duration.rb#L18-L23
337
+ # e.g.
338
+ # ISO8601::Duration.new(65707200).to_s
339
+ # returns 'PT65707200S'
340
+ def sec_to_dur(seconds)
341
+ ISO8601::Duration.new(seconds.to_i).to_s
342
+ end
343
+
344
+ def sec_to_min(seconds)
345
+ seconds.to_i / 60
346
+ end
347
+ end
348
+ end
349
+ end