chef 15.14.0 → 16.0.257

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +10 -15
  3. data/README.md +4 -4
  4. data/Rakefile +1 -1
  5. data/chef-universal-mingw32.gemspec +2 -2
  6. data/chef.gemspec +8 -6
  7. data/lib/chef/action_collection.rb +16 -5
  8. data/lib/chef/api_client/registration.rb +2 -2
  9. data/lib/chef/application.rb +33 -54
  10. data/lib/chef/application/apply.rb +20 -3
  11. data/lib/chef/application/base.rb +8 -3
  12. data/lib/chef/application/exit_code.rb +2 -2
  13. data/lib/chef/application/knife.rb +1 -1
  14. data/lib/chef/chef_class.rb +4 -4
  15. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  16. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  18. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  19. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  20. data/lib/chef/chef_fs/file_system/repository/base_file.rb +0 -1
  21. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  22. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +5 -5
  24. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  25. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  26. data/lib/chef/chef_fs/path_utils.rb +3 -3
  27. data/lib/chef/client.rb +16 -14
  28. data/lib/chef/config.rb +1 -1
  29. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  30. data/lib/chef/cookbook/gem_installer.rb +1 -1
  31. data/lib/chef/cookbook/metadata.rb +45 -22
  32. data/lib/chef/cookbook_version.rb +40 -5
  33. data/lib/chef/data_bag.rb +2 -2
  34. data/lib/chef/data_collector/error_handlers.rb +1 -1
  35. data/lib/chef/data_collector/run_end_message.rb +7 -1
  36. data/lib/chef/deprecated.rb +1 -9
  37. data/lib/chef/dist.rb +8 -0
  38. data/lib/chef/dsl/chef_vault.rb +84 -0
  39. data/lib/chef/dsl/declare_resource.rb +7 -5
  40. data/lib/chef/dsl/platform_introspection.rb +2 -3
  41. data/lib/chef/dsl/recipe.rb +7 -12
  42. data/lib/chef/dsl/universal.rb +3 -7
  43. data/lib/chef/environment.rb +2 -2
  44. data/lib/chef/event_dispatch/base.rb +3 -0
  45. data/lib/chef/exceptions.rb +0 -3
  46. data/lib/chef/formatters/doc.rb +1 -1
  47. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  48. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  49. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  50. data/lib/chef/http.rb +1 -2
  51. data/lib/chef/http/http_request.rb +3 -2
  52. data/lib/chef/knife.rb +1 -3
  53. data/lib/chef/knife/acl_add.rb +57 -0
  54. data/lib/chef/knife/acl_base.rb +183 -0
  55. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  56. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  57. data/lib/chef/knife/acl_remove.rb +62 -0
  58. data/lib/chef/knife/acl_show.rb +56 -0
  59. data/lib/chef/knife/bootstrap.rb +93 -97
  60. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  61. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  62. data/lib/chef/knife/bootstrap/templates/chef-full.erb +20 -20
  63. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +13 -15
  64. data/lib/chef/knife/bootstrap/train_connector.rb +0 -1
  65. data/lib/chef/knife/cookbook_download.rb +1 -1
  66. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  67. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  68. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  69. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  70. data/lib/chef/knife/core/hashed_command_loader.rb +2 -3
  71. data/lib/chef/knife/core/node_presenter.rb +2 -2
  72. data/lib/chef/knife/core/status_presenter.rb +5 -5
  73. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  74. data/lib/chef/knife/core/ui.rb +17 -1
  75. data/lib/chef/knife/core/windows_bootstrap_context.rb +45 -58
  76. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  77. data/lib/chef/knife/environment_compare.rb +1 -1
  78. data/lib/chef/knife/exec.rb +2 -2
  79. data/lib/chef/knife/group_add.rb +55 -0
  80. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  81. data/lib/chef/knife/group_destroy.rb +53 -0
  82. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  83. data/lib/chef/knife/group_remove.rb +56 -0
  84. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  85. data/lib/chef/knife/list.rb +1 -1
  86. data/lib/chef/knife/ssh.rb +12 -50
  87. data/lib/chef/knife/status.rb +3 -3
  88. data/lib/chef/knife/supermarket_download.rb +1 -2
  89. data/lib/chef/knife/supermarket_install.rb +1 -2
  90. data/lib/chef/knife/supermarket_list.rb +1 -2
  91. data/lib/chef/knife/supermarket_search.rb +1 -2
  92. data/lib/chef/knife/supermarket_share.rb +1 -2
  93. data/lib/chef/knife/supermarket_show.rb +1 -2
  94. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  95. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  96. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  97. data/lib/chef/knife/user_invite_list.rb +34 -0
  98. data/lib/chef/knife/user_invite_recind.rb +63 -0
  99. data/lib/chef/knife/yaml_convert.rb +91 -0
  100. data/lib/chef/log.rb +1 -1
  101. data/lib/chef/mixin/create_path.rb +8 -8
  102. data/lib/chef/mixin/openssl_helper.rb +3 -26
  103. data/lib/chef/mixin/powershell_exec.rb +10 -1
  104. data/lib/chef/mixin/powershell_out.rb +1 -1
  105. data/lib/chef/mixin/properties.rb +13 -1
  106. data/lib/chef/mixin/shell_out.rb +0 -4
  107. data/lib/chef/mixin/template.rb +0 -1
  108. data/lib/chef/monkey_patches/net_http.rb +0 -4
  109. data/lib/chef/node.rb +18 -6
  110. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  111. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  112. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  113. data/lib/chef/node_map.rb +7 -36
  114. data/lib/chef/platform/priority_map.rb +4 -4
  115. data/lib/chef/platform/query_helpers.rb +6 -34
  116. data/lib/chef/powershell.rb +14 -0
  117. data/lib/chef/property.rb +22 -4
  118. data/lib/chef/provider.rb +40 -6
  119. data/lib/chef/provider/cron.rb +2 -2
  120. data/lib/chef/provider/directory.rb +2 -2
  121. data/lib/chef/provider/dsc_resource.rb +1 -1
  122. data/lib/chef/provider/dsc_script.rb +1 -1
  123. data/lib/chef/provider/execute.rb +2 -8
  124. data/lib/chef/provider/file.rb +5 -5
  125. data/lib/chef/provider/git.rb +84 -27
  126. data/lib/chef/provider/group.rb +4 -4
  127. data/lib/chef/provider/http_request.rb +6 -6
  128. data/lib/chef/provider/ifconfig.rb +4 -4
  129. data/lib/chef/provider/launchd.rb +36 -51
  130. data/lib/chef/provider/link.rb +2 -2
  131. data/lib/chef/provider/mount.rb +5 -5
  132. data/lib/chef/provider/mount/solaris.rb +1 -0
  133. data/lib/chef/provider/osx_profile.rb +7 -3
  134. data/lib/chef/provider/package.rb +2 -2
  135. data/lib/chef/provider/package/cab.rb +3 -4
  136. data/lib/chef/provider/package/chocolatey.rb +1 -3
  137. data/lib/chef/provider/package/dnf.rb +66 -10
  138. data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
  139. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  140. data/lib/chef/provider/package/dnf/version.rb +5 -1
  141. data/lib/chef/provider/package/homebrew.rb +106 -42
  142. data/lib/chef/provider/package/msu.rb +3 -1
  143. data/lib/chef/provider/package/pacman.rb +25 -34
  144. data/lib/chef/provider/package/powershell.rb +2 -6
  145. data/lib/chef/provider/package/rubygems.rb +29 -2
  146. data/lib/chef/provider/package/snap.rb +27 -96
  147. data/lib/chef/provider/package/windows.rb +3 -2
  148. data/lib/chef/provider/package/windows/msi.rb +2 -2
  149. data/lib/chef/provider/package/yum.rb +0 -8
  150. data/lib/chef/provider/package/zypper.rb +1 -1
  151. data/lib/chef/provider/powershell_script.rb +4 -10
  152. data/lib/chef/provider/registry_key.rb +4 -4
  153. data/lib/chef/provider/remote_directory.rb +3 -3
  154. data/lib/chef/provider/remote_file/ftp.rb +3 -2
  155. data/lib/chef/provider/remote_file/local_file.rb +2 -1
  156. data/lib/chef/provider/remote_file/sftp.rb +3 -2
  157. data/lib/chef/provider/route.rb +5 -3
  158. data/lib/chef/provider/ruby_block.rb +1 -1
  159. data/lib/chef/provider/script.rb +2 -2
  160. data/lib/chef/provider/service.rb +8 -8
  161. data/lib/chef/provider/service/aixinit.rb +1 -1
  162. data/lib/chef/provider/service/arch.rb +2 -2
  163. data/lib/chef/provider/service/debian.rb +31 -29
  164. data/lib/chef/provider/service/gentoo.rb +2 -2
  165. data/lib/chef/provider/service/macosx.rb +7 -12
  166. data/lib/chef/provider/service/openbsd.rb +1 -1
  167. data/lib/chef/provider/service/redhat.rb +2 -2
  168. data/lib/chef/provider/service/simple.rb +3 -3
  169. data/lib/chef/provider/service/systemd.rb +12 -12
  170. data/lib/chef/provider/service/upstart.rb +1 -1
  171. data/lib/chef/provider/service/windows.rb +5 -11
  172. data/lib/chef/provider/subversion.rb +25 -5
  173. data/lib/chef/provider/systemd_unit.rb +26 -25
  174. data/lib/chef/provider/user.rb +6 -6
  175. data/lib/chef/provider/user/dscl.rb +3 -3
  176. data/lib/chef/provider/user/mac.rb +10 -9
  177. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  178. data/lib/chef/provider/windows_env.rb +3 -3
  179. data/lib/chef/provider/windows_script.rb +2 -2
  180. data/lib/chef/provider/windows_task.rb +7 -9
  181. data/lib/chef/provider/yum_repository.rb +1 -1
  182. data/lib/chef/provider/zypper_repository.rb +11 -31
  183. data/lib/chef/providers.rb +0 -6
  184. data/lib/chef/recipe.rb +36 -0
  185. data/lib/chef/resource.rb +41 -56
  186. data/lib/chef/resource/action_class.rb +24 -22
  187. data/lib/chef/resource/alternatives.rb +149 -0
  188. data/lib/chef/resource/apt_package.rb +2 -1
  189. data/lib/chef/resource/apt_preference.rb +69 -2
  190. data/lib/chef/resource/apt_repository.rb +337 -5
  191. data/lib/chef/resource/apt_update.rb +52 -1
  192. data/lib/chef/resource/archive_file.rb +9 -29
  193. data/lib/chef/resource/bash.rb +2 -0
  194. data/lib/chef/resource/bff_package.rb +9 -1
  195. data/lib/chef/resource/breakpoint.rb +0 -1
  196. data/lib/chef/resource/build_essential.rb +42 -48
  197. data/lib/chef/resource/cab_package.rb +8 -1
  198. data/lib/chef/resource/chef_client_cron.rb +225 -0
  199. data/lib/chef/resource/chef_client_scheduled_task.rb +198 -0
  200. data/lib/chef/resource/chef_client_systemd_timer.rb +177 -0
  201. data/lib/chef/resource/chef_gem.rb +9 -16
  202. data/lib/chef/resource/chef_handler.rb +2 -1
  203. data/lib/chef/resource/chef_sleep.rb +0 -1
  204. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  205. data/lib/chef/resource/chocolatey_config.rb +3 -1
  206. data/lib/chef/resource/chocolatey_feature.rb +2 -1
  207. data/lib/chef/resource/chocolatey_package.rb +2 -1
  208. data/lib/chef/resource/chocolatey_source.rb +2 -1
  209. data/lib/chef/resource/cookbook_file.rb +1 -1
  210. data/lib/chef/resource/cron.rb +22 -68
  211. data/lib/chef/resource/cron_access.rb +8 -15
  212. data/lib/chef/resource/cron_d.rb +9 -74
  213. data/lib/chef/resource/csh.rb +2 -0
  214. data/lib/chef/resource/directory.rb +2 -2
  215. data/lib/chef/resource/dmg_package.rb +4 -4
  216. data/lib/chef/resource/dnf_package.rb +2 -3
  217. data/lib/chef/resource/dpkg_package.rb +2 -1
  218. data/lib/chef/resource/dsc_resource.rb +6 -4
  219. data/lib/chef/resource/dsc_script.rb +3 -2
  220. data/lib/chef/resource/execute.rb +13 -12
  221. data/lib/chef/resource/file.rb +3 -1
  222. data/lib/chef/resource/freebsd_package.rb +2 -1
  223. data/lib/chef/resource/gem_package.rb +14 -6
  224. data/lib/chef/resource/group.rb +4 -1
  225. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  226. data/lib/chef/resource/homebrew_cask.rb +2 -1
  227. data/lib/chef/resource/homebrew_package.rb +4 -2
  228. data/lib/chef/resource/homebrew_tap.rb +2 -1
  229. data/lib/chef/resource/hostname.rb +41 -36
  230. data/lib/chef/resource/http_request.rb +0 -1
  231. data/lib/chef/resource/ifconfig.rb +1 -1
  232. data/lib/chef/resource/ips_package.rb +10 -2
  233. data/lib/chef/resource/kernel_module.rb +29 -29
  234. data/lib/chef/resource/ksh.rb +2 -0
  235. data/lib/chef/resource/launchd.rb +6 -6
  236. data/lib/chef/resource/link.rb +1 -23
  237. data/lib/chef/resource/locale.rb +57 -23
  238. data/lib/chef/resource/log.rb +12 -1
  239. data/lib/chef/resource/lwrp_base.rb +1 -8
  240. data/lib/chef/resource/macos_userdefaults.rb +9 -6
  241. data/lib/chef/resource/macosx_service.rb +2 -1
  242. data/lib/chef/resource/macports_package.rb +10 -2
  243. data/lib/chef/resource/mdadm.rb +62 -2
  244. data/lib/chef/resource/mount.rb +3 -0
  245. data/lib/chef/resource/msu_package.rb +13 -1
  246. data/lib/chef/resource/notify_group.rb +8 -3
  247. data/lib/chef/resource/ohai.rb +19 -3
  248. data/lib/chef/resource/ohai_hint.rb +3 -12
  249. data/lib/chef/resource/openbsd_package.rb +9 -1
  250. data/lib/chef/resource/openssl_dhparam.rb +10 -1
  251. data/lib/chef/resource/openssl_ec_private_key.rb +23 -1
  252. data/lib/chef/resource/openssl_ec_public_key.rb +21 -1
  253. data/lib/chef/resource/openssl_rsa_private_key.rb +20 -1
  254. data/lib/chef/resource/openssl_rsa_public_key.rb +22 -1
  255. data/lib/chef/resource/openssl_x509_certificate.rb +37 -1
  256. data/lib/chef/resource/openssl_x509_crl.rb +12 -1
  257. data/lib/chef/resource/openssl_x509_request.rb +37 -1
  258. data/lib/chef/resource/osx_profile.rb +3 -2
  259. data/lib/chef/resource/package.rb +2 -1
  260. data/lib/chef/resource/pacman_package.rb +2 -1
  261. data/lib/chef/resource/paludis_package.rb +12 -3
  262. data/lib/chef/resource/perl.rb +2 -0
  263. data/lib/chef/resource/plist.rb +207 -0
  264. data/lib/chef/resource/portage_package.rb +13 -3
  265. data/lib/chef/resource/powershell_package.rb +1 -3
  266. data/lib/chef/resource/powershell_package_source.rb +3 -1
  267. data/lib/chef/resource/powershell_script.rb +7 -17
  268. data/lib/chef/resource/python.rb +2 -0
  269. data/lib/chef/resource/reboot.rb +0 -1
  270. data/lib/chef/resource/registry_key.rb +1 -2
  271. data/lib/chef/resource/remote_directory.rb +2 -0
  272. data/lib/chef/resource/remote_file.rb +2 -0
  273. data/lib/chef/resource/rhsm_errata.rb +0 -1
  274. data/lib/chef/resource/rhsm_errata_level.rb +0 -1
  275. data/lib/chef/resource/rhsm_register.rb +2 -1
  276. data/lib/chef/resource/rhsm_repo.rb +3 -1
  277. data/lib/chef/resource/rhsm_subscription.rb +4 -1
  278. data/lib/chef/resource/route.rb +5 -1
  279. data/lib/chef/resource/rpm_package.rb +9 -2
  280. data/lib/chef/resource/ruby.rb +2 -0
  281. data/lib/chef/resource/ruby_block.rb +1 -1
  282. data/lib/chef/resource/scm/_scm.rb +48 -0
  283. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  284. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +8 -5
  285. data/lib/chef/resource/script.rb +6 -3
  286. data/lib/chef/resource/service.rb +6 -7
  287. data/lib/chef/resource/smartos_package.rb +9 -1
  288. data/lib/chef/resource/snap_package.rb +3 -1
  289. data/lib/chef/resource/solaris_package.rb +9 -1
  290. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  291. data/lib/chef/resource/sudo.rb +9 -9
  292. data/lib/chef/resource/support/cron.d.erb +1 -1
  293. data/lib/chef/resource/support/cron_access.erb +1 -1
  294. data/lib/chef/resource/support/sudoer.erb +1 -2
  295. data/lib/chef/resource/support/ulimit.erb +41 -0
  296. data/lib/chef/resource/swap_file.rb +5 -3
  297. data/lib/chef/resource/sysctl.rb +2 -2
  298. data/lib/chef/resource/systemd_unit.rb +4 -2
  299. data/lib/chef/resource/template.rb +0 -1
  300. data/lib/chef/resource/timezone.rb +7 -18
  301. data/lib/chef/resource/user.rb +1 -3
  302. data/lib/chef/resource/user/aix_user.rb +0 -2
  303. data/lib/chef/resource/user/dscl_user.rb +1 -1
  304. data/lib/chef/resource/user/linux_user.rb +0 -2
  305. data/lib/chef/resource/user/mac_user.rb +1 -1
  306. data/lib/chef/resource/user/pw_user.rb +0 -2
  307. data/lib/chef/resource/user/solaris_user.rb +0 -2
  308. data/lib/chef/resource/user/windows_user.rb +0 -2
  309. data/lib/chef/resource/user_ulimit.rb +114 -0
  310. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  311. data/lib/chef/resource/windows_ad_join.rb +19 -6
  312. data/lib/chef/resource/windows_auto_run.rb +0 -1
  313. data/lib/chef/resource/windows_certificate.rb +1 -1
  314. data/lib/chef/resource/windows_dfs_folder.rb +0 -1
  315. data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
  316. data/lib/chef/resource/windows_dfs_server.rb +0 -1
  317. data/lib/chef/resource/windows_dns_record.rb +0 -1
  318. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  319. data/lib/chef/resource/windows_env.rb +2 -3
  320. data/lib/chef/resource/windows_feature.rb +2 -2
  321. data/lib/chef/resource/windows_feature_dism.rb +9 -22
  322. data/lib/chef/resource/windows_feature_powershell.rb +17 -82
  323. data/lib/chef/resource/windows_firewall_rule.rb +119 -10
  324. data/lib/chef/resource/windows_font.rb +1 -3
  325. data/lib/chef/resource/windows_package.rb +13 -4
  326. data/lib/chef/resource/windows_pagefile.rb +0 -1
  327. data/lib/chef/resource/windows_path.rb +0 -1
  328. data/lib/chef/resource/windows_printer.rb +0 -1
  329. data/lib/chef/resource/windows_printer_port.rb +0 -1
  330. data/lib/chef/resource/windows_script.rb +3 -4
  331. data/lib/chef/resource/windows_security_policy.rb +90 -0
  332. data/lib/chef/resource/windows_service.rb +45 -31
  333. data/lib/chef/resource/windows_share.rb +3 -7
  334. data/lib/chef/resource/windows_shortcut.rb +0 -1
  335. data/lib/chef/resource/windows_task.rb +14 -15
  336. data/lib/chef/resource/windows_uac.rb +0 -1
  337. data/lib/chef/resource/windows_user_privilege.rb +157 -0
  338. data/lib/chef/resource/windows_workgroup.rb +0 -1
  339. data/lib/chef/resource/yum_package.rb +3 -1
  340. data/lib/chef/resource/yum_repository.rb +2 -1
  341. data/lib/chef/resource/zypper_package.rb +3 -2
  342. data/lib/chef/resource/zypper_repository.rb +2 -1
  343. data/lib/chef/resource_builder.rb +8 -0
  344. data/lib/chef/resource_inspector.rb +6 -6
  345. data/lib/chef/resource_resolver.rb +7 -14
  346. data/lib/chef/resources.rb +11 -3
  347. data/lib/chef/role.rb +2 -2
  348. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  349. data/lib/chef/shell.rb +23 -1
  350. data/lib/chef/shell/shell_session.rb +0 -2
  351. data/lib/chef/util/diff.rb +1 -1
  352. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  353. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  354. data/lib/chef/version.rb +2 -2
  355. data/lib/chef/win32/api/file.rb +18 -18
  356. data/lib/chef/win32/api/security.rb +6 -0
  357. data/lib/chef/win32/file.rb +3 -11
  358. data/lib/chef/win32/process.rb +2 -2
  359. data/lib/chef/win32/security.rb +40 -2
  360. data/spec/functional/assets/inittest +8 -7
  361. data/spec/functional/knife/ssh_spec.rb +27 -23
  362. data/spec/functional/resource/aix_service_spec.rb +1 -0
  363. data/spec/functional/resource/aixinit_service_spec.rb +8 -7
  364. data/spec/functional/resource/apt_package_spec.rb +1 -0
  365. data/spec/functional/resource/bff_spec.rb +2 -2
  366. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  367. data/spec/functional/resource/cron_spec.rb +11 -29
  368. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  369. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  370. data/spec/functional/resource/git_spec.rb +184 -134
  371. data/spec/functional/resource/insserv_spec.rb +6 -5
  372. data/spec/functional/resource/link_spec.rb +17 -17
  373. data/spec/functional/resource/locale_spec.rb +13 -2
  374. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  375. data/spec/functional/resource/rpm_spec.rb +2 -2
  376. data/spec/functional/resource/user/dscl_spec.rb +2 -2
  377. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  378. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  379. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  380. data/spec/functional/resource/windows_task_spec.rb +8 -8
  381. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  382. data/spec/functional/run_lock_spec.rb +1 -2
  383. data/spec/functional/shell_spec.rb +1 -1
  384. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  385. data/spec/functional/version_spec.rb +1 -1
  386. data/spec/functional/win32/registry_spec.rb +0 -6
  387. data/spec/functional/win32/security_spec.rb +22 -0
  388. data/spec/functional/win32/service_manager_spec.rb +1 -1
  389. data/spec/integration/client/client_spec.rb +123 -2
  390. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  391. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  392. data/spec/integration/knife/raw_spec.rb +30 -2
  393. data/spec/integration/knife/show_spec.rb +32 -3
  394. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  395. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -5
  396. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  397. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  398. data/spec/integration/recipes/notifies_spec.rb +50 -21
  399. data/spec/integration/recipes/notifying_block_spec.rb +9 -6
  400. data/spec/integration/recipes/provider_choice.rb +2 -0
  401. data/spec/integration/recipes/recipe_dsl_spec.rb +46 -144
  402. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  403. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -3
  404. data/spec/integration/recipes/resource_load_spec.rb +133 -13
  405. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  406. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  407. data/spec/integration/solo/solo_spec.rb +3 -3
  408. data/spec/scripts/ssl-serve.rb +1 -1
  409. data/spec/spec_helper.rb +11 -14
  410. data/spec/support/chef_helpers.rb +2 -2
  411. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  412. data/spec/support/platform_helpers.rb +44 -19
  413. data/spec/support/platforms/win32/spec_service.rb +1 -1
  414. data/spec/support/recipe_dsl_helper.rb +83 -0
  415. data/spec/support/shared/functional/directory_resource.rb +1 -1
  416. data/spec/support/shared/functional/execute_resource.rb +1 -1
  417. data/spec/support/shared/functional/file_resource.rb +3 -3
  418. data/spec/support/shared/functional/win32_service.rb +1 -1
  419. data/spec/support/shared/functional/windows_script.rb +5 -18
  420. data/spec/support/shared/integration/knife_support.rb +14 -8
  421. data/spec/unit/application/apply_spec.rb +3 -0
  422. data/spec/unit/application/client_spec.rb +5 -1
  423. data/spec/unit/application_spec.rb +1 -9
  424. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +4 -2
  425. data/spec/unit/client_spec.rb +7 -5
  426. data/spec/unit/cookbook/gem_installer_spec.rb +3 -4
  427. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  428. data/spec/unit/data_bag_spec.rb +1 -1
  429. data/spec/unit/data_collector_spec.rb +38 -17
  430. data/spec/unit/dsl/platform_introspection_spec.rb +0 -1
  431. data/spec/unit/environment_spec.rb +7 -7
  432. data/spec/unit/event_dispatch/dispatcher_spec.rb +0 -3
  433. data/spec/unit/file_access_control_spec.rb +1 -1
  434. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  435. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  436. data/spec/unit/knife/bootstrap_spec.rb +36 -54
  437. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  438. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  439. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  440. data/spec/unit/knife/cookbook_upload_spec.rb +6 -5
  441. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  442. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  443. data/spec/unit/knife/core/ui_spec.rb +16 -0
  444. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +8 -68
  445. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  446. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  447. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  448. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  449. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  450. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  451. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  452. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  453. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  454. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  455. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  456. data/spec/unit/knife/ssh_spec.rb +10 -113
  457. data/spec/unit/knife/status_spec.rb +1 -1
  458. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  459. data/spec/unit/knife_spec.rb +18 -0
  460. data/spec/unit/lwrp_spec.rb +4 -4
  461. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  462. data/spec/unit/mixin/securable_spec.rb +1 -0
  463. data/spec/unit/mixin/user_context_spec.rb +9 -1
  464. data/spec/unit/node/attribute_spec.rb +2 -2
  465. data/spec/unit/node_spec.rb +24 -0
  466. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  467. data/spec/unit/property/state_spec.rb +12 -7
  468. data/spec/unit/property/validation_spec.rb +25 -1
  469. data/spec/unit/property_spec.rb +18 -15
  470. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  471. data/spec/unit/provider/apt_repository_spec.rb +9 -11
  472. data/spec/unit/provider/apt_update_spec.rb +12 -11
  473. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  474. data/spec/unit/provider/cron_spec.rb +2 -2
  475. data/spec/unit/provider/directory_spec.rb +4 -15
  476. data/spec/unit/provider/file_spec.rb +4 -4
  477. data/spec/unit/provider/git_spec.rb +44 -4
  478. data/spec/unit/provider/link_spec.rb +0 -1
  479. data/spec/unit/provider/log_spec.rb +3 -3
  480. data/spec/unit/provider/mdadm_spec.rb +3 -3
  481. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  482. data/spec/unit/provider/package/dnf/python_helper_spec.rb +2 -2
  483. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  484. data/spec/unit/provider/package/msu_spec.rb +3 -3
  485. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  486. data/spec/unit/provider/package/powershell_spec.rb +88 -96
  487. data/spec/unit/provider/package/rubygems_spec.rb +221 -31
  488. data/spec/unit/provider/package/snap_spec.rb +1 -1
  489. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  490. data/spec/unit/provider/package/windows_spec.rb +53 -30
  491. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  492. data/spec/unit/provider/remote_file_spec.rb +3 -4
  493. data/spec/unit/provider/service/arch_service_spec.rb +2 -3
  494. data/spec/unit/provider/service/debian_service_spec.rb +35 -14
  495. data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
  496. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  497. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  498. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  499. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  500. data/spec/unit/provider/service/windows_spec.rb +6 -2
  501. data/spec/unit/provider/subversion_spec.rb +4 -2
  502. data/spec/unit/provider/systemd_unit_spec.rb +24 -28
  503. data/spec/unit/provider/template_spec.rb +3 -4
  504. data/spec/unit/provider/zypper_repository_spec.rb +25 -75
  505. data/spec/unit/provider_resolver_spec.rb +11 -11
  506. data/spec/unit/provider_spec.rb +0 -1
  507. data/spec/unit/recipe_spec.rb +68 -0
  508. data/spec/unit/resource/alternatives_spec.rb +120 -0
  509. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  510. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  511. data/spec/unit/resource/apt_update_spec.rb +0 -18
  512. data/spec/unit/resource/archive_file_spec.rb +2 -11
  513. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  514. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  515. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  516. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  517. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  518. data/spec/unit/resource/cron_d_spec.rb +6 -48
  519. data/spec/unit/resource/cron_spec.rb +4 -10
  520. data/spec/unit/resource/gem_package_spec.rb +3 -3
  521. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  522. data/spec/unit/resource/link_spec.rb +0 -4
  523. data/spec/unit/resource/locale_spec.rb +0 -34
  524. data/spec/unit/resource/ohai_spec.rb +56 -2
  525. data/spec/unit/resource/plist_spec.rb +130 -0
  526. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  527. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  528. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  529. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  530. data/spec/unit/resource/service_spec.rb +4 -0
  531. data/spec/unit/resource/user_spec.rb +2 -2
  532. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  533. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  534. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  535. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  536. data/spec/unit/resource/windows_feature_powershell_spec.rb +6 -47
  537. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  538. data/spec/unit/resource/windows_package_spec.rb +4 -1
  539. data/spec/unit/resource/windows_service_spec.rb +9 -0
  540. data/spec/unit/resource/windows_task_spec.rb +1 -1
  541. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  542. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  543. data/spec/unit/resource_reporter_spec.rb +1 -5
  544. data/spec/unit/resource_spec.rb +11 -4
  545. data/spec/unit/role_spec.rb +11 -11
  546. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  547. data/spec/unit/run_context_spec.rb +1 -1
  548. data/spec/unit/search/query_spec.rb +1 -1
  549. data/spec/unit/util/threaded_job_queue_spec.rb +0 -9
  550. data/spec/unit/win32/security_spec.rb +3 -4
  551. data/tasks/rspec.rb +1 -1
  552. metadata +97 -50
  553. data/lib/chef/dsl/core.rb +0 -52
  554. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  555. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  556. data/lib/chef/provider/apt_preference.rb +0 -93
  557. data/lib/chef/provider/apt_repository.rb +0 -358
  558. data/lib/chef/provider/apt_update.rb +0 -79
  559. data/lib/chef/provider/log.rb +0 -43
  560. data/lib/chef/provider/mdadm.rb +0 -85
  561. data/lib/chef/provider/ohai.rb +0 -45
  562. data/lib/chef/resource/git.rb +0 -37
  563. data/spec/functional/resource/windows_font_spec.rb +0 -49
  564. data/spec/unit/provider/ohai_spec.rb +0 -84
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9cedb478d0c5c91ba1217dd228387261aa82eeb69b9f572ce7041719ce3f20f
4
- data.tar.gz: a4c107cea2186b546e20e4a754a6288d5ccd7cae2c88792aa79a4fa2894acc94
3
+ metadata.gz: 1825ecbde1edecfa8a8bfbebe425f053bf176e06553f2c74bbf7d98a2d213967
4
+ data.tar.gz: 2f661249cfa4551fe980d52810b4e14bb12c776486dce1687a7ccc378e55e8d5
5
5
  SHA512:
