chef 16.0.257-universal-mingw32 → 16.2.44-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (391) 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/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/application/apply.rb +2 -2
  9. data/lib/chef/application/base.rb +1 -1
  10. data/lib/chef/application/client.rb +1 -1
  11. data/lib/chef/application/exit_code.rb +2 -2
  12. data/lib/chef/application/windows_service_manager.rb +1 -1
  13. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  14. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  18. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  20. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  21. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  22. data/lib/chef/chef_fs/path_utils.rb +4 -4
  23. data/lib/chef/cookbook/chefignore.rb +1 -1
  24. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +2 -2
  26. data/lib/chef/cookbook_loader.rb +1 -1
  27. data/lib/chef/cookbook_manifest.rb +1 -1
  28. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +7 -7
  30. data/lib/chef/data_bag.rb +4 -4
  31. data/lib/chef/data_collector.rb +1 -1
  32. data/lib/chef/data_collector/error_handlers.rb +1 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +5 -1
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dsl/declare_resource.rb +1 -1
  37. data/lib/chef/dsl/platform_introspection.rb +1 -1
  38. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  39. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  40. data/lib/chef/file_access_control.rb +1 -1
  41. data/lib/chef/formatters/base.rb +1 -1
  42. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  43. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  44. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  45. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  46. data/lib/chef/http.rb +18 -3
  47. data/lib/chef/http/decompressor.rb +1 -1
  48. data/lib/chef/http/http_request.rb +1 -1
  49. data/lib/chef/http/json_output.rb +1 -1
  50. data/lib/chef/http/ssl_policies.rb +18 -0
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -2
  54. data/lib/chef/knife/bootstrap.rb +13 -16
  55. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  56. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  57. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  58. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  59. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  60. data/lib/chef/knife/config_get.rb +1 -1
  61. data/lib/chef/knife/cookbook_delete.rb +1 -1
  62. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  63. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  64. data/lib/chef/knife/core/node_presenter.rb +1 -1
  65. data/lib/chef/knife/core/status_presenter.rb +1 -1
  66. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  67. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
  68. data/lib/chef/knife/data_bag_create.rb +1 -1
  69. data/lib/chef/knife/environment_compare.rb +1 -1
  70. data/lib/chef/knife/key_create_base.rb +1 -1
  71. data/lib/chef/knife/key_edit_base.rb +1 -1
  72. data/lib/chef/knife/list.rb +1 -1
  73. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  74. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  75. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  76. data/lib/chef/knife/ssh.rb +2 -2
  77. data/lib/chef/knife/supermarket_install.rb +1 -1
  78. data/lib/chef/knife/supermarket_share.rb +1 -1
  79. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  80. data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
  81. data/lib/chef/knife/yaml_convert.rb +2 -2
  82. data/lib/chef/log.rb +1 -1
  83. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  84. data/lib/chef/mixin/checksum.rb +0 -1
  85. data/lib/chef/mixin/create_path.rb +8 -8
  86. data/lib/chef/mixin/openssl_helper.rb +4 -4
  87. data/lib/chef/mixin/properties.rb +4 -2
  88. data/lib/chef/mixin/securable.rb +2 -2
  89. data/lib/chef/mixin/shell_out.rb +1 -1
  90. data/lib/chef/node/attribute.rb +2 -2
  91. data/lib/chef/node/immutable_collections.rb +1 -1
  92. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  93. data/lib/chef/policy_builder/policyfile.rb +1 -1
  94. data/lib/chef/powershell.rb +1 -1
  95. data/lib/chef/property.rb +2 -2
  96. data/lib/chef/provider.rb +3 -3
  97. data/lib/chef/provider/batch.rb +3 -10
  98. data/lib/chef/provider/cron.rb +2 -14
  99. data/lib/chef/provider/directory.rb +1 -1
  100. data/lib/chef/provider/execute.rb +3 -2
  101. data/lib/chef/provider/file.rb +1 -1
  102. data/lib/chef/provider/group/dscl.rb +2 -2
  103. data/lib/chef/provider/group/windows.rb +1 -1
  104. data/lib/chef/provider/ifconfig.rb +7 -7
  105. data/lib/chef/provider/launchd.rb +28 -32
  106. data/lib/chef/provider/mount/aix.rb +1 -1
  107. data/lib/chef/provider/mount/windows.rb +2 -2
  108. data/lib/chef/provider/noop.rb +1 -1
  109. data/lib/chef/provider/package/cab.rb +1 -1
  110. data/lib/chef/provider/package/chocolatey.rb +1 -1
  111. data/lib/chef/provider/package/dpkg.rb +1 -1
  112. data/lib/chef/provider/package/freebsd/base.rb +2 -1
  113. data/lib/chef/provider/package/homebrew.rb +1 -1
  114. data/lib/chef/provider/package/macports.rb +0 -2
  115. data/lib/chef/provider/package/openbsd.rb +1 -1
  116. data/lib/chef/provider/package/portage.rb +3 -2
  117. data/lib/chef/provider/package/powershell.rb +6 -2
  118. data/lib/chef/provider/package/rubygems.rb +3 -3
  119. data/lib/chef/provider/package/snap.rb +96 -27
  120. data/lib/chef/provider/package/windows.rb +27 -52
  121. data/lib/chef/provider/package/windows/msi.rb +3 -3
  122. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  123. data/lib/chef/provider/package/yum.rb +1 -1
  124. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  125. data/lib/chef/provider/powershell_script.rb +11 -15
  126. data/lib/chef/provider/remote_directory.rb +2 -2
  127. data/lib/chef/provider/remote_file/http.rb +4 -1
  128. data/lib/chef/provider/script.rb +4 -75
  129. data/lib/chef/provider/service/arch.rb +2 -2
  130. data/lib/chef/provider/service/debian.rb +2 -2
  131. data/lib/chef/provider/service/macosx.rb +13 -2
  132. data/lib/chef/provider/service/openbsd.rb +4 -4
  133. data/lib/chef/provider/service/redhat.rb +1 -1
  134. data/lib/chef/provider/service/simple.rb +3 -3
  135. data/lib/chef/provider/service/upstart.rb +1 -1
  136. data/lib/chef/provider/service/windows.rb +1 -1
  137. data/lib/chef/provider/subversion.rb +2 -2
  138. data/lib/chef/provider/user/aix.rb +1 -1
  139. data/lib/chef/provider/user/dscl.rb +7 -7
  140. data/lib/chef/provider/user/linux.rb +3 -3
  141. data/lib/chef/provider/user/mac.rb +15 -11
  142. data/lib/chef/provider/windows_script.rb +87 -25
  143. data/lib/chef/provider/windows_task.rb +5 -3
  144. data/lib/chef/provider/zypper_repository.rb +30 -10
  145. data/lib/chef/resource.rb +25 -14
  146. data/lib/chef/resource/alternatives.rb +65 -4
  147. data/lib/chef/resource/apt_package.rb +31 -2
  148. data/lib/chef/resource/apt_preference.rb +34 -5
  149. data/lib/chef/resource/apt_repository.rb +22 -15
  150. data/lib/chef/resource/apt_update.rb +6 -4
  151. data/lib/chef/resource/archive_file.rb +33 -12
  152. data/lib/chef/resource/bash.rb +1 -2
  153. data/lib/chef/resource/batch.rb +5 -3
  154. data/lib/chef/resource/bff_package.rb +1 -1
  155. data/lib/chef/resource/breakpoint.rb +1 -1
  156. data/lib/chef/resource/build_essential.rb +8 -4
  157. data/lib/chef/resource/cab_package.rb +1 -1
  158. data/lib/chef/resource/chef_client_cron.rb +12 -9
  159. data/lib/chef/resource/chef_client_scheduled_task.rb +22 -7
  160. data/lib/chef/resource/chef_client_systemd_timer.rb +10 -7
  161. data/lib/chef/resource/chef_gem.rb +6 -2
  162. data/lib/chef/resource/chef_handler.rb +3 -3
  163. data/lib/chef/resource/chef_sleep.rb +7 -4
  164. data/lib/chef/resource/chef_vault_secret.rb +4 -4
  165. data/lib/chef/resource/chocolatey_config.rb +5 -3
  166. data/lib/chef/resource/chocolatey_feature.rb +5 -3
  167. data/lib/chef/resource/chocolatey_package.rb +5 -3
  168. data/lib/chef/resource/chocolatey_source.rb +5 -3
  169. data/lib/chef/resource/cookbook_file.rb +3 -2
  170. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  171. data/lib/chef/resource/cron/cron.rb +46 -0
  172. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +28 -94
  173. data/lib/chef/resource/cron_access.rb +17 -6
  174. data/lib/chef/resource/csh.rb +1 -2
  175. data/lib/chef/resource/directory.rb +1 -1
  176. data/lib/chef/resource/dmg_package.rb +18 -15
  177. data/lib/chef/resource/dnf_package.rb +1 -1
  178. data/lib/chef/resource/dpkg_package.rb +1 -1
  179. data/lib/chef/resource/execute.rb +479 -9
  180. data/lib/chef/resource/file.rb +11 -8
  181. data/lib/chef/resource/freebsd_package.rb +2 -2
  182. data/lib/chef/resource/gem_package.rb +6 -6
  183. data/lib/chef/resource/group.rb +1 -1
  184. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  185. data/lib/chef/resource/homebrew_cask.rb +1 -1
  186. data/lib/chef/resource/homebrew_package.rb +30 -1
  187. data/lib/chef/resource/homebrew_tap.rb +1 -1
  188. data/lib/chef/resource/homebrew_update.rb +107 -0
  189. data/lib/chef/resource/hostname.rb +11 -24
  190. data/lib/chef/resource/http_request.rb +1 -1
  191. data/lib/chef/resource/ifconfig.rb +7 -7
  192. data/lib/chef/resource/ips_package.rb +1 -1
  193. data/lib/chef/resource/kernel_module.rb +15 -2
  194. data/lib/chef/resource/ksh.rb +1 -1
  195. data/lib/chef/resource/launchd.rb +5 -5
  196. data/lib/chef/resource/link.rb +4 -4
  197. data/lib/chef/resource/locale.rb +4 -4
  198. data/lib/chef/resource/log.rb +1 -1
  199. data/lib/chef/resource/macos_userdefaults.rb +15 -10
  200. data/lib/chef/resource/macosx_service.rb +1 -1
  201. data/lib/chef/resource/macports_package.rb +1 -1
  202. data/lib/chef/resource/mdadm.rb +1 -1
  203. data/lib/chef/resource/mount.rb +2 -2
  204. data/lib/chef/resource/msu_package.rb +2 -2
  205. data/lib/chef/resource/ohai.rb +1 -1
  206. data/lib/chef/resource/ohai_hint.rb +1 -1
  207. data/lib/chef/resource/openbsd_package.rb +1 -1
  208. data/lib/chef/resource/openssl_dhparam.rb +1 -1
  209. data/lib/chef/resource/openssl_ec_private_key.rb +1 -1
  210. data/lib/chef/resource/openssl_ec_public_key.rb +1 -1
  211. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  212. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -1
  213. data/lib/chef/resource/openssl_x509_certificate.rb +1 -1
  214. data/lib/chef/resource/openssl_x509_crl.rb +1 -1
  215. data/lib/chef/resource/openssl_x509_request.rb +1 -1
  216. data/lib/chef/resource/osx_profile.rb +1 -1
  217. data/lib/chef/resource/package.rb +1 -1
  218. data/lib/chef/resource/pacman_package.rb +1 -1
  219. data/lib/chef/resource/paludis_package.rb +1 -1
  220. data/lib/chef/resource/perl.rb +1 -2
  221. data/lib/chef/resource/plist.rb +24 -5
  222. data/lib/chef/resource/portage_package.rb +1 -1
  223. data/lib/chef/resource/powershell_package.rb +1 -1
  224. data/lib/chef/resource/powershell_package_source.rb +1 -1
  225. data/lib/chef/resource/powershell_script.rb +5 -3
  226. data/lib/chef/resource/python.rb +1 -2
  227. data/lib/chef/resource/reboot.rb +1 -1
  228. data/lib/chef/resource/registry_key.rb +1 -1
  229. data/lib/chef/resource/remote_directory.rb +1 -1
  230. data/lib/chef/resource/remote_file.rb +26 -11
  231. data/lib/chef/resource/rhsm_errata.rb +1 -3
  232. data/lib/chef/resource/rhsm_errata_level.rb +1 -1
  233. data/lib/chef/resource/rhsm_register.rb +1 -2
  234. data/lib/chef/resource/rhsm_repo.rb +1 -2
  235. data/lib/chef/resource/rhsm_subscription.rb +1 -3
  236. data/lib/chef/resource/route.rb +1 -1
  237. data/lib/chef/resource/rpm_package.rb +5 -2
  238. data/lib/chef/resource/ruby.rb +1 -2
  239. data/lib/chef/resource/ruby_block.rb +1 -4
  240. data/lib/chef/resource/scm/_scm.rb +4 -3
  241. data/lib/chef/resource/scm/git.rb +2 -2
  242. data/lib/chef/resource/scm/subversion.rb +2 -2
  243. data/lib/chef/resource/script.rb +1 -1
  244. data/lib/chef/resource/service.rb +1 -1
  245. data/lib/chef/resource/smartos_package.rb +1 -1
  246. data/lib/chef/resource/snap_package.rb +1 -1
  247. data/lib/chef/resource/solaris_package.rb +1 -1
  248. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  249. data/lib/chef/resource/sudo.rb +4 -4
  250. data/lib/chef/resource/swap_file.rb +2 -2
  251. data/lib/chef/resource/sysctl.rb +61 -2
  252. data/lib/chef/resource/systemd_unit.rb +2 -2
  253. data/lib/chef/resource/template.rb +1 -1
  254. data/lib/chef/resource/timezone.rb +1 -1
  255. data/lib/chef/resource/user.rb +2 -2
  256. data/lib/chef/resource/user_ulimit.rb +24 -22
  257. data/lib/chef/resource/windows_ad_join.rb +31 -2
  258. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  259. data/lib/chef/resource/windows_auto_run.rb +13 -2
  260. data/lib/chef/resource/windows_certificate.rb +28 -2
  261. data/lib/chef/resource/windows_dfs_folder.rb +1 -1
  262. data/lib/chef/resource/windows_dfs_namespace.rb +1 -1
  263. data/lib/chef/resource/windows_dfs_server.rb +2 -2
  264. data/lib/chef/resource/windows_env.rb +10 -1
  265. data/lib/chef/resource/windows_feature.rb +57 -2
  266. data/lib/chef/resource/windows_feature_dism.rb +15 -2
  267. data/lib/chef/resource/windows_feature_powershell.rb +29 -2
  268. data/lib/chef/resource/windows_firewall_rule.rb +11 -7
  269. data/lib/chef/resource/windows_font.rb +13 -4
  270. data/lib/chef/resource/windows_package.rb +66 -6
  271. data/lib/chef/resource/windows_pagefile.rb +32 -4
  272. data/lib/chef/resource/windows_path.rb +18 -1
  273. data/lib/chef/resource/windows_printer.rb +26 -6
  274. data/lib/chef/resource/windows_printer_port.rb +29 -1
  275. data/lib/chef/resource/windows_script.rb +2 -16
  276. data/lib/chef/resource/windows_security_policy.rb +47 -16
  277. data/lib/chef/resource/windows_service.rb +1 -1
  278. data/lib/chef/resource/windows_share.rb +23 -3
  279. data/lib/chef/resource/windows_shortcut.rb +13 -3
  280. data/lib/chef/resource/windows_task.rb +143 -29
  281. data/lib/chef/resource/windows_uac.rb +20 -1
  282. data/lib/chef/resource/windows_user_privilege.rb +45 -3
  283. data/lib/chef/resource/windows_workgroup.rb +19 -3
  284. data/lib/chef/resource/yum_package.rb +88 -6
  285. data/lib/chef/resource/yum_repository.rb +36 -19
  286. data/lib/chef/resource/zypper_package.rb +29 -3
  287. data/lib/chef/resource/zypper_repository.rb +17 -5
  288. data/lib/chef/resource_inspector.rb +5 -4
  289. data/lib/chef/resources.rb +4 -2
  290. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  291. data/lib/chef/scan_access_control.rb +1 -1
  292. data/lib/chef/search/query.rb +1 -1
  293. data/lib/chef/shell/ext.rb +1 -1
  294. data/lib/chef/util/diff.rb +2 -2
  295. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  296. data/lib/chef/util/windows/net_user.rb +1 -1
  297. data/lib/chef/util/windows/volume.rb +1 -1
  298. data/lib/chef/version.rb +1 -1
  299. data/lib/chef/win32/api.rb +2 -2
  300. data/lib/chef/win32/api/error.rb +3 -1
  301. data/lib/chef/win32/api/file.rb +18 -18
  302. data/lib/chef/win32/api/net.rb +1 -0
  303. data/lib/chef/win32/file.rb +1 -1
  304. data/lib/chef/win32/mutex.rb +1 -1
  305. data/lib/chef/win32/net.rb +1 -0
  306. data/lib/chef/win32/process.rb +2 -2
  307. data/lib/chef/win32/registry.rb +2 -2
  308. data/lib/chef/win32/security.rb +1 -1
  309. data/lib/chef/win32/security/sid.rb +4 -4
  310. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  311. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  312. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  313. data/spec/functional/resource/cron_spec.rb +10 -0
  314. data/spec/functional/resource/dnf_package_spec.rb +2 -2
  315. data/spec/functional/resource/git_spec.rb +6 -6
  316. data/spec/functional/resource/launchd_spec.rb +232 -0
  317. data/spec/functional/resource/link_spec.rb +3 -3
  318. data/spec/functional/resource/remote_file_spec.rb +3 -3
  319. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  320. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  321. data/spec/functional/resource/windows_task_spec.rb +12 -12
  322. data/spec/integration/knife/raw_spec.rb +4 -4
  323. data/spec/integration/knife/redirection_spec.rb +2 -2
  324. data/spec/support/chef_helpers.rb +1 -1
  325. data/spec/support/platform_helpers.rb +1 -14
  326. data/spec/support/platforms/win32/spec_service.rb +1 -1
  327. data/spec/support/shared/functional/execute_resource.rb +1 -1
  328. data/spec/support/shared/functional/file_resource.rb +1 -1
  329. data/spec/support/shared/functional/http.rb +2 -2
  330. data/spec/support/shared/functional/windows_script.rb +1 -1
  331. data/spec/support/shared/unit/execute_resource.rb +1 -1
  332. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  333. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  334. data/spec/unit/application_spec.rb +7 -0
  335. data/spec/unit/data_bag_spec.rb +1 -1
  336. data/spec/unit/file_access_control_spec.rb +1 -1
  337. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  338. data/spec/unit/knife/bootstrap_spec.rb +2 -2
  339. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  340. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  341. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  342. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  343. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  344. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  345. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  346. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  347. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  348. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  349. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  350. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  351. data/spec/unit/mixin/shell_out_spec.rb +25 -31
  352. data/spec/unit/mixin/user_context_spec.rb +1 -9
  353. data/spec/unit/node/attribute_spec.rb +1 -1
  354. data/spec/unit/property_spec.rb +1 -1
  355. data/spec/unit/provider/apt_repository_spec.rb +27 -27
  356. data/spec/unit/provider/batch_spec.rb +130 -0
  357. data/spec/unit/provider/cron_spec.rb +9 -49
  358. data/spec/unit/provider/git_spec.rb +3 -3
  359. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  360. data/spec/unit/provider/launchd_spec.rb +8 -50
  361. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  362. data/spec/unit/provider/package/msu_spec.rb +3 -3
  363. data/spec/unit/provider/package/portage_spec.rb +2 -2
  364. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  365. data/spec/unit/provider/package/snap_spec.rb +1 -1
  366. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  367. data/spec/unit/provider/script_spec.rb +20 -110
  368. data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
  369. data/spec/unit/provider/zypper_repository_spec.rb +75 -25
  370. data/spec/unit/provider_resolver_spec.rb +11 -11
  371. data/spec/unit/resource/archive_file_spec.rb +11 -2
  372. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  373. data/spec/unit/resource/cron_spec.rb +2 -2
  374. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  375. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  376. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  377. data/spec/unit/resource/timezone_spec.rb +1 -1
  378. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  379. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  380. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  381. data/spec/unit/resource/windows_package_spec.rb +10 -0
  382. data/spec/unit/resource/windows_task_spec.rb +1 -1
  383. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  384. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  385. data/spec/unit/resource_spec.rb +67 -1
  386. data/spec/unit/run_context_spec.rb +1 -1
  387. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  388. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  389. data/spec/unit/win32/registry_spec.rb +1 -1
  390. metadata +28 -27
  391. data/lib/chef/resource/cron.rb +0 -157
