chef 16.0.257 → 16.2.44

Sign up to get free protection for your applications and to get access to all the features.
Files changed (389) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/README.md +3 -3
  4. data/Rakefile +44 -16
  5. data/chef.gemspec +4 -4
  6. data/lib/chef/application/apply.rb +2 -2
  7. data/lib/chef/application/base.rb +1 -1
  8. data/lib/chef/application/client.rb +1 -1
  9. data/lib/chef/application/exit_code.rb +2 -2
  10. data/lib/chef/application/windows_service_manager.rb +1 -1
  11. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  12. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  13. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  14. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  18. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +4 -4
  21. data/lib/chef/cookbook/chefignore.rb +1 -1
  22. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  23. data/lib/chef/cookbook/metadata.rb +2 -2
  24. data/lib/chef/cookbook_loader.rb +1 -1
  25. data/lib/chef/cookbook_manifest.rb +1 -1
  26. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  27. data/lib/chef/cookbook_version.rb +7 -7
  28. data/lib/chef/data_bag.rb +4 -4
  29. data/lib/chef/data_collector.rb +1 -1
  30. data/lib/chef/data_collector/error_handlers.rb +1 -1
  31. data/lib/chef/decorator/lazy_array.rb +2 -2
  32. data/lib/chef/deprecated.rb +5 -1
  33. data/lib/chef/digester.rb +4 -4
  34. data/lib/chef/dsl/declare_resource.rb +1 -1
  35. data/lib/chef/dsl/platform_introspection.rb +1 -1
  36. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  37. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  38. data/lib/chef/file_access_control.rb +1 -1
  39. data/lib/chef/formatters/base.rb +1 -1
  40. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  41. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  42. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  43. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  44. data/lib/chef/http.rb +18 -3
  45. data/lib/chef/http/decompressor.rb +1 -1
  46. data/lib/chef/http/http_request.rb +1 -1
  47. data/lib/chef/http/json_output.rb +1 -1
  48. data/lib/chef/http/ssl_policies.rb +18 -0
  49. data/lib/chef/json_compat.rb +1 -1
  50. data/lib/chef/key.rb +1 -1
  51. data/lib/chef/knife.rb +2 -2
  52. data/lib/chef/knife/bootstrap.rb +13 -16
  53. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  54. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  55. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  56. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  57. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  58. data/lib/chef/knife/config_get.rb +1 -1
  59. data/lib/chef/knife/cookbook_delete.rb +1 -1
  60. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  61. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  62. data/lib/chef/knife/core/node_presenter.rb +1 -1
  63. data/lib/chef/knife/core/status_presenter.rb +1 -1
  64. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  65. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
  66. data/lib/chef/knife/data_bag_create.rb +1 -1
  67. data/lib/chef/knife/environment_compare.rb +1 -1
  68. data/lib/chef/knife/key_create_base.rb +1 -1
  69. data/lib/chef/knife/key_edit_base.rb +1 -1
  70. data/lib/chef/knife/list.rb +1 -1
  71. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  72. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  73. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  74. data/lib/chef/knife/ssh.rb +2 -2
  75. data/lib/chef/knife/supermarket_install.rb +1 -1
  76. data/lib/chef/knife/supermarket_share.rb +1 -1
  77. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  78. data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
  79. data/lib/chef/knife/yaml_convert.rb +2 -2
  80. data/lib/chef/log.rb +1 -1
  81. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  82. data/lib/chef/mixin/checksum.rb +0 -1
  83. data/lib/chef/mixin/create_path.rb +8 -8
  84. data/lib/chef/mixin/openssl_helper.rb +4 -4
  85. data/lib/chef/mixin/properties.rb +4 -2
  86. data/lib/chef/mixin/securable.rb +2 -2
  87. data/lib/chef/mixin/shell_out.rb +1 -1
  88. data/lib/chef/node/attribute.rb +2 -2
  89. data/lib/chef/node/immutable_collections.rb +1 -1
  90. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  91. data/lib/chef/policy_builder/policyfile.rb +1 -1
  92. data/lib/chef/powershell.rb +1 -1
  93. data/lib/chef/property.rb +2 -2
  94. data/lib/chef/provider.rb +3 -3
  95. data/lib/chef/provider/batch.rb +3 -10
  96. data/lib/chef/provider/cron.rb +2 -14
  97. data/lib/chef/provider/directory.rb +1 -1
  98. data/lib/chef/provider/execute.rb +3 -2
  99. data/lib/chef/provider/file.rb +1 -1
  100. data/lib/chef/provider/group/dscl.rb +2 -2
  101. data/lib/chef/provider/group/windows.rb +1 -1
  102. data/lib/chef/provider/ifconfig.rb +7 -7
  103. data/lib/chef/provider/launchd.rb +28 -32
  104. data/lib/chef/provider/mount/aix.rb +1 -1
  105. data/lib/chef/provider/mount/windows.rb +2 -2
  106. data/lib/chef/provider/noop.rb +1 -1
  107. data/lib/chef/provider/package/cab.rb +1 -1
  108. data/lib/chef/provider/package/chocolatey.rb +1 -1
  109. data/lib/chef/provider/package/dpkg.rb +1 -1
  110. data/lib/chef/provider/package/freebsd/base.rb +2 -1
  111. data/lib/chef/provider/package/homebrew.rb +1 -1
  112. data/lib/chef/provider/package/macports.rb +0 -2
  113. data/lib/chef/provider/package/openbsd.rb +1 -1
  114. data/lib/chef/provider/package/portage.rb +3 -2
  115. data/lib/chef/provider/package/powershell.rb +6 -2
  116. data/lib/chef/provider/package/rubygems.rb +3 -3
  117. data/lib/chef/provider/package/snap.rb +96 -27
  118. data/lib/chef/provider/package/windows.rb +27 -52
  119. data/lib/chef/provider/package/windows/msi.rb +3 -3
  120. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  121. data/lib/chef/provider/package/yum.rb +1 -1
  122. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  123. data/lib/chef/provider/powershell_script.rb +11 -15
  124. data/lib/chef/provider/remote_directory.rb +2 -2
  125. data/lib/chef/provider/remote_file/http.rb +4 -1
  126. data/lib/chef/provider/script.rb +4 -75
  127. data/lib/chef/provider/service/arch.rb +2 -2
  128. data/lib/chef/provider/service/debian.rb +2 -2
  129. data/lib/chef/provider/service/macosx.rb +13 -2
  130. data/lib/chef/provider/service/openbsd.rb +4 -4
  131. data/lib/chef/provider/service/redhat.rb +1 -1
  132. data/lib/chef/provider/service/simple.rb +3 -3
  133. data/lib/chef/provider/service/upstart.rb +1 -1
  134. data/lib/chef/provider/service/windows.rb +1 -1
  135. data/lib/chef/provider/subversion.rb +2 -2
  136. data/lib/chef/provider/user/aix.rb +1 -1
  137. data/lib/chef/provider/user/dscl.rb +7 -7
  138. data/lib/chef/provider/user/linux.rb +3 -3
  139. data/lib/chef/provider/user/mac.rb +15 -11
  140. data/lib/chef/provider/windows_script.rb +87 -25
  141. data/lib/chef/provider/windows_task.rb +5 -3
  142. data/lib/chef/provider/zypper_repository.rb +30 -10
  143. data/lib/chef/resource.rb +25 -14
  144. data/lib/chef/resource/alternatives.rb +65 -4
  145. data/lib/chef/resource/apt_package.rb +31 -2
  146. data/lib/chef/resource/apt_preference.rb +34 -5
  147. data/lib/chef/resource/apt_repository.rb +22 -15
  148. data/lib/chef/resource/apt_update.rb +6 -4
  149. data/lib/chef/resource/archive_file.rb +33 -12
  150. data/lib/chef/resource/bash.rb +1 -2
  151. data/lib/chef/resource/batch.rb +5 -3
  152. data/lib/chef/resource/bff_package.rb +1 -1
  153. data/lib/chef/resource/breakpoint.rb +1 -1
  154. data/lib/chef/resource/build_essential.rb +8 -4
  155. data/lib/chef/resource/cab_package.rb +1 -1
  156. data/lib/chef/resource/chef_client_cron.rb +12 -9
  157. data/lib/chef/resource/chef_client_scheduled_task.rb +22 -7
  158. data/lib/chef/resource/chef_client_systemd_timer.rb +10 -7
  159. data/lib/chef/resource/chef_gem.rb +6 -2
  160. data/lib/chef/resource/chef_handler.rb +3 -3
  161. data/lib/chef/resource/chef_sleep.rb +7 -4
  162. data/lib/chef/resource/chef_vault_secret.rb +4 -4
  163. data/lib/chef/resource/chocolatey_config.rb +5 -3
  164. data/lib/chef/resource/chocolatey_feature.rb +5 -3
  165. data/lib/chef/resource/chocolatey_package.rb +5 -3
  166. data/lib/chef/resource/chocolatey_source.rb +5 -3
  167. data/lib/chef/resource/cookbook_file.rb +3 -2
  168. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  169. data/lib/chef/resource/cron/cron.rb +46 -0
  170. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +28 -94
  171. data/lib/chef/resource/cron_access.rb +17 -6
  172. data/lib/chef/resource/csh.rb +1 -2
  173. data/lib/chef/resource/directory.rb +1 -1
  174. data/lib/chef/resource/dmg_package.rb +18 -15
  175. data/lib/chef/resource/dnf_package.rb +1 -1
  176. data/lib/chef/resource/dpkg_package.rb +1 -1
  177. data/lib/chef/resource/execute.rb +479 -9
  178. data/lib/chef/resource/file.rb +11 -8
  179. data/lib/chef/resource/freebsd_package.rb +2 -2
  180. data/lib/chef/resource/gem_package.rb +6 -6
  181. data/lib/chef/resource/group.rb +1 -1
  182. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  183. data/lib/chef/resource/homebrew_cask.rb +1 -1
  184. data/lib/chef/resource/homebrew_package.rb +30 -1
  185. data/lib/chef/resource/homebrew_tap.rb +1 -1
  186. data/lib/chef/resource/homebrew_update.rb +107 -0
  187. data/lib/chef/resource/hostname.rb +11 -24
  188. data/lib/chef/resource/http_request.rb +1 -1
  189. data/lib/chef/resource/ifconfig.rb +7 -7
  190. data/lib/chef/resource/ips_package.rb +1 -1
  191. data/lib/chef/resource/kernel_module.rb +15 -2
  192. data/lib/chef/resource/ksh.rb +1 -1
  193. data/lib/chef/resource/launchd.rb +5 -5
  194. data/lib/chef/resource/link.rb +4 -4
  195. data/lib/chef/resource/locale.rb +4 -4
  196. data/lib/chef/resource/log.rb +1 -1
  197. data/lib/chef/resource/macos_userdefaults.rb +15 -10
  198. data/lib/chef/resource/macosx_service.rb +1 -1
  199. data/lib/chef/resource/macports_package.rb +1 -1
  200. data/lib/chef/resource/mdadm.rb +1 -1
  201. data/lib/chef/resource/mount.rb +2 -2
  202. data/lib/chef/resource/msu_package.rb +2 -2
  203. data/lib/chef/resource/ohai.rb +1 -1
  204. data/lib/chef/resource/ohai_hint.rb +1 -1
  205. data/lib/chef/resource/openbsd_package.rb +1 -1
  206. data/lib/chef/resource/openssl_dhparam.rb +1 -1
  207. data/lib/chef/resource/openssl_ec_private_key.rb +1 -1
  208. data/lib/chef/resource/openssl_ec_public_key.rb +1 -1
  209. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  210. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -1
  211. data/lib/chef/resource/openssl_x509_certificate.rb +1 -1
  212. data/lib/chef/resource/openssl_x509_crl.rb +1 -1
  213. data/lib/chef/resource/openssl_x509_request.rb +1 -1
  214. data/lib/chef/resource/osx_profile.rb +1 -1
  215. data/lib/chef/resource/package.rb +1 -1
  216. data/lib/chef/resource/pacman_package.rb +1 -1
  217. data/lib/chef/resource/paludis_package.rb +1 -1
  218. data/lib/chef/resource/perl.rb +1 -2
  219. data/lib/chef/resource/plist.rb +24 -5
  220. data/lib/chef/resource/portage_package.rb +1 -1
  221. data/lib/chef/resource/powershell_package.rb +1 -1
  222. data/lib/chef/resource/powershell_package_source.rb +1 -1
  223. data/lib/chef/resource/powershell_script.rb +5 -3
  224. data/lib/chef/resource/python.rb +1 -2
  225. data/lib/chef/resource/reboot.rb +1 -1
  226. data/lib/chef/resource/registry_key.rb +1 -1
  227. data/lib/chef/resource/remote_directory.rb +1 -1
  228. data/lib/chef/resource/remote_file.rb +26 -11
  229. data/lib/chef/resource/rhsm_errata.rb +1 -3
  230. data/lib/chef/resource/rhsm_errata_level.rb +1 -1
  231. data/lib/chef/resource/rhsm_register.rb +1 -2
  232. data/lib/chef/resource/rhsm_repo.rb +1 -2
  233. data/lib/chef/resource/rhsm_subscription.rb +1 -3
  234. data/lib/chef/resource/route.rb +1 -1
  235. data/lib/chef/resource/rpm_package.rb +5 -2
  236. data/lib/chef/resource/ruby.rb +1 -2
  237. data/lib/chef/resource/ruby_block.rb +1 -4
  238. data/lib/chef/resource/scm/_scm.rb +4 -3
  239. data/lib/chef/resource/scm/git.rb +2 -2
  240. data/lib/chef/resource/scm/subversion.rb +2 -2
  241. data/lib/chef/resource/script.rb +1 -1
  242. data/lib/chef/resource/service.rb +1 -1
  243. data/lib/chef/resource/smartos_package.rb +1 -1
  244. data/lib/chef/resource/snap_package.rb +1 -1
  245. data/lib/chef/resource/solaris_package.rb +1 -1
  246. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  247. data/lib/chef/resource/sudo.rb +4 -4
  248. data/lib/chef/resource/swap_file.rb +2 -2
  249. data/lib/chef/resource/sysctl.rb +61 -2
  250. data/lib/chef/resource/systemd_unit.rb +2 -2
  251. data/lib/chef/resource/template.rb +1 -1
  252. data/lib/chef/resource/timezone.rb +1 -1
  253. data/lib/chef/resource/user.rb +2 -2
  254. data/lib/chef/resource/user_ulimit.rb +24 -22
  255. data/lib/chef/resource/windows_ad_join.rb +31 -2
  256. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  257. data/lib/chef/resource/windows_auto_run.rb +13 -2
  258. data/lib/chef/resource/windows_certificate.rb +28 -2
  259. data/lib/chef/resource/windows_dfs_folder.rb +1 -1
  260. data/lib/chef/resource/windows_dfs_namespace.rb +1 -1
  261. data/lib/chef/resource/windows_dfs_server.rb +2 -2
  262. data/lib/chef/resource/windows_env.rb +10 -1
  263. data/lib/chef/resource/windows_feature.rb +57 -2
  264. data/lib/chef/resource/windows_feature_dism.rb +15 -2
  265. data/lib/chef/resource/windows_feature_powershell.rb +29 -2
  266. data/lib/chef/resource/windows_firewall_rule.rb +11 -7
  267. data/lib/chef/resource/windows_font.rb +13 -4
  268. data/lib/chef/resource/windows_package.rb +66 -6
  269. data/lib/chef/resource/windows_pagefile.rb +32 -4
  270. data/lib/chef/resource/windows_path.rb +18 -1
  271. data/lib/chef/resource/windows_printer.rb +26 -6
  272. data/lib/chef/resource/windows_printer_port.rb +29 -1
  273. data/lib/chef/resource/windows_script.rb +2 -16
  274. data/lib/chef/resource/windows_security_policy.rb +47 -16
  275. data/lib/chef/resource/windows_service.rb +1 -1
  276. data/lib/chef/resource/windows_share.rb +23 -3
  277. data/lib/chef/resource/windows_shortcut.rb +13 -3
  278. data/lib/chef/resource/windows_task.rb +143 -29
  279. data/lib/chef/resource/windows_uac.rb +20 -1
  280. data/lib/chef/resource/windows_user_privilege.rb +45 -3
  281. data/lib/chef/resource/windows_workgroup.rb +19 -3
  282. data/lib/chef/resource/yum_package.rb +88 -6
  283. data/lib/chef/resource/yum_repository.rb +36 -19
  284. data/lib/chef/resource/zypper_package.rb +29 -3
  285. data/lib/chef/resource/zypper_repository.rb +17 -5
  286. data/lib/chef/resource_inspector.rb +5 -4
  287. data/lib/chef/resources.rb +4 -2
  288. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  289. data/lib/chef/scan_access_control.rb +1 -1
  290. data/lib/chef/search/query.rb +1 -1
  291. data/lib/chef/shell/ext.rb +1 -1
  292. data/lib/chef/util/diff.rb +2 -2
  293. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  294. data/lib/chef/util/windows/net_user.rb +1 -1
  295. data/lib/chef/util/windows/volume.rb +1 -1
  296. data/lib/chef/version.rb +1 -1
  297. data/lib/chef/win32/api.rb +2 -2
  298. data/lib/chef/win32/api/error.rb +3 -1
  299. data/lib/chef/win32/api/file.rb +18 -18
  300. data/lib/chef/win32/api/net.rb +1 -0
  301. data/lib/chef/win32/file.rb +1 -1
  302. data/lib/chef/win32/mutex.rb +1 -1
  303. data/lib/chef/win32/net.rb +1 -0
  304. data/lib/chef/win32/process.rb +2 -2
  305. data/lib/chef/win32/registry.rb +2 -2
  306. data/lib/chef/win32/security.rb +1 -1
  307. data/lib/chef/win32/security/sid.rb +4 -4
  308. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  309. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  310. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  311. data/spec/functional/resource/cron_spec.rb +10 -0
  312. data/spec/functional/resource/dnf_package_spec.rb +2 -2
  313. data/spec/functional/resource/git_spec.rb +6 -6
  314. data/spec/functional/resource/launchd_spec.rb +232 -0
  315. data/spec/functional/resource/link_spec.rb +3 -3
  316. data/spec/functional/resource/remote_file_spec.rb +3 -3
  317. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  318. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  319. data/spec/functional/resource/windows_task_spec.rb +12 -12
  320. data/spec/integration/knife/raw_spec.rb +4 -4
  321. data/spec/integration/knife/redirection_spec.rb +2 -2
  322. data/spec/support/chef_helpers.rb +1 -1
  323. data/spec/support/platform_helpers.rb +1 -14
  324. data/spec/support/platforms/win32/spec_service.rb +1 -1
  325. data/spec/support/shared/functional/execute_resource.rb +1 -1
  326. data/spec/support/shared/functional/file_resource.rb +1 -1
  327. data/spec/support/shared/functional/http.rb +2 -2
  328. data/spec/support/shared/functional/windows_script.rb +1 -1
  329. data/spec/support/shared/unit/execute_resource.rb +1 -1
  330. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  331. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  332. data/spec/unit/application_spec.rb +7 -0
  333. data/spec/unit/data_bag_spec.rb +1 -1
  334. data/spec/unit/file_access_control_spec.rb +1 -1
  335. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  336. data/spec/unit/knife/bootstrap_spec.rb +2 -2
  337. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  338. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  339. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  340. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  341. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  342. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  343. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  344. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  345. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  346. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  347. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  348. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  349. data/spec/unit/mixin/shell_out_spec.rb +25 -31
  350. data/spec/unit/mixin/user_context_spec.rb +1 -9
  351. data/spec/unit/node/attribute_spec.rb +1 -1
  352. data/spec/unit/property_spec.rb +1 -1
  353. data/spec/unit/provider/apt_repository_spec.rb +27 -27
  354. data/spec/unit/provider/batch_spec.rb +130 -0
  355. data/spec/unit/provider/cron_spec.rb +9 -49
  356. data/spec/unit/provider/git_spec.rb +3 -3
  357. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  358. data/spec/unit/provider/launchd_spec.rb +8 -50
  359. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  360. data/spec/unit/provider/package/msu_spec.rb +3 -3
  361. data/spec/unit/provider/package/portage_spec.rb +2 -2
  362. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  363. data/spec/unit/provider/package/snap_spec.rb +1 -1
  364. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  365. data/spec/unit/provider/script_spec.rb +20 -110
  366. data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
  367. data/spec/unit/provider/zypper_repository_spec.rb +75 -25
  368. data/spec/unit/provider_resolver_spec.rb +11 -11
  369. data/spec/unit/resource/archive_file_spec.rb +11 -2
  370. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  371. data/spec/unit/resource/cron_spec.rb +2 -2
  372. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  373. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  374. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  375. data/spec/unit/resource/timezone_spec.rb +1 -1
  376. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  377. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  378. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  379. data/spec/unit/resource/windows_package_spec.rb +10 -0
  380. data/spec/unit/resource/windows_task_spec.rb +1 -1
  381. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  382. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  383. data/spec/unit/resource_spec.rb +67 -1
  384. data/spec/unit/run_context_spec.rb +1 -1
  385. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  386. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  387. data/spec/unit/win32/registry_spec.rb +1 -1
  388. metadata +28 -27
  389. data/lib/chef/resource/cron.rb +0 -157
