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
@@ -31,7 +31,7 @@ class Chef
31
31
 
32
32
  provides :cookbook_file
33
33
 
34
- description "Use the cookbook_file resource to transfer files from a sub-directory of COOKBOOK_NAME/files/ to a specified path located on a host that is running the #{Chef::Dist::PRODUCT}. The file is selected according to file specificity, which allows different source files to be used based on the hostname, host platform (operating system, distro, or as appropriate), or platform version. Files that are located in the COOKBOOK_NAME/files/default sub-directory may be used on any platform.\n\nDuring a #{Chef::Dist::PRODUCT} run, the checksum for each local file is calculated and then compared against the checksum for the same file as it currently exists in the cookbook on the #{Chef::Dist::SERVER_PRODUCT}. A file is not transferred when the checksums match. Only files that require an update are transferred from the #{Chef::Dist::SERVER_PRODUCT} to a node."
34
+ description "Use the **cookbook_file** resource to transfer files from a sub-directory of COOKBOOK_NAME/files/ to a specified path located on a host that is running the #{Chef::Dist::PRODUCT}. The file is selected according to file specificity, which allows different source files to be used based on the hostname, host platform (operating system, distro, or as appropriate), or platform version. Files that are located in the COOKBOOK_NAME/files/default sub-directory may be used on any platform.\n\nDuring a #{Chef::Dist::PRODUCT} run, the checksum for each local file is calculated and then compared against the checksum for the same file as it currently exists in the cookbook on the #{Chef::Dist::SERVER_PRODUCT}. A file is not transferred when the checksums match. Only files that require an update are transferred from the #{Chef::Dist::SERVER_PRODUCT} to a node."
35
35
 
36
36
  property :source, [ String, Array ],
37
37
  description: "The name of the file in COOKBOOK_NAME/files/default or the path to a file located in COOKBOOK_NAME/files. The path must include the file name and its extension. This can be used to distribute specific files depending upon the platform used.",
@@ -39,7 +39,8 @@ class Chef
39
39
 
40
40
  property :cookbook, String,
41
41
  description: "The cookbook in which a file is located (if it is not located in the current cookbook).",
42
- desired_state: false
42
+ desired_state: false,
43
+ default_description: "The current cookbook name"
43
44
 
44
45
  default_action :create
45
46
  end