@@ -22,8 +22,36 @@ class Chef
22
22
  class WindowsPagefile < Chef::Resource
23
23
  provides(:windows_pagefile) { true }
24
24
 
25
- description "Use the windows_pagefile resource to configure pagefile settings on Windows."
25
+ description "Use the **windows_pagefile** resource to configure pagefile settings on Windows."
26
26
  introduced "14.0"
27
+ examples <<~DOC
28
+ **Set the system to manage pagefiles**:
29
+
30
+ ```ruby
31
+ windows_pagefile 'Enable automatic management of pagefiles' do
32
+ automatic_managed true
33
+ end
34
+ ```
35
+
36
+ **Delete a pagefile**:
37
+
38
+ ```ruby
39
+ windows_pagefile 'Delete the pagefile' do
40
+ path 'C:\pagefile.sys'
41
+ action :delete
42
+ end
43
+ ```
44
+
45
+ **Create a pagefile with an initial and maximum size**:
46
+
47
+ ```ruby
48
+ windows_pagefile 'create the pagefile' do
49
+ path 'C:\pagefile.sys'
50
+ initial_size 100
51
+ maximum_size 200
52
+ end
53
+ ```
54
+ DOC
27
55
 
28
56
  property :path, String,
29
57
  coerce: proc { |x| x.tr("/", '\\') },