@@ -28,11 +28,72 @@ class Chef
28
28
 
29
29
  description "The alternatives resource allows for configuration of command alternatives in Linux using the alternatives or update-alternatives packages."
30
30
  introduced "16.0"
31
+ examples <<~DOC
32
+ **Install an alternative**:
33
+
34
+ ```ruby
35
+ alternatives 'python install 2' do
36
+ link_name 'python'
37
+ path '/usr/bin/python2.7'
38
+ priority 100
39
+ action :install
40
+ end
41
+ ```
42
+
43
+ **Set an alternative**:
44
+
45
+ ```ruby
46
+ alternatives 'python set version 3' do
47
+ link_name 'python'
48
+ path '/usr/bin/python3'
49
+ action :set
50
+ end
51
+ ```
52
+
53
+ **Set the automatic alternative state**:
54
+
55
+ ```ruby
56
+ alternatives 'python auto' do
57
+ link_name 'python'
58
+ action :auto
59
+ end
60
+ ```
61
+
62
+ **Refresh an alternative**:
63
+
64
+ ```ruby
65
+ alternatives 'python refresh' do
66
+ link_name 'python'
67
+ action :refresh
68
+ end
69
+ ```
70
+
71
+ **Remove an alternative**:
72
+
73
+ ```ruby
74
+ alternatives 'python remove' do
75
+ link_name 'python'
76
+ path '/usr/bin/python3'
77
+ action :remove
78
+ end
79
+ ```
80
+ DOC
81
+
82
+ property :link_name, String,
83
+ name_property: true,
84
+ description: "The name of the link to create. This will be the command you type on the command line such as `ruby` or `gcc`."
85
+
86
+ property :link, String,
87
+ default: lazy { |n| "/usr/bin/#{n.link_name}" },
88
+ default_description: "/usr/bin/LINK_NAME",
89
+ description: "The path to the alternatives link."
90
+
91
+ property :path, String,
92
+ description: "The full path to the original application binary such as `/usr/bin/ruby27`."
31
93
 