@@ -0,0 +1,98 @@
1
+ unified_mode true
2
+
3
+ TIMEOUT_OPTS = %w{duration preserve-status foreground kill-after signal}.freeze
4
+ TIMEOUT_REGEX = /\A\S+/.freeze
5
+ WEEKDAYS = {
6
+ sunday: "0", monday: "1", tuesday: "2", wednesday: "3", thursday: "4", friday: "5", saturday: "6",
7
+ sun: "0", mon: "1", tue: "2", wed: "3", thu: "4", fri: "5", sat: "6"
8
+ }.freeze
9
+
10
+ property :minute, [Integer, String],
11
+ description: "The minute at which the cron entry should run (`0 - 59`).",
12
+ default: "*", callbacks: {
13
+ "should be a valid minute spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 59) },
14
+ }
15
+
16
+ property :hour, [Integer, String],
17
+ description: "The hour at which the cron entry is to run (`0 - 23`).",
18
+ default: "*", callbacks: {
19
+ "should be a valid hour spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 23) },
20
+ }
21
+
22
+ property :day, [Integer, String],
23
+ description: "The day of month at which the cron entry should run (`1 - 31`).",
24
+ default: "*", callbacks: {
25
+ "should be a valid day spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 1, 31) },
26
+ }
27
+
28
+ property :month, [Integer, String],
29
+ description: "The month in the year on which a cron entry is to run (`1 - 12`, `jan-dec`, or `*`).",
30
+ default: "*", callbacks: {
31
+ "should be a valid month spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_month(spec) },
32
+ }
33
+
34
+ property :weekday, [Integer, String, Symbol],
35
+ description: "The day of the week on which this entry is to run (`0-7`, `mon-sun`, `monday-sunday`, or `*`), where Sunday is both `0` and `7`.",
36
+ default: "*", coerce: proc { |day| weekday_in_crontab(day) },
37
+ callbacks: {
38
+ "should be a valid weekday spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_dow(spec) },
39
+ }
40
+
41
+ property :shell, String,
42
+ description: "Set the `SHELL` environment variable."
43
+
44
+ property :path, String,
45
+ description: "Set the `PATH` environment variable."
46
+
47
+ property :home, String,
48
+ description: "Set the `HOME` environment variable."
49
+
50
+ property :mailto, String,
51
+ description: "Set the `MAILTO` environment variable."
52
+
53
+ property :command, String,
54
+ description: "The command to be run, or the path to a file that contains the command to be run.",
55
+ identity: true,
56
+ required: [:create]
57
+
58
+ property :user, String,
59
+ description: "The name of the user that runs the command.",
60
+ default: "root"
61
+
62
+ property :environment, Hash,
63
+ description: "A Hash containing additional arbitrary environment variables under which the cron job will be run in the form of `({'ENV_VARIABLE' => 'VALUE'})`. **Note**: These variables must exist for a command to be run successfully.",
64
+ default: lazy { {} }
65
+
66
+ property :time_out, Hash,
67
+ description: "A Hash of timeouts in the form of `({'OPTION' => 'VALUE'})`. Accepted valid options are:
68
+ - `preserve-status` (BOOL, default: 'false'),
69
+ - `foreground` (BOOL, default: 'false'),
70
+ - `kill-after` (in seconds),
71
+ - `signal` (a name like 'HUP' or a number)",
72
+ default: lazy { {} },
73
+ introduced: "15.7",
74
+ coerce: proc { |h|
75
+ if h.is_a?(Hash)
76
+ invalid_keys = h.keys - TIMEOUT_OPTS
77
+ unless invalid_keys.empty?
78
+ error_msg = "Key of option time_out must be equal to one of: \"#{TIMEOUT_OPTS.join('", "')}\"! You passed \"#{invalid_keys.join(", ")}\"."
79
+ raise Chef::Exceptions::ValidationFailed, error_msg
80
+ end
81
+ unless h.values.all? { |x| x =~ TIMEOUT_REGEX }
82
+ error_msg = "Values of option time_out should be non-empty strings without any leading whitespace."
83
+ raise Chef::Exceptions::ValidationFailed, error_msg
84
+ end
85
+ h
86
+ elsif h.is_a?(Integer) || h.is_a?(String)
87
+ { "duration" => h }
88
+ end
89
+ }
90
+
91
+ private
92
+ # Convert weekday input value into crontab format that
93
+ # could be written in the crontab
94
+ # @return [Integer, String] A weekday formed as per the user inputs.
95
+ def weekday_in_crontab(day)
96
+ weekday = day.to_s.downcase.to_sym
97
+ WEEKDAYS[weekday] || day
98
+ end
@@ -0,0 +1,46 @@
1
+ #
2
+ # Author:: Bryan McLellan (btm@loftninjas.org)
3
+ # Author:: Tyler Cloke (<tyler@chef.io>)
4
+ # Copyright:: Copyright 2009-2016, Bryan McLellan
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require_relative "../../resource"
21
+ require_relative "../helpers/cron_validations"
22
+ require_relative "../../provider/cron" # do not remove. we actually need this below
23
+
24
+ class Chef
25
+ class Resource
26
+ class Cron < Chef::Resource
27
+ unified_mode true
28
+
29
+ use "cron_shared"
30
+
31
+ provides :cron
32
+
33
+ description "Use the **cron** resource to manage cron entries for time-based job scheduling. Properties for a schedule will default to * if not provided. The cron resource requires access to a crontab program, typically cron."
34
+
35
+ state_attrs :minute, :hour, :day, :month, :weekday, :user
36
+
37
+ default_action :create
38
+ allowed_actions :create, :delete
39
+
40
+ property :time, Symbol,
41
+ description: "A time interval.",
42
+ equal_to: Chef::Provider::Cron::SPECIAL_TIME_VALUES
43
+
44
+ end
45
+ end
46
+ end
@@ -15,21 +15,25 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
- require_relative "../resource"
19
- require_relative "helpers/cron_validations"
18
+ require_relative "../../resource"
19
+ require_relative "../helpers/cron_validations"
20
20
  require "shellwords" unless defined?(Shellwords)