6
- metadata.gz: 0f116046c01b46cb1de8e2e0eb07fa5bd4dff2045598460c5a7df71d77d2666caac0511071c6b91f1e879a68ae3c10ee72cdb58cbf9ff7b64bc93fbd6903738b
7
- data.tar.gz: 5732ddd577cd6b20a07ee8c899747cb09fda3752136540f4f6cc16f1d406ad5b9e7365dc53dc3e415028c9e4aa5281dfde445e19f83bbc3b5f4f551ca168aa45
6
+ metadata.gz: 34558ba429fea801f67e4296253e7f42cced441fe6304c7529ab8489740494f10f58ef21993508618fa3f67098f3bab2d552ef1dde984b32dbda1f652264e488
7
+ data.tar.gz: 33acd0f1f9d3707862505e4273f18525657487e9185586d54196c5d3cff9916f5ec37540c2737eabc439a9128ec99ebc759ce21470ed1c6874b4d0741d17f99b
data/Gemfile CHANGED
@@ -7,22 +7,20 @@ source "https://rubygems.org"
7
7
  # of bundler versions prior to 1.12.0 (https://github.com/bundler/bundler/commit/193a14fe5e0d56294c7b370a0e59f93b2c216eed)
8
8
  gem "chef", path: "."
9
9
 