32
- property :link_name, String, name_property: true
33
- property :link, String, default: lazy { |n| "/usr/bin/#{n.link_name}" }
34
- property :path, String
35
- property :priority, [String, Integer], coerce: proc { |n| n.to_i }
94
+ property :priority, [String, Integer],
95
+ coerce: proc { |n| n.to_i },
96
+ description: "The priority of the alternative."
36
97
 
37
98
  def define_resource_requirements
38
99
  requirements.assert(:install) do |a|
@@ -25,11 +25,40 @@ class Chef
25
25
 
26
26
  provides :apt_package, target_mode: true
27
27
  provides :package, platform_family: "debian", target_mode: true
28
+ examples <<~DOC
29
+ **Install a package using package manager**:
28
30
 
29
- description "Use the apt_package resource to manage packages on Debian and Ubuntu platforms."
31
+ ```ruby
32
+ apt_package 'name of package' do
33
+ action :install
34
+ end
35
+ ```
36
+
37
+ **Install a package without specifying the default action**:
38
+
39
+ ```ruby
40
+ apt_package 'name of package'
41
+ ```
42
+
43
+ **Install multiple packages at once**:
44
+
45
+ ```ruby
46
+ apt_package %(package1 package2 package3)
47
+ ```
48
+
49
+ **Install without using recommend packages as a dependency**:
50
+
51
+ ```ruby
52
+ package 'apache2' do
53
+ options '--no-install-recommends'
54
+ end
55
+ ```
56
+ DOC
57
+
58
+ description "Use the **apt_package** resource to manage packages on Debian and Ubuntu platforms."
30
59
 