21
- require_relative "../dist"
21
+ require_relative "../../dist"
22
22
 
23
23
  class Chef
24
24
  class Resource
25
25
  class CronD < Chef::Resource
26
26
  unified_mode true
27
+
28
+ use "cron_shared"
29
+
27
30
  provides :cron_d
28
31
 
29
32
  introduced "14.4"
30
- description "Use the cron_d resource to manage cron definitions in /etc/cron.d. This is similar to the 'cron' resource, but it does not use the monolithic /etc/crontab file."
33
+ description "Use the **cron_d** resource to manage cron job files in the /etc/cron.d directory. This is similar to the 'cron' resource, but it does not use the monolithic /etc/crontab file."
31
34
  examples <<~DOC
32
- To run a program on the fifth hour of the day
35
+ **Run a program on the fifth hour of the day**
36
+
33
37
  ```ruby
34
38
  cron_d 'noop' do
35
39
  hour '5'
@@ -38,7 +42,8 @@ class Chef
38
42
  end
39
43
  ```
40
44
 
41
- To run an entry if a folder exists
45
+ **Run an entry if a folder exists**
46
+
42
47
  ```ruby
43
48
  cron_d 'ganglia_tomcat_thread_max' do
44
49
  command "/usr/bin/gmetric
@@ -50,18 +55,21 @@ class Chef
50
55
  end
51
56
  ```
52
57
 
53
- To run an entry every Saturday, 8:00 AM
58
+ **Run an entry every Saturday, 8:00 AM**
59
+
54
60
  ```ruby
55
61
  cron_d 'name_of_cron_entry' do
56
62
  minute '0'
57
63
  hour '8'
58
64
  weekday '6'
59
65
  mailto 'admin@example.com'
66
+ command "/bin/true"
60
67
  action :create
61
68
  end
62
69
  ```
63
70
 
64
- To run an entry at 8:00 PM, every weekday (Monday through Friday), but only in November
71
+ **Run an entry at 8:00 PM, every weekday (Monday through Friday), but only in November**
72
+
65
73
  ```ruby
66
74
  cron_d 'name_of_cron_entry' do
67
75
  minute '0'
@@ -69,113 +77,39 @@ class Chef
69
77
  day '*'
70
78
  month '11'
71
79
  weekday '1-5'
80
+ command "/bin/true"
72
81
  action :create
73
82
  end
74
83
  ```
84
+
85
+ **Remove a cron job by name**:
86
+
87
+ ```ruby
88
+ cron_d 'job_to_remove' do
89
+ action :delete
90
+ end
91
+ ```
75
92
  DOC
76
93
 
77
94
  property :cron_name, String,
78
95
  description: "An optional property to set the cron name if it differs from the resource block's name.",
79
96
  name_property: true
80
97
 
81
- property :cookbook, String, desired_state: false
98
+ property :cookbook, String, desired_state: false, skip_docs: true
82
99
 
83
100
  property :predefined_value, String,
84
101
  description: "Schedule your cron job with one of the special predefined value instead of ** * pattern.",
85
102
  equal_to: %w{ @reboot @yearly @annually @monthly @weekly @daily @midnight @hourly }
86
103
 