10
- gem "ohai", git: "https://github.com/chef/ohai.git", branch: "15-stable"
10
+ gem "ohai", git: "https://github.com/chef/ohai.git", branch: "master"
11
11
 
12
- gem "chef-utils", path: File.expand_path("chef-utils", __dir__) if File.exist?(File.expand_path("chef-utils", __dir__))
13
- gem "chef-config", path: File.expand_path("chef-config", __dir__) if File.exist?(File.expand_path("chef-config", __dir__))
12
+ gem "chef-utils", path: File.expand_path("../chef-utils", __FILE__) if File.exist?(File.expand_path("../chef-utils", __FILE__))
13
+ gem "chef-config", path: File.expand_path("../chef-config", __FILE__) if File.exist?(File.expand_path("../chef-config", __FILE__))
14
14
 
15
- if File.exist?(File.expand_path("chef-bin", __dir__))
15
+ if File.exist?(File.expand_path("../chef-bin", __FILE__))
16
16
  # bundling in a git checkout
17
- gem "chef-bin", path: File.expand_path("chef-bin", __dir__)
17
+ gem "chef-bin", path: File.expand_path("../chef-bin", __FILE__)
18
18
  else
19
19
  # bundling in omnibus
20
20
  gem "chef-bin" # rubocop:disable Bundler/DuplicatedGem