31
60
  property :default_release, String,
32
- description: "The default release. For example: stable.",
61
+ description: "The default release. For example: `stable`.",
33
62
  desired_state: false
34
63
 
35
64
  property :overwrite_config_files, [TrueClass, FalseClass],
@@ -20,14 +20,43 @@ require_relative "../resource"
20
20
 
21
21
  class Chef
22
22
  class Resource
23
- # @since 13.3
24
23
  class AptPreference < Chef::Resource
25
24
  unified_mode true
26
25
 
27
26
  provides(:apt_preference) { true }
28
27
 
29
- description "The apt_preference resource allows for the creation of APT preference files. Preference files are used to control which package versions and sources are prioritized during installation."
28
+ description "Use the **apt_preference** resource to create APT [preference files](https://wiki.debian.org/AptPreferences). Preference files are used to control which package versions and sources are prioritized during installation."
30
29
  introduced "13.3"
30
+ examples <<~DOC
31
+ **Pin libmysqlclient16 to a version 5.1.49-3**:
32
+
33
+ ```ruby
34
+ apt_preference 'libmysqlclient16' do
35
+ pin 'version 5.1.49-3'
36
+ pin_priority '700'
37
+ end
38
+ ```
39
+
40
+ Note: The `pin_priority` of `700` ensures that this version will be preferred over any other available versions.
41
+
42
+ **Unpin a libmysqlclient16**:
43
+
44
+ ```ruby
45
+ apt_preference 'libmysqlclient16' do
46
+ action :remove
47
+ end
48
+ ```
49
+
50
+ **Pin all packages to prefer the packages.dotdeb.org repository**:
51
+
52
+ ```ruby
53
+ apt_preference 'dotdeb' do
54
+ glob '*'
55
+ pin 'origin packages.dotdeb.org'
56
+ pin_priority '700'
57
+ end
58
+ ```
59
+ DOC
31
60
 