87
- property :minute, [Integer, String],
88
- description: "The minute at which the cron entry should run (0 - 59).",
89
- default: "*", callbacks: {
90
- "should be a valid minute spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 59) },
91
- }
92
-
93
- property :hour, [Integer, String],
94
- description: "The hour at which the cron entry is to run (0 - 23).",
95
- default: "*", callbacks: {
96
- "should be a valid hour spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 23) },
97
- }
98
-
99
- property :day, [Integer, String],
100
- description: "The day of month at which the cron entry should run (1 - 31).",
101
- default: "*", callbacks: {
102
- "should be a valid day spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 1, 31) },
103
- }
104
-
105
- property :month, [Integer, String],
106
- description: "The month in the year on which a cron entry is to run (1 - 12, jan-dec, or *).",
107
- default: "*", callbacks: {
108
- "should be a valid month spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_month(spec) },
109
- }
110
-
111
- property :weekday, [Integer, String],
112
- description: "The day of the week on which this entry is to run (0-7, mon-sun, or *), where Sunday is both 0 and 7.",
113
- default: "*", callbacks: {
114
- "should be a valid weekday spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_dow(spec) },
115
- }
116
-
117
- property :command, String,
118
- description: "The command to run.",
119
- required: true
120
-
121
- property :user, String,
122
- description: "The name of the user that runs the command.",
123
- default: "root"
124
-
125
- property :mailto, String,
126
- description: "Set the MAILTO environment variable in the cron.d file."
127
-
128
- property :path, String,
129
- description: "Set the PATH environment variable in the cron.d file."
130
-
131
- property :home, String,
132
- description: "Set the HOME environment variable in the cron.d file."
133
-
134
- property :shell, String,
135
- description: "Set the SHELL environment variable in the cron.d file."
136
-
137
104
  property :comment, String,
138
105
  description: "A comment to place in the cron.d file."
139
106
 
140
- property :environment, Hash,
141
- description: "A Hash containing additional arbitrary environment variables under which the cron job will be run in the form of ``({'ENV_VARIABLE' => 'VALUE'})``.",
142
- default: lazy { {} }
143
-
144
- TIMEOUT_OPTS = %w{duration preserve-status foreground kill-after signal}.freeze
145
- TIMEOUT_REGEX = /\A\S+/.freeze
146
-
147
- property :time_out, Hash,
148
- description: "A Hash of timeouts in the form of ({'OPTION' => 'VALUE'}).
149
- Accepted valid options are:
150
- preserve-status (BOOL, default: 'false'),
151
- foreground (BOOL, default: 'false'),
152
- kill-after (in seconds),
153
- signal (a name like 'HUP' or a number)",
154
- default: lazy { {} },
155
- introduced: "15.7",
156
- coerce: proc { |h|
157
- if h.is_a?(Hash)
158
- invalid_keys = h.keys - TIMEOUT_OPTS
159
- unless invalid_keys.empty?
160
- error_msg = "Key of option time_out must be equal to one of: \"#{TIMEOUT_OPTS.join('", "')}\"! You passed \"#{invalid_keys.join(", ")}\"."
161
- raise Chef::Exceptions::ValidationFailed, error_msg
162
- end
163
- unless h.values.all? { |x| x =~ TIMEOUT_REGEX }
164
- error_msg = "Values of option time_out should be non-empty string without any leading whitespaces."
165
- raise Chef::Exceptions::ValidationFailed, error_msg
166
- end
167
- h
168
- elsif h.is_a?(Integer) || h.is_a?(String)
169
- { "duration" => h }
170
- end
171
- }
172
-
173
107
  property :mode, [String, Integer],
174
108
  description: "The octal mode of the generated crontab file.",
175
109
  default: "0600"
176
110
 
177
111
  property :random_delay, Integer,
178
- description: "Set the RANDOM_DELAY environment variable in the cron.d file."
112
+ description: "Set the `RANDOM_DELAY` environment variable in the cron.d file."
179
113
 
180
114
  # warn if someone passes the deprecated cookbook property
181
115
  def after_created
@@ -224,7 +158,7 @@ class Chef
224
158
 
225
159
  # @todo this is Chef 12 era cleanup. Someday we should remove it all
