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
@@ -26,9 +26,9 @@ class Chef
26
26
  provides :chef_vault_secret
27
27
 
28
28
  introduced "16.0"
29
- description "Use the chef_vault_secret resource to store secrets in Chef Vault items. Where possible and relevant, this resource attempts to map behavior and functionality to the knife vault sub-commands."
29
+ description "Use the **chef_vault_secret** resource to store secrets in Chef Vault items. Where possible and relevant, this resource attempts to map behavior and functionality to the knife vault sub-commands."
30
30
  examples <<~DOC
31
- To create a 'foo' item in an existing 'bar' data bag:
31
+ **To create a 'foo' item in an existing 'bar' data bag**:
32
32
 
33
33
  ```ruby
34
34
  chef_vault_secret 'foo' do
@@ -39,13 +39,13 @@ class Chef
39
39
  end
40
40
  ```
41
41
 
42
- To allow multiple admins access to an item:
42
+ **To allow multiple admins access to an item**:
43
43
 
44
44
  ```ruby
45
45
  chef_vault_secret 'root-password' do
46
46
  admins 'jtimberman,paulmooring'
47
47
  data_bag 'secrets'
48
- raw_data({'auth' => 'DontUseThisPasswordForRoot'})
48
+ raw_data({'auth' => 'DoNotUseThisPasswordForRoot'})
49
49
  search '*:*'
50
50
  end
51
51
  ```
@@ -21,10 +21,11 @@ class Chef
21
21
 
22
22
  provides :chocolatey_config
23
23
 
24
- description "Use the chocolatey_config resource to add or remove Chocolatey configuration keys."
24
+ description "Use the **chocolatey_config** resource to add or remove Chocolatey configuration keys."
25
25
  introduced "14.3"
26
26
  examples <<~DOC
27
- Set the Chocolatey cacheLocation config
27
+ **Set the Chocolatey cacheLocation config**:
28
+
28
29
  ```ruby
29
30
  chocolatey_config 'Set cacheLocation config' do
30
31
  config_key 'cacheLocation'
@@ -32,7 +33,8 @@ class Chef
32
33
  end
33
34
  ```
34
35
 
35
- Unset a Chocolatey config
36
+ **Unset a Chocolatey config**:
37
+
36
38
  ```ruby
37
39
  chocolatey_config 'BogusConfig' do
38
40
  action :unset
@@ -20,17 +20,19 @@ class Chef
20
20
  unified_mode true
21
21
  provides :chocolatey_feature
22
22
 
23
- description "Use the chocolatey_feature resource to enable and disable Chocolatey features."
23
+ description "Use the **chocolatey_feature** resource to enable and disable Chocolatey features."
24
24
  introduced "15.1"
25
25
  examples <<~DOC
26
- Enable the checksumFiles Chocolatey feature
26
+ **Enable the checksumFiles Chocolatey feature**
27
+
27
28
  ```ruby
28
29
  chocolatey_feature 'checksumFiles' do
29
30
  action :enable
30
31
  end
31
32
  ```
32
33
 
33
- Disable the checksumFiles Chocolatey feature
34
+ **Disable the checksumFiles Chocolatey feature**
35
+
34
36
  ```ruby
35
37
  chocolatey_feature 'checksumFiles' do
36
38
  action :disable
@@ -25,17 +25,19 @@ class Chef
25
25
 
26
26
  provides :chocolatey_package
27
27
 
28
- description "Use the chocolatey_package resource to manage packages using Chocolatey on the Microsoft Windows platform."
28
+ description "Use the **chocolatey_package** resource to manage packages using Chocolatey on the Microsoft Windows platform. Note: The Chocolatey package manager is not installed on Windows by default. You will need to install it prior to using this resource by adding the [Chocolatey cookbook](https://supermarket.chef.io/cookbooks/chocolatey/) to your node's run list."
29
29
  introduced "12.7"
30
30
  examples <<~DOC
31
- Install a Chocolatey package
31
+ **Install a Chocolatey package**:
32
+
32
33
  ```ruby
33
34
  chocolatey_package 'name of package' do
34
35
  action :install
35
36
  end
36
37
  ```
37
38
 
38
- Install a package with options with Chocolatey's ``--checksum`` option
39
+ **Install a package with options with Chocolatey's `--checksum` option**:
40
+
39
41
  ```ruby
40
42
  chocolatey_package 'name of package' do
41
43
  options '--checksum 1234567890'
@@ -20,10 +20,11 @@ class Chef
20
20
  unified_mode true
21
21
  provides :chocolatey_source
22
22
 
23
- description "Use the chocolatey_source resource to add, remove, enable, or disable Chocolatey sources."
23
+ description "Use the **chocolatey_source** resource to add, remove, enable, or disable Chocolatey sources."
24
24
  introduced "14.3"
25
25
  examples <<~DOC
26
- Add a Chocolatey source
26
+ **Add a Chocolatey source**
27
+
27
28
  ```ruby
28
29
  chocolatey_source 'MySource' do
29
30
  source 'http://example.com/something'
@@ -31,7 +32,8 @@ class Chef
31
32
  end
32
33
  ```
33
34
 
34
- Remove a Chocolatey source
35
+ **Remove a Chocolatey source**
36
+
35
37
  ```ruby
36
38
  chocolatey_source 'MySource' do
37
39
  action :remove
@@ -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(