32
61
  property :package_name, String,
33
62
  name_property: true,
@@ -36,15 +65,15 @@ class Chef
36
65
  validation_message: "The provided package name is not valid. Package names can only contain alphanumeric characters as well as _, -, +, or *!"
37
66
 
38
67
  property :glob, String,
39
- description: "Pin by glob() expression or with regular expressions surrounded by /."
68
+ description: "Pin by a `glob()` expression or with a regular expression surrounded by `/`."
40
69
 
41
70
  property :pin, String,
42
71
  description: "The package version or repository to pin.",
43
- required: true
72
+ required: [:add]
44
73
 
45
74
  property :pin_priority, [String, Integer],
46
75
  description: "Sets the Pin-Priority for a package. See <https://wiki.debian.org/AptPreferences> for more details.",
47
- required: true
76
+ required: [:add]
48
77
 
49
78
  default_action :add
50
79
  allowed_actions :add, :remove
@@ -28,11 +28,12 @@ class Chef
28
28
 
29
29
  provides(:apt_repository) { true }
30
30
 
31
- description "Use the apt_repository resource to specify additional APT repositories. Adding a new repository will update the APT package cache immediately."
31
+ description "Use the **apt_repository** resource to specify additional APT repositories. Adding a new repository will update the APT package cache immediately."
32
32
  introduced "12.9"