21
21
  end
22
22
 
23
- gem "cheffish", "~> 14"
24
-
25
- gem "chef-telemetry", ">=1.0.8" # 1.0.8 removes the http dep
23
+ gem "cheffish", ">= 14"
26
24
 
27
25
  group(:omnibus_package) do
28
26
  gem "appbundler"
@@ -38,7 +36,7 @@ group(:omnibus_package, :pry) do
38
36
  gem "pry"
39
37
  gem "pry-byebug"
40
38
  gem "pry-remote"
41
- gem "pry-stack_explorer", "~> 0.4.0" # pin to allow Ruby 2.5
39
+ gem "pry-stack_explorer"
42
40
  end
43
41
 
44
42
  group(:docgen) do
@@ -57,11 +55,7 @@ group(:ruby_shadow) do
57
55
  end
58
56
 
59
57
  group(:development, :test) do
60
- # we pin rake as a copy of rake is installed from the ruby source
61
- # if you bump the ruby version you should confirm we don't end up with
62
- # two rake gems installed again
63
- gem "rake", "<= 12.3.3"
64
-
58
+ gem "rake"
65
59
  gem "rspec-core", "~> 3.5"
66
60
  gem "rspec-mocks", "~> 3.5"
67
61
  gem "rspec-expectations", "~> 3.5"