@@ -34,7 +62,7 @@ class Chef
34
62
  description: "Configures whether the system manages the pagefile size."
35
63
 
36
64
  property :automatic_managed, [TrueClass, FalseClass],
37
- description: "Enable automatic management of pagefile initial and maximum size. Setting this to true ignores 'initial_size' and 'maximum_size' properties.",
65
+ description: "Enable automatic management of pagefile initial and maximum size. Setting this to true ignores `initial_size` and `maximum_size` properties.",
38
66
  default: false
39
67
 
40
68
  property :initial_size, Integer,
@@ -85,7 +113,7 @@ class Chef
85
113
  # we do this here and not in the property itself because if automatic_managed
86
114
  # is set then this validation is not necessary / doesn't make sense at all
87
115
  def validate_name
88
- return if /^.:.*.sys/ =~ new_resource.path
116
+ return if /^.:.*.sys/.match?(new_resource.path)
89
117
 
90
118
  raise "#{new_resource.path} does not match the format DRIVE:\\path\\file.sys for pagefiles. Example: C:\\pagefile.sys"
91
119
  end
@@ -96,7 +124,7 @@ class Chef
96
124
  # @return [Boolean]
97
125
  def exists?(pagefile)
98
126
  @exists ||= begin
99
- logger.trace("Checking if #{pagefile} exists by runing: wmic.exe pagefileset where SettingID=\"#{get_setting_id(pagefile)}\" list /format:list")
127
+ logger.trace("Checking if #{pagefile} exists by running: wmic.exe pagefileset where SettingID=\"#{get_setting_id(pagefile)}\" list /format:list")
100
128
  cmd = shell_out("wmic.exe pagefileset where SettingID=\"#{get_setting_id(pagefile)}\" list /format:list", returns: [0])