33
33
 
34
34
  examples <<~DOC
35
- Add repository with basic settings
35
+ **Add repository with basic settings**:
36
+
36
37
  ```ruby
37
38
  apt_repository 'nginx' do
38
39
  uri 'http://nginx.org/packages/ubuntu/'
@@ -40,29 +41,32 @@ class Chef
40
41
  end
41
42
  ```
42
43
 
43
- Enable Ubuntu multiverse repositories
44
+ **Enable Ubuntu multiverse repositories**:
45
+
44
46
  ```ruby
45
47
  apt_repository 'security-ubuntu-multiverse' do
46
48
  uri 'http://security.ubuntu.com/ubuntu'
47
- distribution 'trusty-security'
49
+ distribution 'xenial-security'
48
50
  components ['multiverse']
49
51
  deb_src true
50
52
  end
51
53
  ```
52
54
 
53
- Add the Nginx PPA, autodetect the key and repository url
55
+ **Add the Nginx PPA, autodetect the key and repository url**:
56
+
54
57
  ```ruby
55
58
  apt_repository 'nginx-php' do
56
59
  uri 'ppa:nginx/stable'
57
60
  end
58
61
  ```
59
62
 
60
- Add the JuJu PPA, grab the key from the keyserver, and add source repo
63
+ **Add the JuJu PPA, grab the key from the keyserver, and add source repo**:
64
+
61
65
  ```ruby
62
66
  apt_repository 'juju' do
63
67
  uri 'http://ppa.launchpad.net/juju/stable/ubuntu'
64
68
  components ['main']
65
- distribution 'trusty'
69
+ distribution 'xenial'
66
70
  key 'C8068B11'
67
71
  keyserver 'keyserver.ubuntu.com'
68
72
  action :add
@@ -70,7 +74,8 @@ class Chef
70
74
  end
71
75
  ```
72
76
 
73
- Add repository that requires multiple keys to authenticate packages
77
+ **Add repository that requires multiple keys to authenticate packages**:
78
+
74
79
  ```ruby
75
80
  apt_repository 'rundeck' do
76
81
  uri 'https://dl.bintray.com/rundeck/rundeck-deb'
@@ -81,18 +86,20 @@ class Chef
81
86
  end
82
87
  ```