@@ -71,7 +65,8 @@ group(:development, :test) do
71
65
  end
72
66
 
73
67
  group(:chefstyle) do
74
- gem "chefstyle", "1.2.1" # pinned so we don't have to fixup 2 branches for new rules
68
+ # for testing new chefstyle rules
69
+ gem "chefstyle", git: "https://github.com/chef/chefstyle.git", branch: "master"
75
70
  end
76
71
 
77
72
  instance_eval(ENV["GEMFILE_MOD"]) if ENV["GEMFILE_MOD"]
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Chef Infra
2
2
  [![Code Climate](https://codeclimate.com/github/chef/chef.svg)](https://codeclimate.com/github/chef/chef)
3
- [![Build status](https://badge.buildkite.com/13b36bf2d9116e3527ff9893e7edd82cb183027941fef3d24e.svg)](https://buildkite.com/chef-oss/chef-chef-chef-15-verify)
3
+ [![Build Status](https://badge.buildkite.com/c82093430ceec7d27af05febb9dcafe3aa331fff9d74c0ab9d.svg?branch=master)](https://buildkite.com/chef-oss/chef-chef-master-verify)
4
4
  [![Gem Version](https://badge.fury.io/rb/chef.svg)](https://badge.fury.io/rb/chef)
5
5
  [![](https://img.shields.io/badge/Release%20Policy-Cadence%20Release-brightgreen.svg)](https://github.com/chef/chef/blob/v15.2.21/docs/dev/design_documents/client_release_cadence.md)
6
6
 
@@ -18,7 +18,7 @@ Chef Infra is a configuration management tool designed to bring automation to yo
18
18
 
19
19
  ### Want to try Chef Infra?
20
20
 
21
- For Chef Infra usage, please refer to [Learn Chef](https://learn.chef.io/), our self-paced, entirely free learning platform. Learn Chef also includes module-based training for Chef Infra, as well as Chef Automate, Chef Habitat, and Chef InSpec.
21
+ For Chef Infra usage, please refer to our [Learn Chef Rally](https://learn.chef.io/) website, which includes module-based training for Chef Infra, as well as Automate, Habitat, and InSpec.
22
22
 
23
23
  Other useful resources for Chef Infra users:
24
24
 
@@ -26,7 +26,7 @@ Other useful resources for Chef Infra users:
26
26
  - Source: <https://github.com/chef/chef/tree/master>
27
27
  - Tickets/Issues: <https://github.com/chef/chef/issues>
28
28
  - Slack: [Chef Community Slack](https://community-slack.chef.io/)
29
- - Mailing list/Forum: <https://discourse.chef.io>
29
+ - Mailing list: <https://discourse.chef.io>
30
30
 
31
31
  ## Reporting Issues
32
32
 
@@ -46,7 +46,7 @@ We'd love to have your help developing Chef Infra. See our [Contributing Documen
46
46
 
47
47
  ## License and Copyright
48
48
 
49
- Copyright 2008-2020, Chef Software, Inc.
49
+ Copyright 2008-2019, Chef Software, Inc.
50
50
 
51
51
  ```
52
52
  Licensed under the Apache License, Version 2.0 (the "License");
data/Rakefile CHANGED
@@ -37,7 +37,7 @@ task :super_install do
37
37
  sh("rake install")
38
38
  end
39
39
 
40
- # Templating the powershell extensions so we can inject distro constants
40
+ # Templating the powershell extensions so we can inject distro constants
41
41
  template_file = ::File.join(::File.dirname(__FILE__), "distro", "templates", "powershell", "chef", "chef.psm1.erb")
42
42
  psm1_path = ::File.join(::File.dirname(__FILE__), "distro", "powershell", "chef")
43
43
  FileUtils.mkdir_p psm1_path
@@ -1,4 +1,4 @@
1
- gemspec = eval(IO.read(File.expand_path("chef.gemspec", __dir__)))
1
+ gemspec = eval(IO.read(File.expand_path("../chef.gemspec", __FILE__)))
2
2
 
3
3
  gemspec.platform = Gem::Platform.new(%w{universal mingw32})
4
4
 
@@ -14,7 +14,7 @@ gemspec.add_dependency "win32-process", "~> 0.8.2"
14
14
  gemspec.add_dependency "win32-service", ">= 2.1.5", "< 3.0"
15
15
  gemspec.add_dependency "wmi-lite", "~> 1.0"
16
16
  gemspec.add_dependency "win32-taskscheduler", "~> 2.0"
17
- gemspec.add_dependency "iso8601", ">= 0.12.1", "< 0.14" # validate 0.14 when it comes out
17
+ gemspec.add_dependency "iso8601", "~> 0.12.1"
18
18
  gemspec.add_dependency "win32-certstore", "~> 0.3"
19
19
  gemspec.extensions << "ext/win32-eventlog/Rakefile"
20
20
  gemspec.files += Dir.glob("{distro,ext}/**/*")
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.email = "adam@chef.io"
14
14
  s.homepage = "https://www.chef.io"
15
15
 
16
- s.required_ruby_version = ">= 2.5.0"
16
+ s.required_ruby_version = ">= 2.6.0"
17
17
 
18
18
  s.add_dependency "chef-config", "= #{Chef::VERSION}"
19
19
  s.add_dependency "chef-utils", "= #{Chef::VERSION}"
@@ -26,21 +26,23 @@ Gem::Specification.new do |s|
26
26
  s.add_dependency "mixlib-authentication", ">= 2.1", "< 4"
27
27
  s.add_dependency "mixlib-shellout", ">= 3.0.3", "< 4.0"
28
28
  s.add_dependency "mixlib-archive", ">= 0.4", "< 2.0"
29
- s.add_dependency "ohai", "~> 15.0"
29
+ s.add_dependency "ohai", "~> 16.0"
30
30
 
31
31
  s.add_dependency "ffi", "~> 1.9", ">= 1.9.25"
32
32
  s.add_dependency "ffi-yajl", "~> 2.2"
33
- s.add_dependency "net-ssh", ">= 4.2", "< 7"
33
+ s.add_dependency "net-ssh", ">= 4.2", "< 6"
34
34
  s.add_dependency "net-ssh-multi", "~> 1.2", ">= 1.2.1"
35
- s.add_dependency "net-sftp", ">= 2.1.2", "< 4.0"
35
+ s.add_dependency "net-sftp", "~> 2.1", ">= 2.1.2"
36
36
  s.add_dependency "ed25519", "~> 1.2" # ed25519 ssh key support
37
37
  s.add_dependency "bcrypt_pbkdf", "~> 1.0" # ed25519 ssh key support
38
- s.add_dependency "highline", ">= 1.6.9", "< 2"
38
+ s.add_dependency "highline", ">= 1.6.9", "< 3"
39
39
  s.add_dependency "tty-screen", "~> 0.6" # knife list
40
+ s.add_dependency "pastel" # knife ui.color
40
41
  s.add_dependency "erubis", "~> 2.7"
41
42
  s.add_dependency "diff-lcs", "~> 1.2", ">= 1.2.4"
42
- s.add_dependency "ffi-libarchive", "~> 1.0", ">= 1.0.3"
43
+ s.add_dependency "ffi-libarchive"
43
44
  s.add_dependency "chef-zero", ">= 14.0.11"
45
+ s.add_dependency "chef-vault"
44
46
 
45
47
  s.add_dependency "plist", "~> 3.2"
46
48
  s.add_dependency "iniparse", "~> 1.4"
@@ -24,10 +24,6 @@ class Chef
24
24
 
25
25
  class ActionRecord
26
26
 
27
- # XXX: this is buggy since we (ab)use this resource for "after" state and it may be
28
- # inaccurate and it may be mutated by the user. A third after_resource should be added
29
- # to new_resource + current_resource to properly implement this.
30
- #
31
27
  # @return [Chef::Resource] The declared resource state.
32
28
  #
33
29
  attr_accessor :new_resource
@@ -38,6 +34,10 @@ class Chef
38
34
  # implementation, but must be handled), or for unprocessed resources.
39
35
  attr_accessor :current_resource
40
36
 
37
+ # @return [Chef::Resource] the after_resource object (after-state). This can be nil for
38
+ # non custom-resources or resources that do not implement load_after_resource.
39
+ attr_accessor :after_resource
40
+
41
41
  # @return [Symbol] # The action that was run (or scheduled to run in the case of "unprocessed" resources).
42
42
  attr_accessor :action
43
43
 
@@ -161,7 +161,7 @@ class Chef
161
161
  pending_updates << ActionRecord.new(new_resource, action, pending_updates.length)
162
162
  end
163
163
 
164
- # Hook called after a resource is loaded. If load_current_resource fails, this hook will
164
+ # Hook called after a current resource is loaded. If load_current_resource fails, this hook will
165
165
  # not be called and current_resource will be nil, and the resource_failed hook will be called.
166
166
  #
167
167
  # (see EventDispatch::Base#)
@@ -172,6 +172,17 @@ class Chef
172
172
  current_record.current_resource = current_resource
173
173
  end
174
174
 
175
+ # Hook called after an after resource is loaded. If load_after_resource fails, this hook will
176
+ # not be called and after_resource will be nil, and the resource_failed hook will be called.
177
+ #
178
+ # (see EventDispatch::Base#)
179
+ #
180
+ def resource_after_state_loaded(new_resource, action, after_resource)
181
+ return if consumers.empty?
182
+
183
+ current_record.after_resource = after_resource
184
+ end
185
+
175
186
  # Hook called after an action is determined to be up to date.
176
187
  #
177
188
  # (see EventDispatch::Base#)
@@ -72,14 +72,14 @@ class Chef
72
72
 
73
73
  def assert_destination_writable!
74
74
  abs_path = File.expand_path(destination)
75
- unless File.exist?(File.dirname(abs_path))
75
+ unless File.exists?(File.dirname(abs_path))
76
76
  begin
77
77
  FileUtils.mkdir_p(File.dirname(abs_path))
78
78
  rescue Errno::EACCES
79
79
  raise Chef::Exceptions::CannotWritePrivateKey, "I can't create the configuration directory at #{File.dirname(abs_path)} - check permissions?"
80
80
  end
81
81
  end
82
- if (File.exist?(abs_path) && !File.writable?(abs_path)) || !File.writable?(File.dirname(abs_path))
82
+ if (File.exists?(abs_path) && !File.writable?(abs_path)) || !File.writable?(File.dirname(abs_path))
83
83
  raise Chef::Exceptions::CannotWritePrivateKey, "I can't write your private key to #{abs_path} - check permissions?"
84
84
  end
85
85
  end
@@ -168,28 +168,11 @@ class Chef
168
168
  end
169
169
  end
170
170
 
171
- # Initialize and configure the logger.
172
- # === Loggers and Formatters
173
- # In Chef 10.x and previous, the Logger was the primary/only way that Chef
174
- # communicated information to the user. In Chef 10.14, a new system, "output
175
- # formatters" was added, and in Chef 11.0+ it is the default when running
176
- # chef in a console (detected by `STDOUT.tty?`). Because output formatters
177
- # are more complex than the logger system and users have less experience with
178
- # them, the config option `force_logger` is provided to restore the Chef 10.x
179
- # behavior.
180
- #
181
- # Conversely, for users who want formatter output even when chef is running
182
- # unattended, the `force_formatter` option is provided.
183
- #
184
- # === Auto Log Level
185
- # The `log_level` of `:auto` means `:warn` in the formatter and `:info` in
186
- # the logger.
187
- #
188
171
  def configure_logging
189
172
  configure_log_location
190
- logger.init(MonoLogger.new(chef_config[:log_location]))
191
- if want_additional_logger?
192
- configure_stdout_logger
173
+ logger.init(MonoLogger.new(chef_config[:log_location][0]))
174
+ chef_config[:log_location][1..-1].each do |log_location|
175
+ logger.loggers << MonoLogger.new(log_location)
193
176
  end
194
177
  logger.level = resolve_log_level
195
178
  rescue StandardError => error
@@ -197,30 +180,28 @@ class Chef
197
180
  Chef::Application.fatal!("Aborting due to invalid 'log_location' configuration", error)
198
181
  end
199
182
 
200
- # Turn `log_location :syslog` and `log_location :win_evt` into the
201
- # appropriate loggers.
183
+ # merge Chef::Config[:log_location] and config[:log_location_cli]
184
+ # - the nil default value of log_location_cli means STDOUT
185
+ # - the nil default value of log_location is removed
186
+ # - Arrays are supported
187
+ # - syslog + winevt are converted to those specific logger objects
188
+ #
202
189
  def configure_log_location
203
- log_location = chef_config[:log_location]
204
- return unless log_location.respond_to?(:to_sym)
205
-
206
- chef_config[:log_location] =
207
- case log_location.to_sym
208
- when :syslog then logger::Syslog.new
209
- when :win_evt then logger::WinEvt.new
210
- else log_location # Probably a path; let MonoLogger sort it out
211
- end
212
- end
190
+ log_location_cli = [ config[:log_location_cli] ].flatten.map { |log_location| log_location.nil? ? STDOUT : log_location }
213
191
 
214
- # Based on config and whether or not STDOUT is a tty, should we setup a
215
- # secondary logger for stdout?
216
- def want_additional_logger?
217
- ( Chef::Config[:log_location].class != IO ) && STDOUT.tty? && !Chef::Config[:daemonize]
218
- end
192
+ chef_config[:log_location] = [ chef_config[:log_location], log_location_cli ].flatten.compact.uniq
219
193
 
220
- def configure_stdout_logger
221
- stdout_logger = MonoLogger.new(STDOUT)
222
- stdout_logger.formatter = logger.logger.formatter
223
- logger.loggers << stdout_logger
194
+ chef_config[:log_location].map! do |log_location|
195
+ case log_location
196
+ when :syslog, "syslog"
197
+ logger::Syslog.new
198
+ when :win_evt, "win_evt"
199
+ logger::WinEvt.new
200
+ else
201
+ # should be a path or STDOUT
202
+ log_location
203
+ end
204
+ end
224
205
  end
225
206
 
226
207
  # Use of output formatters is assumed if `force_formatter` is set or if `force_logger` is not set
@@ -228,19 +209,10 @@ class Chef
228
209
  chef_config[:force_formatter] || !chef_config[:force_logger]
229
210
  end
230
211
 
231
- def auto_log_level?
232
- chef_config[:log_level] == :auto
233
- end
234
-
235
- # if log_level is `:auto`, convert it to :warn (when using output formatter)
236
- # or :info (no output formatter). See also +using_output_formatter?+
212
+ # The :auto formatter defaults to :warn with the formatter and :info with the logger
237
213
  def resolve_log_level
238
- if auto_log_level?
239
- if using_output_formatter?
240
- :warn
241
- else
242
- :info
243
- end
214
+ if chef_config[:log_level] == :auto
215
+ using_output_formatter? ? :warn : :info
244
216
  else
245
217
  chef_config[:log_level]
246
218
  end
@@ -392,7 +364,11 @@ class Chef
392
364
  Chef::FileCache.store("#{Chef::Dist::SHORT}-stacktrace.out", chef_stacktrace_out)
393
365
  logger.fatal("Stacktrace dumped to #{Chef::FileCache.load("#{Chef::Dist::SHORT}-stacktrace.out", false)}")
394
366
  logger.fatal("Please provide the contents of the stacktrace.out file if you file a bug report")
395
- logger.debug(message)
367
+ if Chef::Config[:always_dump_stacktrace]
368
+ logger.fatal(message)
369
+ else
370
+ logger.debug(message)
371
+ end
396
372
  true
397
373
  end
398
374
 
@@ -402,6 +378,9 @@ class Chef
402
378
 
403
379
  # Log a fatal error message to both STDERR and the Logger, exit the application
404
380
  def fatal!(msg, err = nil)
381
+ if Chef::Config[:always_dump_stacktrace]
382
+ msg << "\n#{err.backtrace.join("\n")}"
383
+ end
405
384
  logger.fatal(msg)
406
385
  Process.exit(normalize_exit_code(err))
407
386
  end
@@ -76,6 +76,12 @@ class Chef::Application::Apply < Chef::Application
76
76
  description: "Set the log level (trace, debug, info, warn, error, fatal).",
77
77
  proc: lambda { |l| l.to_sym }
78
78
 
79
+ option :always_dump_stacktrace,
80
+ long: "--[no-]always-dump-stacktrace",
81
+ boolean: true,
82
+ default: false,
83
+ description: "Always dump the stacktrace regardless of the log_level setting."
84
+
79
85
  option :help,
80
86
  short: "-h",
81
87
  long: "--help",
@@ -99,6 +105,12 @@ class Chef::Application::Apply < Chef::Application
99
105
  description: "Enable whyrun mode.",
100
106
  boolean: true
101
107
 
108
+ option :yaml,
109
+ long: "--yaml",
110
+ description: "Parse recipe as YAML",
111
+ boolean: true,
112
+ default: false
113
+
102
114
  option :profile_ruby,
103
115
  long: "--[no-]profile-ruby",
104
116
  description: "Dump complete Ruby call graph stack of entire #{Chef::Dist::PRODUCT} run (expert only).",
@@ -192,7 +204,12 @@ class Chef::Application::Apply < Chef::Application
192
204
  @recipe_text, @recipe_fh = read_recipe_file @recipe_filename
193
205
  end
194
206
  recipe, run_context = get_recipe_and_run_context
195
- recipe.instance_eval(@recipe_text, @recipe_filename, 1)
207
+ if config[:yaml] || File.extname(@recipe_filename) == ".yml"
208
+ logger.info "Parsing recipe as YAML"
209
+ recipe.from_yaml(@recipe_text)
210
+ else
211
+ recipe.instance_eval(@recipe_text, @recipe_filename, 1)
212
+ end
196
213
  runner = Chef::Runner.new(run_context)
197
214
  catch(:end_client_run_early) do
198
215
  begin
@@ -215,8 +232,8 @@ class Chef::Application::Apply < Chef::Application
215
232
  Chef::Application.fatal!("#{e.class}: #{e.message}", e)
216
233
  end
217
234
 
218
- # Get this party started
219
- def run(enforce_license: false)
235
+ # Get this party started
236
+ def run(enforce_license = false)
220
237
  reconfigure
221
238
  check_license_acceptance if enforce_license
222
239
  run_application
@@ -94,11 +94,16 @@ class Chef::Application::Base < Chef::Application
94
94
  description: "Set the log level (auto, trace, debug, info, warn, error, fatal).",
95
95
  proc: lambda { |l| l.to_sym }
96
96
 
97
- option :log_location,
97
+ option :log_location_cli,
98
98
  short: "-L LOGLOCATION",
99
99
  long: "--logfile LOGLOCATION",
100
- description: "Set the log file location, defaults to STDOUT - recommended for daemonizing.",
101
- proc: nil
100
+ description: "Set the log file location, defaults to STDOUT - recommended for daemonizing."
101
+
102
+ option :always_dump_stacktrace,
103
+ long: "--[no-]always-dump-stacktrace",
104
+ boolean: true,
105
+ default: false,
106
+ description: "Always dump the stacktrace regardless of the log_level setting."
102
107
 
103
108
  option :help,
104
109
  short: "-h",
@@ -139,8 +139,8 @@ class Chef
139
139
  def notify_on_deprecation(message)
140
140
  Chef.deprecated(:exit_code, message)
141
141
  rescue Chef::Exceptions::DeprecatedFeatureError
142
- # Have to rescue this, otherwise this unhandled error preempts
143
- # the current exit code assignment.
142
+ # Have to rescue this, otherwise this unhandled error preempts
143
+ # the current exit code assignment.
144
144
  end
145
145
 
146
146
  def non_standard_exit_code_warning(exit_code)
@@ -46,7 +46,7 @@ class Chef::Application::Knife < Chef::Application
46
46
  option :verbosity,
47
47
  short: "-V",
48
48
  long: "--verbose",
49
- description: "More verbose output. Use twice for max verbosity.",
49
+ description: "More verbose output. Use twice (-VV) for additional verbosity and three times (-VVV) for maximum verbosity.",
50
50
  proc: Proc.new { verbosity_level += 1 },
51
51
  default: 0
52
52