101
129
  cmd.stderr.empty? && (cmd.stdout =~ /SettingID=#{get_setting_id(pagefile)}/i)
102
130
  end
@@ -23,8 +23,25 @@ class Chef
23
23
  class WindowsPath < Chef::Resource
24
24
  provides(:windows_path) { true }
25
25
 
26
- description "Use the windows_path resource to manage the path environment variable on Microsoft Windows."
26
+ description "Use the **windows_path** resource to manage the path environment variable on Microsoft Windows."
27
27
  introduced "13.4"
28
+ examples <<~DOC
29
+ **Add Sysinternals to the system path**:
30
+
31
+ ```ruby
32
+ windows_path 'C:\\Sysinternals' do
33
+ action :add
34
+ end
35
+ ```
36
+
37
+ **Remove 7-Zip from the system path**:
38
+
39
+ ```ruby
40
+ windows_path 'C:\\7-Zip' do
41
+ action :remove
42
+ end
43
+ ```
44
+ DOC
28
45
 
29
46
  allowed_actions :add, :remove
30
47
  default_action :add
@@ -26,11 +26,31 @@ class Chef
26
26
 
27
27
  provides(:windows_printer) { true }
28
28
 
29
- description "Use the windows_printer resource to setup Windows printers. Note that this doesn't currently install a printer driver. You must already have the driver installed on the system."
29
+ description "Use the **windows_printer** resource to setup Windows printers. Note that this doesn't currently install a printer driver. You must already have the driver installed on the system."
30
30
  introduced "14.0"
31
+ examples <<~DOC
32
+ **Create a printer**:
33
+
34
+ ```ruby
35
+ windows_printer 'HP LaserJet 5th Floor' do
36
+ driver_name 'HP LaserJet 4100 Series PCL6'
37
+ ipv4_address '10.4.64.38'
38
+ end
39
+ ```
40
+
41
+ **Delete a printer**:
42
+
43
+ Note: this doesn't delete the associated printer port. See windows_printer_port above for how to delete the port.
44
+
45
+ ```ruby
46
+ windows_printer 'HP LaserJet 5th Floor' do
47
+ action :delete
48
+ end
49
+ ```
50
+ DOC
31
51
 
32
52
  property :device_id, String,
33
- description: "An optional property to set the printer queue name if it differs from the resource block's name. Example: 'HP LJ 5200 in fifth floor copy room'.",
53
+ description: "An optional property to set the printer queue name if it differs from the resource block's name. Example: `HP LJ 5200 in fifth floor copy room`.",
34
54
  name_property: true
35
55
 
36
56
  property :comment, String,
@@ -42,10 +62,10 @@ class Chef
42
62
 
43
63
  property :driver_name, String,
44
64
  description: "The exact name of printer driver installed on the system.",
45
- required: true
65
+ required: [:create]
46
66
 
47
67
  property :location, String,
48
- description: "Printer location, such as 'Fifth floor copy room'."
68
+ description: "Printer location, such as `Fifth floor copy room`."
49
69
 
50
70
  property :shared, [TrueClass, FalseClass],
51
71
  description: "Determines whether or not the printer is shared.",
@@ -55,8 +75,8 @@ class Chef
55
75
  description: "The name used to identify the shared printer."
56
76
 
57
77
  property :ipv4_address, String,
58
- description: "The IPv4 address of the printer, such as '10.4.64.23'",
59
- validation_message: "The ipv4_address property must be in the IPv4 format of WWW.XXX.YYY.ZZZ",
78
+ description: "The IPv4 address of the printer, such as `10.4.64.23`",
79
+ validation_message: "The ipv4_address property must be in the IPv4 format of `WWW.XXX.YYY.ZZZ`",
60
80
  regex: Resolv::IPv4::Regex
61
81
 
62
82
  property :exists, [TrueClass, FalseClass],
@@ -26,8 +26,36 @@ class Chef
26
26
 
27
27
  provides(:windows_printer_port) { true }
28
28
 
29
- description "Use the windows_printer_port resource to create and delete TCP/IPv4 printer ports on Windows."
29
+ description "Use the **windows_printer_port** resource to create and delete TCP/IPv4 printer ports on Windows."
30
30
  introduced "14.0"
31
+ examples <<~DOC
32
+ **Delete a printer port**
33
+
34
+ ```ruby
35
+ windows_printer_port '10.4.64.37' do
36
+ action :delete
37
+ end
38
+ ```
39
+
40
+ **Delete a port with a custom port_name**
41
+
42
+ ```ruby
43
+ windows_printer_port '10.4.64.38' do
44
+ port_name 'My awesome port'
45
+ action :delete
46
+ end
47
+ ```
48
+
49
+ **Create a port with more options**
50
+
51
+ ```ruby
52
+ windows_printer_port '10.4.64.39' do
53
+ port_name 'My awesome port'
54
+ snmp_enabled true
55
+ port_protocol 2
56
+ end
57
+ ```
58
+ DOC
31
59
 
32
60
  property :ipv4_address, String,
33
61
  name_property: true,
@@ -16,34 +16,20 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require_relative "../platform/query_helpers"
20
19
  require_relative "script"
21
20
  require_relative "../mixin/windows_architecture_helper"
22
21
 
23
22
  class Chef
24
23
  class Resource
25
24
  class WindowsScript < Chef::Resource::Script
26
- unified_mode true
25
+ include Chef::Mixin::WindowsArchitectureHelper
27
26
 
28
- provides :windows_script
27
+ unified_mode true
29
28
 
30
29
  # This is an abstract resource meant to be subclasses; thus no 'provides'
31
30
 
32
31
  set_guard_inherited_attributes(:architecture)
33
32
 
34
- protected
35
-
36
- def initialize(name, run_context, resource_name, interpreter_command)
37
- super(name, run_context)
38
- @interpreter = interpreter_command
39
- @resource_name = resource_name if resource_name
40
- @default_guard_interpreter = self.resource_name
41
- end
42
-
43
- include Chef::Mixin::WindowsArchitectureHelper
44
-
45
- public
46
-
47
33
  def architecture(arg = nil)
48
34
  assert_architecture_compatible!(arg) unless arg.nil?
49
35
  result = set_or_return(
@@ -25,24 +25,55 @@ class Chef
25
25
 
26
26
  # The valid policy_names options found here
27
27
  # https://github.com/ChrisAWalker/cSecurityOptions under 'AccountSettings'
28
- policy_names = %w{MinimumPasswordAge
29
- MaximumPasswordAge
30
- MinimumPasswordLength
31
- PasswordComplexity
32
- PasswordHistorySize
33
- LockoutBadCount
34
- RequireLogonToChangePassword
35
- ForceLogoffWhenHourExpire
36
- NewAdministratorName
37
- NewGuestName
38
- ClearTextPassword
39
- LSAAnonymousNameLookup
40
- EnableAdminAccount
41
- EnableGuestAccount
42
- }
43
- description "Use the windows_security_policy resource to set a security policy on the Microsoft Windows platform."
28
+ policy_names = %w{LockoutDuration
29
+ MaximumPasswordAge
30
+ MinimumPasswordAge
31
+ MinimumPasswordLength
32
+ PasswordComplexity
33
+ PasswordHistorySize
34
+ LockoutBadCount
35
+ ResetLockoutCount
36
+ RequireLogonToChangePassword
37
+ ForceLogoffWhenHourExpire
38
+ NewAdministratorName
39
+ NewGuestName
40
+ ClearTextPassword
41
+ LSAAnonymousNameLookup
42
+ EnableAdminAccount
43
+ EnableGuestAccount
44
+ }
45
+ description "Use the **windows_security_policy** resource to set a security policy on the Microsoft Windows platform."
44
46
  introduced "16.0"
45
47
 
48
+ examples <<~DOC
49
+ **Set Administrator Account to Enabled**:
50
+
51
+ ```ruby
52
+ windows_security_policy 'EnableAdminAccount' do
53
+ secvalue '1'
54
+ action :set
55
+ end
56
+ ```
57
+
58
+ **Rename Administrator Account**:
59
+
60
+ ```ruby
61
+ windows_security_policy 'NewAdministratorName' do
62
+ secvalue 'AwesomeChefGuy'
63
+ action :set
64
+ end
65
+ ```
66
+
67
+ **Set Guest Account to Disabled**:
68
+
69
+ ```ruby
70
+ windows_security_policy 'EnableGuestAccount' do
71
+ secvalue '0'
72
+ action :set
73
+ end
74
+ ```
75
+ DOC
76
+
46
77
  property :secoption, String, name_property: true, required: true, equal_to: policy_names,
47
78
  description: "The name of the policy to be set on windows platform to maintain its security."
48
79
 
@@ -36,7 +36,7 @@ class Chef
36
36
  provides(:windows_service) { true }
37
37
  provides :service, os: "windows"
38
38
 
39
- description "Use the windows_service resource to create, delete, or manage a service on the Microsoft Windows platform."
39
+ description "Use the **windows_service** resource to create, delete, or manage a service on the Microsoft Windows platform."
40
40
  introduced "12.0"
41
41
 
42
42
  allowed_actions :configure_startup, :create, :delete, :configure
@@ -28,8 +28,28 @@ class Chef
28
28
  class WindowsShare < Chef::Resource
29
29
  provides :windows_share
30
30
 
31
- description "Use the windows_share resource to create, modify and remove Windows shares."
31
+ description "Use the **windows_share** resource to create, modify and remove Windows shares."
32
32
  introduced "14.7"
33
+ examples <<~DOC
34
+ **Create a share**:
35
+
36
+ ```ruby
37
+ windows_share 'foo' do
38
+ action :create
39
+ path 'C:\\foo'
40
+ full_users ['DOMAIN_A\\some_user', 'DOMAIN_B\\some_other_user']
41
+ read_users ['DOMAIN_C\\Domain users']
42
+ end
43
+ ```
44
+
45
+ **Delete a share**:
46
+
47
+ ```ruby
48
+ windows_share 'foo' do
49
+ action :delete
50
+ end
51
+ ```
52
+ DOC
33
53
 
34
54
  # 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.
35
55
  property :share_name, String,
@@ -167,8 +187,8 @@ class Chef
167
187
  [f_users, c_users, r_users]
168
188
  end
169
189
 
170
- # local names are returned from Get-SmbShareAccess in the full format MACHINE\\NAME
171
- # but users of this resource would simply say NAME so we need to strip the values for comparison
190
+ # local names are returned from Get-SmbShareAccess in the full format MACHINE\\NAME
191
+ # but users of this resource would simply say NAME so we need to strip the values for comparison
172
192
  def stripped_account(name)
173
193
  name.slice!("#{node["hostname"]}\\")
174
194
  name
@@ -23,8 +23,18 @@ class Chef
23
23
  class WindowsShortcut < Chef::Resource
24
24
  provides(:windows_shortcut) { true }
25
25
 
26
- description "Use the windows_shortcut resource to create shortcut files on Windows."
26
+ description "Use the **windows_shortcut** resource to create shortcut files on Windows."
27
27
  introduced "14.0"
28
+ examples <<~DOC
29
+ **Create a shortcut with a description**:
30
+
31
+ ```ruby
32
+ windows_shortcut 'C:\\shortcut_dir.lnk' do
33
+ target 'C:\\original_dir'
34
+ description 'Make a shortcut to C:\\original_dir'
35
+ end
36
+ ```
37
+ DOC
28
38
 
29
39
  property :shortcut_name, String,
30
40
  description: "An optional property to set the shortcut name if it differs from the resource block's name.",
@@ -43,10 +53,10 @@ class Chef
43
53
  description: "Working directory to use when the target is executed."
44
54
 
45
55
  property :iconlocation, String,
46
- 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"
56
+ description: "Icon to use for the shortcut. Accepts the format of `path, index`, where index is the icon file to use. See Microsoft's [documentation](https://msdn.microsoft.com/en-us/library/3s9bx7at.aspx) for details"
47
57
 
48
58
  load_current_value do |desired|
49
- require "win32ole" if RUBY_PLATFORM =~ /mswin|mingw32|windows/
59
+ require "win32ole" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
50
60
 
51
61
  link = WIN32OLE.new("WScript.Shell").CreateShortcut(desired.shortcut_name)
52
62
  name desired.shortcut_name
@@ -24,14 +24,127 @@ class Chef
24
24
  class WindowsTask < Chef::Resource
25
25
  provides(:windows_task) { true }
26
26
 
27
- 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."
27
+ description "Use the **windows_task** resource to create, delete or run a Windows scheduled task."
28
28
  introduced "13.0"
29
+ examples <<~DOC
30
+ **Create a scheduled task to run every 15 minutes as the Administrator user**:
31
+
32
+ ```ruby
33
+ windows_task 'chef-client' do
34
+ user 'Administrator'
35
+ password 'password'
36
+ command 'chef-client'
37
+ run_level :highest
38
+ frequency :minute
39
+ frequency_modifier 15
40
+ end
41
+ ```
42
+
43
+ **Create a scheduled task to run every 2 days**:
44
+
45
+ ``` ruby
46
+ windows_task 'chef-client' do
47
+ command 'chef-client'
48
+ run_level :highest
49
+ frequency :daily
50
+ frequency_modifier 2
51
+ end
52
+ ```
53
+
54
+ **Create a scheduled task to run on specific days of the week**:
55
+
56
+ ```ruby
57
+ windows_task 'chef-client' do
58
+ command 'chef-client'
59
+ run_level :highest
60
+ frequency :weekly
61
+ day 'Mon, Thu'
62
+ end
63
+ ```
64
+
65
+ **Create a scheduled task to run only once**:
66
+
67
+ ```ruby
68
+ windows_task 'chef-client' do
69
+ command 'chef-client'
70
+ run_level :highest
71
+ frequency :once
72
+ start_time "16:10"
73
+ end
74
+ ```
75
+
76
+ **Create a scheduled task to run on current day every 3 weeks and delay upto 1 min**:
77
+
78
+ ```ruby
79
+ windows_task 'chef-client' do
80
+ command 'chef-client'
81
+ run_level :highest
82
+ frequency :weekly
83
+ frequency_modifier 3
84
+ random_delay '60'
85
+ end
86
+ ```
87
+
88
+ **Create a scheduled task to run weekly starting on Dec 28th 2018**:
89
+
90
+ ```ruby
91
+ windows_task 'chef-client 8' do
92
+ command 'chef-client'
93
+ run_level :highest
94
+ frequency :weekly
95
+ start_day '12/28/2018'
96
+ end
97
+ ```
98
+
99
+ **Create a scheduled task to run every Monday, Friday every 2 weeks**:
100
+
101
+ ```ruby
102
+ windows_task 'chef-client' do
103
+ command 'chef-client'
104
+ run_level :highest
105
+ frequency :weekly
106
+ frequency_modifier 2
107
+ day 'Mon, Fri'
108
+ end
109
+ ```
110
+
111
+ **Create a scheduled task to run when computer is idle with idle duration 20 min**:
112
+ ```ruby
113
+ windows_task 'chef-client' do
114
+ command 'chef-client'
115
+ run_level :highest
116
+ frequency :on_idle
117
+ idle_time 20
118
+ end
119
+ ```
120
+
121
+ **Delete a task named "old task"**:
122
+ ```ruby
123
+ windows_task 'old task' do
124
+ action :delete
125
+ end
126
+ ```
127
+
128
+ **Enable a task named "chef-client"**:
129
+ ```ruby
130
+ windows_task 'chef-client' do
131
+ action :enable
132
+ end
133
+ ```
134
+
135
+ **Disable a task named "ProgramDataUpdater" with TaskPath "\\Microsoft\\Windows\\Application Experience\\ProgramDataUpdater"**
136
+ ```ruby
137
+ windows_task '\\Microsoft\\Windows\\Application Experience\\ProgramDataUpdater' do
138
+ action :disable
139
+ end
140
+ ```
141
+ DOC
29
142
 
30
143
  allowed_actions :create, :delete, :run, :end, :enable, :disable, :change
31
144
  default_action :create
32
145
 
33
146
  property :task_name, String, regex: [%r{\A[^/\:\*\?\<\>\|]+\z}],
34
- description: "An optional property to set the task name if it differs from the resource block's name. Example: 'Task Name' or '/Task Name'",
147
+ description: "An optional property to set the task name if it differs from the resource block's name. Example: `Task Name` or `/Task Name`",
35
148
  name_property: true
36
149
 
37
150
  property :command, String,
@@ -46,10 +159,10 @@ class Chef
46
159
  default_description: "The localized SYSTEM user for the node."
47
160
 
48
161
  property :password, String,
49
- description: "The users password. The user property must be set if using this property."
162
+ description: "The user's password. The user property must be set if using this property."
50
163
 
51
164
  property :run_level, Symbol, equal_to: %i{highest limited},
52
- description: "Run with ':limited' or ':highest' privileges.",
165
+ description: "Run with `:limited` or `:highest` privileges.",
53
166
  default: :limited
54
167
 
55
168
  property :force, [TrueClass, FalseClass],
@@ -76,27 +189,28 @@ class Chef
76
189
  description: "The frequency with which to run the task."
77
190
 
78
191
  property :start_day, String,
79
- description: "Specifies the first date on which the task runs in MM/DD/YYYY format.",
192
+ description: "Specifies the first date on which the task runs in **MM/DD/YYYY** format.",
80
193
  default_description: "The current date."
81
194
 
82
195
  property :start_time, String,
83
- description: "Specifies the start time to run the task, in HH:mm format."
196
+ description: "Specifies the start time to run the task, in **HH:mm** format."
84
197
 
85
198
  property :day, [String, Integer],
86
199
  description: "The day(s) on which the task runs."
87
200
 
88
201
  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'."
202
+ 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
203
 
91
204
  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."
205
+ description: "For `:on_idle` frequency, the time (in minutes) without user activity that must pass to trigger the task, from `1` - `999`."
93
206
 
94
207
  property :random_delay, [String, Integer],
95
208
  description: "Delays the task up to a given time (in seconds)."
96
209
 
97
210
  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
211
+ description: "The maximum time the task will run. This field accepts either seconds or an ISO8601 duration value.",
212
+ default: "PT72H",
213
+ default_description: "PT72H (72 hours in ISO8601 duration format)"
100
214
 
101
215
  property :minutes_duration, [String, Integer],
102
216
  description: ""
@@ -158,16 +272,16 @@ class Chef
158
272
 
159
273
  private
160
274
 
161
- ## Resource is not idempotent when day, start_day is not provided with frequency :weekly
162
- ## 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 ..
163
- ## 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
275
+ ## Resource is not idempotent when day, start_day is not provided with frequency :weekly
276
+ ## 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 ..
277
+ ## 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 update gets called
164
278
  def idempotency_warning_for_frequency_weekly(day, start_day)
165
279
  if start_day.nil? && day.nil?
166
280
  logger.warn "To maintain idempotency for frequency :weekly provide start_day, start_time and day."
167
281
  end
168
282
  end
169
283
 
170
- # Validate the passed value is numeric values only if it is a string
284
+ # Validate the passed value is numeric values only if it is a string
171
285
  def numeric_value_in_string?(val)
172
286
  return true if Integer(val)
173
287
  rescue ArgumentError
@@ -181,19 +295,19 @@ class Chef
181
295
  end
182
296
 
183
297
  def validate_frequency_monthly(frequency_modifier, months, day)
184
- # validates the frequency :monthly and raises error if frequency_modifier is first, second, thrid etc and day is not provided
298
+ # validates the frequency :monthly and raises error if frequency_modifier is first, second, third etc and day is not provided
185
299
  if (frequency_modifier != 1) && (frequency_modifier_includes_days_of_weeks?(frequency_modifier)) && !(day)
186
- raise ArgumentError, "Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be seprated by comma."
300
+ raise ArgumentError, "Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be separated by comma."
187
301
  end
188
302
 
189
- # 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.
190
- # 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
303
+ # frequency_modifier 2-12 is used to set every (n) months, so using :months property with frequency_modifier is not valid since they both used to set months.
304
+ # Not checking value 1 here for frequency_modifier since we are setting that as default value it won't break anything since preference is given to months property
191
305
  if (frequency_modifier.to_i.between?(2, 12)) && !(months.nil?)
192
306
  raise ArgumentError, "For frequency :monthly either use property months or frequency_modifier to set months."
193
307
  end
194
308
  end
195
309
 
196
- # returns true if frequency_modifer has values First, second, third, fourth, last, lastday
310
+ # returns true if frequency_modifier has values First, second, third, fourth, last, lastday
197
311
  def frequency_modifier_includes_days_of_weeks?(frequency_modifier)
198
312
  frequency_modifier = frequency_modifier.to_s.split(",")
199
313
  frequency_modifier.map! { |value| value.strip.upcase }
@@ -208,7 +322,7 @@ class Chef
208
322
  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)
209
323
  end
210
324
 
211
- # @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~f
325
+ # @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~f
212
326
  def validate_start_day(start_day, frequency)
213
327
  if start_day && frequency == :none
214
328
  raise ArgumentError, "`start_day` property is not supported with frequency: #{frequency}"
@@ -216,15 +330,15 @@ class Chef
216
330
 
217
331
  # make sure the start_day is in MM/DD/YYYY format: http://rubular.com/r/cgjHemtWl5
218
332
  if start_day
219
- raise ArgumentError, "`start_day` property must be in the MM/DD/YYYY format." unless %r{^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$} =~ start_day
333
+ raise ArgumentError, "`start_day` property must be in the MM/DD/YYYY format." unless %r{^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$}.match?(start_day)
220
334
  end
221
335
  end
222
336
 
223
- # @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~
337
+ # @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~
224
338
  def validate_start_time(start_time, frequency)
225
339
  if start_time
226
340
  raise ArgumentError, "`start_time` property is not supported with `frequency :none`" if frequency == :none
227
- 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
341
+ 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]$/.match?(start_time)
228
342
  else