83
88
 
84
- Add the Cloudera Repo of CDH4 packages for Ubuntu 12.04 on AMD64
89
+ **Add the Cloudera Repo of CDH4 packages for Ubuntu 16.04 on AMD64**:
90
+
85
91
  ```ruby
86
92
  apt_repository 'cloudera' do
87
- uri 'http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh'
93
+ uri 'http://archive.cloudera.com/cdh4/ubuntu/xenial/amd64/cdh'
88
94
  arch 'amd64'
89
- distribution 'precise-cdh4'
95
+ distribution 'xenial-cdh4'
90
96
  components ['contrib']
91
97
  key 'http://archive.cloudera.com/debian/archive.key'
92
98
  end
93
99
  ```
94
100
 
95
- Remove a repository from the list
101
+ **Remove a repository from the list**:
102
+
96
103
  ```ruby
97
104
  apt_repository 'zenoss' do
98
105
  action :remove
@@ -115,15 +122,15 @@ class Chef
115
122
  description: "The base of the Debian distribution."
116
123
 
117
124
  property :distribution, [ String, nil, FalseClass ],
118
- description: "Usually a distribution's codename, such as xenial, bionic, or focal.",
125
+ description: "Usually a distribution's codename, such as `xenial`, `bionic`, or `focal`.",
119
126
  default: lazy { node["lsb"]["codename"] }, default_description: "The LSB codename of the node such as 'focal'."
120
127
 
121
128
  property :components, Array,
122
129
  description: "Package groupings, such as 'main' and 'stable'.",
123
- default: lazy { [] }, default_description: "'main' if using a PPA repository."
130
+ default: lazy { [] }, default_description: "`main` if using a PPA repository."
124
131
 
125
132
  property :arch, [String, nil, FalseClass],
126
- description: "Constrain packages to a particular CPU architecture such as 'i386' or 'amd64'."
133
+ description: "Constrain packages to a particular CPU architecture such as `i386` or `amd64`."
127
134
 
128
135
  property :trusted, [TrueClass, FalseClass],
129
136
  description: "Determines whether you should treat all packages from this repository as authenticated regardless of signature.",
@@ -25,10 +25,11 @@ class Chef
25
25
 
26
26
  provides(:apt_update) { true }
27
27
 
28
- description "Use the apt_update resource to manage APT repository updates on Debian and Ubuntu platforms."
28
+ description "Use the **apt_update** resource to manage APT repository updates on Debian and Ubuntu platforms."
29
29
  introduced "12.7"
30
30
  examples <<~DOC
31
- Update the Apt repository at a specified interval
31
+ **Update the Apt repository at a specified interval**:
32
+
32
33
  ```ruby
33
34
  apt_update 'all platforms' do
34
35
  frequency 86400
@@ -36,7 +37,8 @@ class Chef
36
37
  end
37
38
  ```
38
39
 
39
- Update the Apt repository at the start of a Chef Infra Client run
40
+ **Update the Apt repository at the start of a Chef Infra Client run**:
41
+
40
42
  ```ruby
41
43
  apt_update 'update'
42
44
  ```
@@ -46,7 +48,7 @@ class Chef
46
48
  property :name, String, default: ""
47
49
 
48
50
  property :frequency, Integer,
49
- description: "Determines how frequently (in seconds) APT repository updates are made. Use this property when the :periodic action is specified.",
51
+ description: "Determines how frequently (in seconds) APT repository updates are made. Use this property when the `:periodic` action is specified.",
50
52
  default: 86_400
51
53
 
52
54
  default_action :periodic
@@ -19,6 +19,7 @@
19
19
  #
20
20
 
21
21
  require_relative "../resource"
22
+ require "fileutils" unless defined?(FileUtils)
22
23
 
23
24
  class Chef
24
25
  class Resource
@@ -29,15 +30,28 @@ class Chef
29
30
  provides :libarchive_file # legacy cookbook name
30
31
 
31
32
  introduced "15.0"
32
- description "Use the archive_file resource to extract archive files to disk. This resource uses the libarchive library to extract multiple archive formats including tar, gzip, bzip, and zip formats."
33
+ description "Use the **archive_file** resource to extract archive files to disk. This resource uses the libarchive library to extract multiple archive formats including tar, gzip, bzip, and zip formats."
33
34
  examples <<~DOC
34
- Extract a zip file to a specified directory
35
+ **Extract a zip file to a specified directory**:
36
+
35
37
  ```ruby
36
38
  archive_file 'Precompiled.zip' do
37
39
  path '/tmp/Precompiled.zip'
38
40
  destination '/srv/files'
39
41
  end