226
160
  template "/etc/cron.d/#{sanitized_name}" do
227
- source ::File.expand_path("../support/cron.d.erb", __FILE__)
161
+ source ::File.expand_path("../../support/cron.d.erb", __FILE__)
228
162
  local true
229
163
  mode new_resource.mode
230
164
  variables(
@@ -28,21 +28,24 @@ class Chef
28
28
  provides(:cron_manage) # legacy name @todo in Chef 15 we should { true } this so it wins over the cookbook
29
29
 
30
30
  introduced "14.4"
31
- description "Use the cron_access resource to manage the /etc/cron.allow and /etc/cron.deny files."
31
+ description "Use the **cron_access** resource to manage cron's cron.allow and cron.deny files. Note: This resource previously shipped in the `cron` cookbook as `cron_manage`, which it can still be used as for backwards compatibility with existing Chef Infra Client releases."
32
32
  examples <<~DOC
33
- Add the mike user to cron.allow
33
+ **Add the mike user to cron.allow**
34
+
34
35
  ```ruby
35
36
  cron_access 'mike'
36
37
  ```
37
38
 
38
- Add the mike user to cron.deny
39
+ **Add the mike user to cron.deny**
40
+
39
41
  ```ruby
40
42
  cron_access 'mike' do
41
43
  action :deny
42
44
  end
43
45
  ```
44
46
 
45
- Specify the username with the user property
47
+ **Specify the username with the user property**
48
+
46
49
  ```ruby
47
50
  cron_access 'Deny the jenkins user access to cron for security purposes' do
48
51
  user 'jenkins'
@@ -55,11 +58,18 @@ class Chef
55
58
  description: "An optional property to set the user name if it differs from the resource block's name.",
56
59
  name_property: true
57
60
 
61
+ CRON_PATHS = {
62
+ "aix" => "/var/adm/cron",
63
+ "solaris" => "/etc/cron.d",
64
+ "default" => "/etc",
65
+ }.freeze
66
+
58
67
  action :allow do
59
68
  description "Add the user to the cron.allow file."
69
+ allow_path = ::File.join(value_for_platform_family(CRON_PATHS), "cron.allow")
60
70
 
61
71
  with_run_context :root do
62
- edit_resource(:template, "/etc/cron.allow") do |new_resource|
72
+ edit_resource(:template, allow_path) do |new_resource|
63
73
  source ::File.expand_path("../support/cron_access.erb", __FILE__)
64
74
  local true
65
75
  mode "0600"
@@ -73,9 +83,10 @@ class Chef
73
83
 
74
84
  action :deny do
75
85
  description "Add the user to the cron.deny file."
86
+ deny_path = ::File.join(value_for_platform_family(CRON_PATHS), "cron.deny")
76
87
 
77
88
  with_run_context :root do
78
- edit_resource(:template, "/etc/cron.deny") do |new_resource|
89
+ edit_resource(:template, deny_path) do |new_resource|
79
90
  source ::File.expand_path("../support/cron_access.erb", __FILE__)
80
91
  local true
81
92
  mode "0600"
@@ -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 :csh
28
27
 
29
- description "Use the csh resource to execute scripts using the csh interpreter."\
28
+ description "Use the **csh** resource to execute scripts using the csh interpreter."\
30
29
  " This resource may also use any of the actions and properties that are"\
31
30
  " available to the execute resource. Commands that are executed with this"\
32
31
  " resource are (by their nature) not idempotent, as they are typically"\
@@ -28,7 +28,7 @@ class Chef
28
28
 
29
29
  provides :directory
30
30
 
31
- description "Use the directory resource to manage a directory, which is a hierarchy"\
31
+ description "Use the **directory** resource to manage a directory, which is a hierarchy"\
32
32
  " of folders that comprises all of the information stored on a computer."\
33
33
  " The root directory is the top-level, under which the rest of the directory"\
34
34
  " is organized. The directory resource uses the name property to specify the"\