229
343
  raise ArgumentError, "`start_time` needs to be provided with `frequency :once`" if frequency == :once
230
344
  end
@@ -320,7 +434,7 @@ class Chef
320
434
  end
321
435
  end
322
436
 
323
- # This method returns true if day has values from 1-31 which is a days of moths and used with frequency :monthly
437
+ # This method returns true if day has values from 1-31 which is a days of moths and used with frequency :monthly
324
438
  def days_includes_days_of_months?(days)
325
439
  days.map! { |day| day.to_s.strip.downcase }
326
440
  (days - VALID_DAYS_OF_MONTH).empty?
@@ -338,11 +452,11 @@ class Chef
338
452
  end
339
453
  end
340
454
 
341
- # Converts the number of seconds to an ISO8601 duration format and returns it.
342
- # Ref : https://github.com/arnau/ISO8601/blob/master/lib/iso8601/duration.rb#L18-L23
343
- # e.g.
344
- # ISO8601::Duration.new(65707200).to_s
345
- # returns 'PT65707200S'
455
+ # Converts the number of seconds to an ISO8601 duration format and returns it.
456
+ # Ref : https://github.com/arnau/ISO8601/blob/master/lib/iso8601/duration.rb#L18-L23
457
+ # e.g.
458
+ # ISO8601::Duration.new(65707200).to_s
459
+ # returns 'PT65707200S'
346
460
  def sec_to_dur(seconds)
347
461
  ISO8601::Duration.new(seconds.to_i).to_s
348
462
  end