40
42
  ```
43
+
44
+ **Set specific permissions on the extracted files**:
45
+
46
+ ```ruby
47
+ archive_file 'Precompiled.zip' do
48
+ owner 'tsmith'
49
+ group 'staff'
50
+ mode '700'
51
+ path '/tmp/Precompiled.zip'
52
+ destination '/srv/files'
53
+ end
54
+ ```
41
55
  DOC
42
56
 
43
57
  property :path, String,
@@ -52,7 +66,7 @@ class Chef
52
66
  description: "The group of the extracted files."
53
67
 
54
68
  property :mode, [String, Integer],
55
- description: "The mode of the extracted files.",
69
+ description: "The mode of the extracted files. Integer values are deprecated as octal values (ex. 0755) would not be interpreted correctly.",
56
70
  default: "755"
57
71
 
58
72
  property :destination, String,
@@ -60,22 +74,22 @@ class Chef
60
74
  required: true
61
75
 
62
76
  property :options, [Array, Symbol],
63
- description: "An array of symbols representing extraction flags. Example: :no_overwrite to prevent overwriting files on disk. By default, this properly sets :time which preserves the modification timestamps of files in the archive when writing them to disk.",
77
+ description: "An array of symbols representing extraction flags. Example: `:no_overwrite` to prevent overwriting files on disk. By default, this properly sets `:time` which preserves the modification timestamps of files in the archive when writing them to disk.",
64
78
  default: lazy { [:time] }
65
79
 
66
80
  property :overwrite, [TrueClass, FalseClass, :auto],
67
- description: "Should the resource overwrite the destination file contents if they already exist? If set to :auto the date stamp of files within the archive will be compared to those on disk and disk contents will be overwritten if they differ. This may cause unintended consequences if disk date stamps are changed between runs, which will result in the files being overwritten during each client run. Make sure to properly test any change to this property.",
81
+ description: "Should the resource overwrite the destination file contents if they already exist? If set to `:auto` the date stamp of files within the archive will be compared to those on disk and disk contents will be overwritten if they differ. This may cause unintended consequences if disk date stamps are changed between runs, which will result in the files being overwritten during each client run. Make sure to properly test any change to this property.",
68
82
  default: false
69
83
 
70
84
  # backwards compatibility for the legacy cookbook names
71
85
  alias_method :extract_options, :options
72
86
  alias_method :extract_to, :destination
73
87
 
74
- require "fileutils" unless defined?(FileUtils)
75
-
76
88
  action :extract do
77
89
  description "Extract and archive file."
78
90
 
91
+ require_libarchive
92
+
79
93
  unless ::File.exist?(new_resource.path)
80
94
  raise Errno::ENOENT, "No archive found at #{new_resource.path}! Cannot continue."
81
95
  end
@@ -84,7 +98,8 @@ class Chef
84
98
  Chef::Log.trace("File or directory does not exist at destination path: #{new_resource.destination}")
85
99
 
86
100
  converge_by("create directory #{new_resource.destination}") do
87
- FileUtils.mkdir_p(new_resource.destination, mode: new_resource.mode.to_i)
101
+ # @todo when we remove the ability for mode to be an int we can remove the .to_s below
102
+ FileUtils.mkdir_p(new_resource.destination, mode: new_resource.mode.to_s.to_i(8))
88
103
  end
89
104
 
90
105
  extract(new_resource.path, new_resource.destination, Array(new_resource.options))
@@ -112,6 +127,16 @@ class Chef
112
127
  end
113
128
 
114
129
  action_class do
130
+ def require_libarchive
131
+ require "ffi-libarchive"
132
+ end
133
+
134
+ def define_resource_requirements
135
+ if new_resource.mode.is_a?(Integer)
136
+ Chef.deprecated(:archive_file_integer_file_mode, "The mode property should be passed to archive_file resources as a String and not an Integer to ensure the value is properly interpreted.")
137
+ end
138
+ end
139
+
115
140
  # This can't be a constant since we might not have required 'ffi-libarchive' yet.
116
141
  def extract_option_map
117
142
  {
@@ -135,8 +160,6 @@ class Chef
135
160
  #
136
161
  # @return [Boolean]
137
162
  def archive_differs_from_disk?(src, dest)
138
- require "ffi-libarchive"
139
-
140
163
  modified = false
141
164
  Dir.chdir(dest) do
142
165
  archive = Archive::Reader.open_filename(src)
@@ -163,8 +186,6 @@ class Chef
163
186
  #
164
187
  # @return [void]
165
188
  def extract(src, dest, options = [])
166
- require "ffi-libarchive"
167
-
168
189
  converge_by("extract #{src} to #{dest}") do
169
190
  flags = [options].flatten.map { |option| extract_option_map[option] }.compact.reduce(:|)
170
191
 
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require_relative "script"
20
- require_relative "../provider/script"
21
20
 
22
21
  class Chef
23
22
  class Resource
@@ -26,7 +25,7 @@ class Chef
26
25
 
27
26
  provides :bash
28
27
 
29
- description "Use the bash resource to execute scripts using the Bash interpreter. This resource may also use any of the actions and properties that are available to the execute resource. Commands that are executed with this resource are (by their nature) not idempotent, as they are typically unique to the environment in which they are run. Use not_if and only_if to guard this resource for idempotence."
28
+ description "Use the **bash** resource to execute scripts using the Bash interpreter. This resource may also use any of the actions and properties that are available to the execute resource. Commands that are executed with this resource are (by their nature) not idempotent, as they are typically unique to the environment in which they are run. Use not_if and only_if to guard this resource for idempotence."
30
29
 
31
30
  def initialize(name, run_context = nil)
32
31
  super