chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32

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 (513) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -7
  3. data/README.md +1 -1
  4. data/Rakefile +44 -16
  5. data/chef.gemspec +6 -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/action_collection.rb +16 -5
  9. data/lib/chef/application.rb +33 -54
  10. data/lib/chef/application/apply.rb +18 -1
  11. data/lib/chef/application/base.rb +8 -3
  12. data/lib/chef/application/knife.rb +1 -1
  13. data/lib/chef/chef_class.rb +4 -4
  14. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
  18. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +3 -3
  21. data/lib/chef/client.rb +16 -14
  22. data/lib/chef/config.rb +1 -1
  23. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  24. data/lib/chef/cookbook/gem_installer.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +45 -22
  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 +38 -3
  30. data/lib/chef/data_collector.rb +1 -1
  31. data/lib/chef/data_collector/error_handlers.rb +1 -1
  32. data/lib/chef/data_collector/run_end_message.rb +7 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +4 -0
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dist.rb +8 -0
  37. data/lib/chef/dsl/chef_vault.rb +84 -0
  38. data/lib/chef/dsl/declare_resource.rb +7 -5
  39. data/lib/chef/dsl/platform_introspection.rb +3 -2
  40. data/lib/chef/dsl/recipe.rb +7 -12
  41. data/lib/chef/dsl/universal.rb +3 -7
  42. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  43. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  44. data/lib/chef/event_dispatch/base.rb +3 -0
  45. data/lib/chef/formatters/base.rb +1 -1
  46. data/lib/chef/formatters/doc.rb +1 -1
  47. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  48. data/lib/chef/http.rb +1 -1
  49. data/lib/chef/http/decompressor.rb +1 -1
  50. data/lib/chef/http/http_request.rb +3 -2
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -4
  54. data/lib/chef/knife/acl_add.rb +57 -0
  55. data/lib/chef/knife/acl_base.rb +183 -0
  56. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  57. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  58. data/lib/chef/knife/acl_remove.rb +62 -0
  59. data/lib/chef/knife/acl_show.rb +56 -0
  60. data/lib/chef/knife/bootstrap.rb +84 -90
  61. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
  62. data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
  63. data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
  64. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
  65. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  66. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  67. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  68. data/lib/chef/knife/core/node_presenter.rb +2 -2
  69. data/lib/chef/knife/core/status_presenter.rb +5 -5
  70. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  71. data/lib/chef/knife/core/ui.rb +17 -1
  72. data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
  73. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  74. data/lib/chef/knife/group_add.rb +55 -0
  75. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  76. data/lib/chef/knife/group_destroy.rb +53 -0
  77. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  78. data/lib/chef/knife/group_remove.rb +56 -0
  79. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  80. data/lib/chef/knife/key_create_base.rb +1 -1
  81. data/lib/chef/knife/key_edit_base.rb +1 -1
  82. data/lib/chef/knife/ssh.rb +12 -31
  83. data/lib/chef/knife/status.rb +3 -3
  84. data/lib/chef/knife/supermarket_download.rb +1 -2
  85. data/lib/chef/knife/supermarket_install.rb +2 -3
  86. data/lib/chef/knife/supermarket_list.rb +1 -2
  87. data/lib/chef/knife/supermarket_search.rb +1 -2
  88. data/lib/chef/knife/supermarket_share.rb +1 -2
  89. data/lib/chef/knife/supermarket_show.rb +1 -2
  90. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  91. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  92. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  93. data/lib/chef/knife/user_invite_list.rb +34 -0
  94. data/lib/chef/knife/user_invite_rescind.rb +63 -0
  95. data/lib/chef/knife/yaml_convert.rb +91 -0
  96. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  97. data/lib/chef/mixin/checksum.rb +0 -1
  98. data/lib/chef/mixin/openssl_helper.rb +4 -4
  99. data/lib/chef/mixin/powershell_exec.rb +10 -1
  100. data/lib/chef/mixin/powershell_out.rb +1 -1
  101. data/lib/chef/mixin/properties.rb +16 -2
  102. data/lib/chef/mixin/shell_out.rb +1 -5
  103. data/lib/chef/monkey_patches/net_http.rb +0 -4
  104. data/lib/chef/node.rb +18 -6
  105. data/lib/chef/node/attribute.rb +2 -2
  106. data/lib/chef/node/immutable_collections.rb +1 -1
  107. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  108. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  109. data/lib/chef/node_map.rb +5 -31
  110. data/lib/chef/platform/priority_map.rb +4 -4
  111. data/lib/chef/platform/query_helpers.rb +6 -34
  112. data/lib/chef/policy_builder/policyfile.rb +1 -1
  113. data/lib/chef/powershell.rb +14 -0
  114. data/lib/chef/property.rb +24 -6
  115. data/lib/chef/provider.rb +40 -6
  116. data/lib/chef/provider/cron.rb +2 -2
  117. data/lib/chef/provider/directory.rb +3 -3
  118. data/lib/chef/provider/dsc_resource.rb +1 -1
  119. data/lib/chef/provider/dsc_script.rb +1 -1
  120. data/lib/chef/provider/execute.rb +3 -9
  121. data/lib/chef/provider/file.rb +6 -6
  122. data/lib/chef/provider/git.rb +84 -27
  123. data/lib/chef/provider/group.rb +4 -4
  124. data/lib/chef/provider/http_request.rb +6 -6
  125. data/lib/chef/provider/ifconfig.rb +4 -4
  126. data/lib/chef/provider/launchd.rb +45 -64
  127. data/lib/chef/provider/link.rb +2 -2
  128. data/lib/chef/provider/mount.rb +5 -5
  129. data/lib/chef/provider/osx_profile.rb +7 -3
  130. data/lib/chef/provider/package.rb +2 -2
  131. data/lib/chef/provider/package/cab.rb +5 -6
  132. data/lib/chef/provider/package/chocolatey.rb +1 -3
  133. data/lib/chef/provider/package/dnf.rb +66 -10
  134. data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
  135. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  136. data/lib/chef/provider/package/dnf/version.rb +5 -1
  137. data/lib/chef/provider/package/dpkg.rb +1 -1
  138. data/lib/chef/provider/package/freebsd/base.rb +2 -1
  139. data/lib/chef/provider/package/homebrew.rb +107 -43
  140. data/lib/chef/provider/package/macports.rb +0 -2
  141. data/lib/chef/provider/package/msu.rb +4 -1
  142. data/lib/chef/provider/package/pacman.rb +25 -34
  143. data/lib/chef/provider/package/portage.rb +1 -0
  144. data/lib/chef/provider/package/powershell.rb +1 -1
  145. data/lib/chef/provider/package/rubygems.rb +30 -3
  146. data/lib/chef/provider/package/windows.rb +29 -53
  147. data/lib/chef/provider/package/windows/msi.rb +2 -2
  148. data/lib/chef/provider/package/yum.rb +1 -9
  149. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  150. data/lib/chef/provider/package/zypper.rb +0 -1
  151. data/lib/chef/provider/powershell_script.rb +5 -11
  152. data/lib/chef/provider/registry_key.rb +4 -4
  153. data/lib/chef/provider/remote_directory.rb +5 -5
  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 +1 -1
  163. data/lib/chef/provider/service/debian.rb +30 -28
  164. data/lib/chef/provider/service/macosx.rb +16 -10
  165. data/lib/chef/provider/service/systemd.rb +12 -12
  166. data/lib/chef/provider/service/upstart.rb +1 -1
  167. data/lib/chef/provider/service/windows.rb +5 -11
  168. data/lib/chef/provider/subversion.rb +25 -5
  169. data/lib/chef/provider/systemd_unit.rb +26 -25
  170. data/lib/chef/provider/user.rb +6 -6
  171. data/lib/chef/provider/user/aix.rb +1 -1
  172. data/lib/chef/provider/user/dscl.rb +6 -6
  173. data/lib/chef/provider/user/mac.rb +20 -15
  174. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  175. data/lib/chef/provider/windows_env.rb +3 -3
  176. data/lib/chef/provider/windows_script.rb +2 -2
  177. data/lib/chef/provider/windows_task.rb +10 -10
  178. data/lib/chef/providers.rb +0 -6
  179. data/lib/chef/recipe.rb +36 -0
  180. data/lib/chef/resource.rb +44 -57
  181. data/lib/chef/resource/action_class.rb +24 -22
  182. data/lib/chef/resource/alternatives.rb +210 -0
  183. data/lib/chef/resource/apt_package.rb +33 -3
  184. data/lib/chef/resource/apt_preference.rb +103 -7
  185. data/lib/chef/resource/apt_repository.rb +357 -18
  186. data/lib/chef/resource/apt_update.rb +58 -5
  187. data/lib/chef/resource/archive_file.rb +6 -5
  188. data/lib/chef/resource/bash.rb +3 -1
  189. data/lib/chef/resource/batch.rb +1 -1
  190. data/lib/chef/resource/bff_package.rb +10 -2
  191. data/lib/chef/resource/breakpoint.rb +1 -2
  192. data/lib/chef/resource/build_essential.rb +49 -51
  193. data/lib/chef/resource/cab_package.rb +9 -2
  194. data/lib/chef/resource/chef_client_cron.rb +228 -0
  195. data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
  196. data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
  197. data/lib/chef/resource/chef_gem.rb +15 -18
  198. data/lib/chef/resource/chef_handler.rb +5 -4
  199. data/lib/chef/resource/chef_sleep.rb +7 -5
  200. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  201. data/lib/chef/resource/chocolatey_config.rb +8 -4
  202. data/lib/chef/resource/chocolatey_feature.rb +7 -4
  203. data/lib/chef/resource/chocolatey_package.rb +7 -4
  204. data/lib/chef/resource/chocolatey_source.rb +7 -4
  205. data/lib/chef/resource/cookbook_file.rb +4 -3
  206. data/lib/chef/resource/cron.rb +34 -80
  207. data/lib/chef/resource/cron_access.rb +10 -6
  208. data/lib/chef/resource/cron_d.rb +44 -95
  209. data/lib/chef/resource/csh.rb +3 -1
  210. data/lib/chef/resource/directory.rb +3 -3
  211. data/lib/chef/resource/dmg_package.rb +22 -19
  212. data/lib/chef/resource/dnf_package.rb +3 -4
  213. data/lib/chef/resource/dpkg_package.rb +3 -2
  214. data/lib/chef/resource/dsc_resource.rb +6 -4
  215. data/lib/chef/resource/dsc_script.rb +3 -2
  216. data/lib/chef/resource/execute.rb +15 -14
  217. data/lib/chef/resource/file.rb +14 -9
  218. data/lib/chef/resource/freebsd_package.rb +3 -2
  219. data/lib/chef/resource/gem_package.rb +19 -11
  220. data/lib/chef/resource/group.rb +5 -2
  221. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  222. data/lib/chef/resource/homebrew_cask.rb +3 -2
  223. data/lib/chef/resource/homebrew_package.rb +5 -3
  224. data/lib/chef/resource/homebrew_tap.rb +3 -2
  225. data/lib/chef/resource/hostname.rb +26 -20
  226. data/lib/chef/resource/http_request.rb +1 -2
  227. data/lib/chef/resource/ifconfig.rb +8 -8
  228. data/lib/chef/resource/ips_package.rb +11 -3
  229. data/lib/chef/resource/kernel_module.rb +30 -30
  230. data/lib/chef/resource/ksh.rb +3 -1
  231. data/lib/chef/resource/launchd.rb +3 -3
  232. data/lib/chef/resource/link.rb +5 -27
  233. data/lib/chef/resource/locale.rb +60 -26
  234. data/lib/chef/resource/log.rb +13 -2
  235. data/lib/chef/resource/lwrp_base.rb +1 -1
  236. data/lib/chef/resource/macos_userdefaults.rb +18 -10
  237. data/lib/chef/resource/macosx_service.rb +3 -2
  238. data/lib/chef/resource/macports_package.rb +10 -2
  239. data/lib/chef/resource/mdadm.rb +63 -3
  240. data/lib/chef/resource/mount.rb +4 -1
  241. data/lib/chef/resource/msu_package.rb +19 -2
  242. data/lib/chef/resource/notify_group.rb +8 -3
  243. data/lib/chef/resource/ohai.rb +20 -4
  244. data/lib/chef/resource/ohai_hint.rb +4 -13
  245. data/lib/chef/resource/openbsd_package.rb +10 -2
  246. data/lib/chef/resource/openssl_dhparam.rb +11 -2
  247. data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
  248. data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
  249. data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
  250. data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
  251. data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
  252. data/lib/chef/resource/openssl_x509_crl.rb +13 -2
  253. data/lib/chef/resource/openssl_x509_request.rb +38 -2
  254. data/lib/chef/resource/osx_profile.rb +4 -3
  255. data/lib/chef/resource/package.rb +3 -2
  256. data/lib/chef/resource/pacman_package.rb +3 -2
  257. data/lib/chef/resource/paludis_package.rb +13 -4
  258. data/lib/chef/resource/perl.rb +3 -1
  259. data/lib/chef/resource/plist.rb +207 -0
  260. data/lib/chef/resource/portage_package.rb +14 -4
  261. data/lib/chef/resource/powershell_package.rb +2 -4
  262. data/lib/chef/resource/powershell_package_source.rb +4 -2
  263. data/lib/chef/resource/powershell_script.rb +8 -18
  264. data/lib/chef/resource/python.rb +3 -1
  265. data/lib/chef/resource/reboot.rb +1 -2
  266. data/lib/chef/resource/registry_key.rb +2 -3
  267. data/lib/chef/resource/remote_directory.rb +3 -1
  268. data/lib/chef/resource/remote_file.rb +3 -2
  269. data/lib/chef/resource/rhsm_errata.rb +1 -4
  270. data/lib/chef/resource/rhsm_errata_level.rb +1 -2
  271. data/lib/chef/resource/rhsm_register.rb +3 -3
  272. data/lib/chef/resource/rhsm_repo.rb +4 -3
  273. data/lib/chef/resource/rhsm_subscription.rb +5 -4
  274. data/lib/chef/resource/route.rb +6 -2
  275. data/lib/chef/resource/rpm_package.rb +13 -3
  276. data/lib/chef/resource/ruby.rb +3 -1
  277. data/lib/chef/resource/ruby_block.rb +2 -5
  278. data/lib/chef/resource/scm/_scm.rb +49 -0
  279. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  280. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
  281. data/lib/chef/resource/script.rb +7 -4
  282. data/lib/chef/resource/service.rb +7 -8
  283. data/lib/chef/resource/smartos_package.rb +10 -2
  284. data/lib/chef/resource/snap_package.rb +4 -2
  285. data/lib/chef/resource/solaris_package.rb +10 -2
  286. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  287. data/lib/chef/resource/sudo.rb +11 -11
  288. data/lib/chef/resource/support/cron.d.erb +1 -1
  289. data/lib/chef/resource/support/cron_access.erb +1 -1
  290. data/lib/chef/resource/support/sudoer.erb +1 -2
  291. data/lib/chef/resource/support/ulimit.erb +41 -0
  292. data/lib/chef/resource/swap_file.rb +7 -5
  293. data/lib/chef/resource/sysctl.rb +63 -4
  294. data/lib/chef/resource/systemd_unit.rb +6 -4
  295. data/lib/chef/resource/template.rb +0 -1
  296. data/lib/chef/resource/timezone.rb +8 -19
  297. data/lib/chef/resource/user.rb +3 -5
  298. data/lib/chef/resource/user/aix_user.rb +0 -2
  299. data/lib/chef/resource/user/dscl_user.rb +1 -1
  300. data/lib/chef/resource/user/linux_user.rb +0 -2
  301. data/lib/chef/resource/user/mac_user.rb +1 -1
  302. data/lib/chef/resource/user/pw_user.rb +0 -2
  303. data/lib/chef/resource/user/solaris_user.rb +0 -2
  304. data/lib/chef/resource/user/windows_user.rb +0 -2
  305. data/lib/chef/resource/user_ulimit.rb +116 -0
  306. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  307. data/lib/chef/resource/windows_ad_join.rb +20 -7
  308. data/lib/chef/resource/windows_auto_run.rb +2 -3
  309. data/lib/chef/resource/windows_certificate.rb +3 -3
  310. data/lib/chef/resource/windows_dfs_folder.rb +1 -2
  311. data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
  312. data/lib/chef/resource/windows_dfs_server.rb +2 -3
  313. data/lib/chef/resource/windows_dns_record.rb +0 -1
  314. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  315. data/lib/chef/resource/windows_env.rb +12 -4
  316. data/lib/chef/resource/windows_feature.rb +59 -4
  317. data/lib/chef/resource/windows_feature_dism.rb +24 -24
  318. data/lib/chef/resource/windows_feature_powershell.rb +44 -78
  319. data/lib/chef/resource/windows_firewall_rule.rb +121 -8
  320. data/lib/chef/resource/windows_font.rb +10 -2
  321. data/lib/chef/resource/windows_package.rb +76 -7
  322. data/lib/chef/resource/windows_pagefile.rb +31 -4
  323. data/lib/chef/resource/windows_path.rb +18 -2
  324. data/lib/chef/resource/windows_printer.rb +26 -7
  325. data/lib/chef/resource/windows_printer_port.rb +29 -2
  326. data/lib/chef/resource/windows_script.rb +3 -4
  327. data/lib/chef/resource/windows_security_policy.rb +119 -0
  328. data/lib/chef/resource/windows_service.rb +46 -32
  329. data/lib/chef/resource/windows_share.rb +22 -6
  330. data/lib/chef/resource/windows_shortcut.rb +13 -3
  331. data/lib/chef/resource/windows_task.rb +129 -16
  332. data/lib/chef/resource/windows_uac.rb +20 -2
  333. data/lib/chef/resource/windows_user_privilege.rb +199 -0
  334. data/lib/chef/resource/windows_workgroup.rb +19 -4
  335. data/lib/chef/resource/yum_package.rb +91 -7
  336. data/lib/chef/resource/yum_repository.rb +30 -12
  337. data/lib/chef/resource/zypper_package.rb +32 -5
  338. data/lib/chef/resource/zypper_repository.rb +19 -6
  339. data/lib/chef/resource_builder.rb +8 -0
  340. data/lib/chef/resource_inspector.rb +3 -2
  341. data/lib/chef/resource_resolver.rb +7 -14
  342. data/lib/chef/resources.rb +11 -3
  343. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  344. data/lib/chef/scan_access_control.rb +1 -1
  345. data/lib/chef/shell.rb +22 -0
  346. data/lib/chef/shell/ext.rb +1 -1
  347. data/lib/chef/version.rb +1 -1
  348. data/lib/chef/win32/api.rb +2 -2
  349. data/lib/chef/win32/api/error.rb +3 -1
  350. data/lib/chef/win32/api/file.rb +1 -1
  351. data/lib/chef/win32/api/net.rb +1 -0
  352. data/lib/chef/win32/api/security.rb +6 -0
  353. data/lib/chef/win32/file.rb +1 -9
  354. data/lib/chef/win32/mutex.rb +1 -1
  355. data/lib/chef/win32/net.rb +1 -0
  356. data/lib/chef/win32/security.rb +40 -2
  357. data/lib/chef/win32/security/sid.rb +4 -4
  358. data/spec/functional/assets/inittest +8 -7
  359. data/spec/functional/knife/ssh_spec.rb +23 -19
  360. data/spec/functional/resource/cron_spec.rb +10 -29
  361. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  362. data/spec/functional/resource/git_spec.rb +184 -134
  363. data/spec/functional/resource/insserv_spec.rb +1 -1
  364. data/spec/functional/resource/launchd_spec.rb +232 -0
  365. data/spec/functional/resource/link_spec.rb +3 -3
  366. data/spec/functional/resource/locale_spec.rb +13 -2
  367. data/spec/functional/resource/msu_package_spec.rb +5 -2
  368. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  369. data/spec/functional/resource/remote_file_spec.rb +1 -1
  370. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  371. data/spec/functional/resource/windows_task_spec.rb +4 -4
  372. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  373. data/spec/functional/run_lock_spec.rb +1 -1
  374. data/spec/functional/shell_spec.rb +1 -1
  375. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  376. data/spec/functional/version_spec.rb +1 -1
  377. data/spec/functional/win32/registry_spec.rb +0 -6
  378. data/spec/functional/win32/security_spec.rb +22 -0
  379. data/spec/integration/client/client_spec.rb +123 -2
  380. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  381. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  382. data/spec/integration/knife/raw_spec.rb +34 -6
  383. data/spec/integration/knife/redirection_spec.rb +2 -2
  384. data/spec/integration/knife/show_spec.rb +32 -3
  385. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
  386. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  387. data/spec/integration/recipes/notifies_spec.rb +49 -20
  388. data/spec/integration/recipes/notifying_block_spec.rb +8 -5
  389. data/spec/integration/recipes/provider_choice.rb +2 -0
  390. data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
  391. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  392. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
  393. data/spec/integration/recipes/resource_load_spec.rb +133 -12
  394. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  395. data/spec/integration/solo/solo_spec.rb +3 -3
  396. data/spec/spec_helper.rb +18 -3
  397. data/spec/support/chef_helpers.rb +2 -2
  398. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  399. data/spec/support/platform_helpers.rb +2 -20
  400. data/spec/support/recipe_dsl_helper.rb +83 -0
  401. data/spec/support/shared/functional/http.rb +2 -2
  402. data/spec/support/shared/functional/windows_script.rb +3 -16
  403. data/spec/support/shared/integration/knife_support.rb +9 -6
  404. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  405. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  406. data/spec/unit/application/apply_spec.rb +3 -0
  407. data/spec/unit/application/client_spec.rb +5 -1
  408. data/spec/unit/application_spec.rb +1 -2
  409. data/spec/unit/client_spec.rb +7 -5
  410. data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
  411. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  412. data/spec/unit/data_collector_spec.rb +39 -18
  413. data/spec/unit/file_access_control_spec.rb +1 -1
  414. data/spec/unit/json_compat_spec.rb +1 -1
  415. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  416. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  417. data/spec/unit/knife/bootstrap_spec.rb +20 -38
  418. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  419. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  420. data/spec/unit/knife/core/ui_spec.rb +16 -0
  421. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
  422. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  423. data/spec/unit/knife/ssh_spec.rb +8 -111
  424. data/spec/unit/knife/status_spec.rb +1 -1
  425. data/spec/unit/knife_spec.rb +18 -0
  426. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  427. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  428. data/spec/unit/mixin/shell_out_spec.rb +25 -31
  429. data/spec/unit/node/attribute_spec.rb +3 -3
  430. data/spec/unit/node_spec.rb +24 -0
  431. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  432. data/spec/unit/property/state_spec.rb +12 -7
  433. data/spec/unit/property/validation_spec.rb +25 -1
  434. data/spec/unit/property_spec.rb +12 -9
  435. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  436. data/spec/unit/provider/apt_repository_spec.rb +34 -36
  437. data/spec/unit/provider/apt_update_spec.rb +12 -11
  438. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  439. data/spec/unit/provider/cron_spec.rb +2 -2
  440. data/spec/unit/provider/directory_spec.rb +4 -15
  441. data/spec/unit/provider/file_spec.rb +4 -4
  442. data/spec/unit/provider/git_spec.rb +41 -1
  443. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  444. data/spec/unit/provider/launchd_spec.rb +8 -50
  445. data/spec/unit/provider/link_spec.rb +0 -1
  446. data/spec/unit/provider/log_spec.rb +3 -3
  447. data/spec/unit/provider/mdadm_spec.rb +3 -3
  448. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  449. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  450. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  451. data/spec/unit/provider/package/portage_spec.rb +2 -2
  452. data/spec/unit/provider/package/powershell_spec.rb +3 -2
  453. data/spec/unit/provider/package/rubygems_spec.rb +211 -26
  454. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  455. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  456. data/spec/unit/provider/remote_file_spec.rb +3 -4
  457. data/spec/unit/provider/service/debian_service_spec.rb +34 -13
  458. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  459. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  460. data/spec/unit/provider/subversion_spec.rb +4 -2
  461. data/spec/unit/provider/template_spec.rb +3 -4
  462. data/spec/unit/provider/zypper_repository_spec.rb +17 -17
  463. data/spec/unit/provider_resolver_spec.rb +4 -4
  464. data/spec/unit/recipe_spec.rb +68 -0
  465. data/spec/unit/resource/alternatives_spec.rb +120 -0
  466. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  467. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  468. data/spec/unit/resource/apt_update_spec.rb +0 -18
  469. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  470. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  471. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  472. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  473. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  474. data/spec/unit/resource/cron_d_spec.rb +6 -48
  475. data/spec/unit/resource/cron_spec.rb +4 -10
  476. data/spec/unit/resource/gem_package_spec.rb +3 -3
  477. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  478. data/spec/unit/resource/link_spec.rb +0 -4
  479. data/spec/unit/resource/locale_spec.rb +0 -34
  480. data/spec/unit/resource/msu_package_spec.rb +4 -0
  481. data/spec/unit/resource/ohai_spec.rb +56 -2
  482. data/spec/unit/resource/plist_spec.rb +130 -0
  483. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  484. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  485. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  486. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  487. data/spec/unit/resource/service_spec.rb +4 -0
  488. data/spec/unit/resource/user_spec.rb +2 -2
  489. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  490. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  491. data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
  492. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  493. data/spec/unit/resource/windows_package_spec.rb +14 -0
  494. data/spec/unit/resource/windows_service_spec.rb +9 -0
  495. data/spec/unit/resource_reporter_spec.rb +2 -6
  496. data/spec/unit/resource_spec.rb +10 -3
  497. data/spec/unit/run_lock_spec.rb +1 -1
  498. data/spec/unit/scan_access_control_spec.rb +1 -1
  499. data/spec/unit/search/query_spec.rb +1 -1
  500. data/spec/unit/win32/registry_spec.rb +1 -1
  501. data/tasks/rspec.rb +6 -14
  502. metadata +92 -37
  503. data/lib/chef/dsl/core.rb +0 -52
  504. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  505. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  506. data/lib/chef/provider/apt_preference.rb +0 -93
  507. data/lib/chef/provider/apt_repository.rb +0 -358
  508. data/lib/chef/provider/apt_update.rb +0 -79
  509. data/lib/chef/provider/log.rb +0 -43
  510. data/lib/chef/provider/mdadm.rb +0 -85
  511. data/lib/chef/provider/ohai.rb +0 -45
  512. data/lib/chef/resource/git.rb +0 -37
  513. data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -16,6 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
+ require_relative "resource/alternatives"
19
20
  require_relative "resource/apt_package"
20
21
  require_relative "resource/apt_preference"
21
22
  require_relative "resource/apt_repository"
@@ -26,9 +27,13 @@ require_relative "resource/batch"
26
27
  require_relative "resource/breakpoint"
27
28
  require_relative "resource/build_essential"
28
29
  require_relative "resource/cookbook_file"
30
+ require_relative "resource/chef_client_cron"
31
+ require_relative "resource/chef_client_scheduled_task"
32
+ require_relative "resource/chef_client_systemd_timer"
29
33
  require_relative "resource/chef_gem"
30
34
  require_relative "resource/chef_handler"
31
35
  require_relative "resource/chef_sleep"
36
+ require_relative "resource/chef_vault_secret"
32
37
  require_relative "resource/chocolatey_config"
33
38
  require_relative "resource/chocolatey_feature"
34
39
  require_relative "resource/chocolatey_package"
@@ -48,7 +53,7 @@ require_relative "resource/file"
48
53
  require_relative "resource/freebsd_package"
49
54
  require_relative "resource/ips_package"
50
55
  require_relative "resource/gem_package"
51
- require_relative "resource/git"
56
+ require_relative "resource/scm/git"
52
57
  require_relative "resource/group"
53
58
  require_relative "resource/http_request"
54
59
  require_relative "resource/hostname"
@@ -82,6 +87,7 @@ require_relative "resource/package"
82
87
  require_relative "resource/pacman_package"
83
88
  require_relative "resource/paludis_package"
84
89
  require_relative "resource/perl"
90
+ require_relative "resource/plist"
85
91
  require_relative "resource/portage_package"
86
92
  require_relative "resource/powershell_package_source"
87
93
  require_relative "resource/powershell_script"
@@ -102,7 +108,6 @@ require_relative "resource/solaris_package"
102
108
  require_relative "resource/route"
103
109
  require_relative "resource/ruby"
104
110
  require_relative "resource/ruby_block"
105
- require_relative "resource/scm"
106
111
  require_relative "resource/script"
107
112
  require_relative "resource/service"
108
113
  require_relative "resource/sudo"
@@ -111,7 +116,7 @@ require_relative "resource/swap_file"
111
116
  require_relative "resource/systemd_unit"
112
117
  require_relative "resource/ssh_known_hosts_entry"
113
118
  require_relative "resource/windows_service"
114
- require_relative "resource/subversion"
119
+ require_relative "resource/scm/subversion"
115
120
  require_relative "resource/smartos_package"
116
121
  require_relative "resource/template"
117
122
  require_relative "resource/user"
@@ -122,6 +127,7 @@ require_relative "resource/user/mac_user"
122
127
  require_relative "resource/user/pw_user"
123
128
  require_relative "resource/user/solaris_user"
124
129
  require_relative "resource/user/windows_user"
130
+ require_relative "resource/user_ulimit"
125
131
  require_relative "resource/whyrun_safe_ruby_block"
126
132
  require_relative "resource/windows_env"
127
133
  require_relative "resource/windows_package"
@@ -157,3 +163,5 @@ require_relative "resource/windows_task"
157
163
  require_relative "resource/windows_uac"
158
164
  require_relative "resource/windows_workgroup"
159
165
  require_relative "resource/timezone"
166
+ require_relative "resource/windows_user_privilege"
167
+ require_relative "resource/windows_security_policy"
@@ -100,7 +100,15 @@ class Chef
100
100
  def compile_libraries
101
101
  @events.library_load_start(count_files_by_segment(:libraries))
102
102
  cookbook_order.each do |cookbook|
103
- load_libraries_from_cookbook(cookbook)
103
+ eager_load_libraries = cookbook_collection[cookbook].metadata.eager_load_libraries
104
+ if eager_load_libraries == true # actually true, not truthy
105
+ load_libraries_from_cookbook(cookbook)
106
+ else
107
+ $LOAD_PATH.unshift File.expand_path("libraries", cookbook_collection[cookbook].root_dir)
108
+ if eager_load_libraries # we have a String or Array<String> and not false
109
+ load_libraries_from_cookbook(cookbook, eager_load_libraries)
110
+ end
111
+ end
104
112
  end
105
113
  @events.library_load_complete
106
114
  end
@@ -221,10 +229,8 @@ class Chef
221
229
  raise
222
230
  end
223
231
 
224
- def load_libraries_from_cookbook(cookbook_name)
225
- files_in_cookbook_by_segment(cookbook_name, :libraries).each do |filename|
226
- next unless File.extname(filename) == ".rb"
227
-
232
+ def load_libraries_from_cookbook(cookbook_name, globs = "**/*.rb")
233
+ each_file_in_cookbook_by_segment(cookbook_name, :libraries, globs) do |filename|
228
234
  begin
229
235
  logger.trace("Loading cookbook #{cookbook_name}'s library file: #{filename}")
230
236
  Kernel.require(filename)
@@ -239,11 +245,13 @@ class Chef
239
245
  def load_lwrps_from_cookbook(cookbook_name)
240
246
  files_in_cookbook_by_segment(cookbook_name, :providers).each do |filename|
241
247
  next unless File.extname(filename) == ".rb"
248
+ next if File.basename(filename).match?(/^_/)
242
249
 
243
250
  load_lwrp_provider(cookbook_name, filename)
244
251
  end
245
252
  files_in_cookbook_by_segment(cookbook_name, :resources).each do |filename|
246
253
  next unless File.extname(filename) == ".rb"
254
+ next if File.basename(filename).match?(/^_/)
247
255
 
248
256
  load_lwrp_resource(cookbook_name, filename)
249
257
  end
@@ -327,6 +335,22 @@ class Chef
327
335
  cookbook_collection[cookbook].files_for(segment).map { |record| record[:full_path] }.sort
328
336
  end
329
337
 
338
+ # Iterates through all files in given cookbook segment, yielding the full path to the file
339
+ # if it matches one of the given globs. Returns matching files in lexical sort order. Supports
340
+ # extended globbing. The segment should not be included in the glob.
341
+ #
342
+ def each_file_in_cookbook_by_segment(cookbook, segment, globs)
343
+ cookbook_collection[cookbook].files_for(segment).sort_by { |record| record[:path] }.each do |record|
344
+ Array(globs).each do |glob|
345
+ target = record[:path].delete_prefix("#{segment}/")
346
+ if File.fnmatch(glob, target, File::FNM_PATHNAME | File::FNM_EXTGLOB | File::FNM_DOTMATCH)
347
+ yield record[:full_path]
348
+ break
349
+ end
350
+ end
351
+ end
352
+ end
353
+
330
354
  # Yields the name, as a symbol, of each cookbook depended on by
331
355
  # +cookbook_name+ in lexical sort order.
332
356
  def each_cookbook_dep(cookbook_name, &block)
@@ -33,7 +33,7 @@ class Chef
33
33
  # Not yet sure if this is the optimal way to solve the problem. But it's
34
34
  # progress towards the end goal.
35
35
  #
36
- # TODO: figure out if all this works with OS X's negative uids
36
+ # TODO: figure out if all this works with macOS' negative uids
37
37
  # TODO: windows
38
38
  class ScanAccessControl
39
39
 
@@ -61,6 +61,11 @@ module Shell
61
61
  # to get access to the main object before irb starts.
62
62
  ::IRB.setup(nil)
63
63
 
64
+ irb_conf[:USE_COLORIZE] = options.config[:use_colorize]
65
+ irb_conf[:USE_SINGLELINE] = options.config[:use_singleline]
66
+ irb_conf[:USE_MULTILINE] = options.config[:use_multiline]
67
+ pp irb_conf[:USE_MULTILINE]
68
+
64
69
  irb = IRB::Irb.new
65
70
 
66
71
  if solo_mode?
@@ -127,6 +132,8 @@ module Shell
127
132
  conf.prompt_n = "#{Chef::Dist::EXEC}#{leader(m)} ?> "
128
133
  conf.prompt_s = "#{Chef::Dist::EXEC}#{leader(m)}%l> "
129
134
  conf.use_tracer = false
135
+ conf.instance_variable_set(:@use_multiline, false)
136
+ conf.instance_variable_set(:@use_singleline, false)
130
137
  end
131
138
  end
132
139
 
@@ -218,6 +225,21 @@ module Shell
218
225
  #{Chef::Dist::USER_CONF_DIR}/knife.rb if -s option is given.
219
226
  FOOTER
220
227
 
228
+ option :use_multiline,
229
+ long: "--[no-]multiline",
230
+ default: true,
231
+ description: "[Do not] use multiline editor module"
232
+
233
+ option :use_singleline,
234
+ long: "--[no-]singleline",
235
+ default: true,
236
+ description: "[Do not] use singleline editor module"
237
+
238
+ option :use_colorize,
239
+ long: "--[no-]colorize",
240
+ default: true,
241
+ description: "[Do not] use colorization"
242
+
221
243
  option :config_file,
222
244
  short: "-c CONFIG",
223
245
  long: "--config CONFIG",
@@ -37,7 +37,7 @@ module Shell
37
37
  module ObjectCoreExtensions
38
38
 
39
39
  def ensure_session_select_defined
40
- # irb breaks if you prematurely define IRB::JobMangager
40
+ # irb breaks if you prematurely define IRB::JobManager
41
41
  # so these methods need to be defined at the latest possible time.
42
42
  unless jobs.respond_to?(:select_session_by_context)
43
43
  def jobs.select_session_by_context(&block) # rubocop:disable Lint/NestedMethodDefinition
@@ -23,7 +23,7 @@ require_relative "version_string"
23
23
 
24
24
  class Chef
25
25
  CHEF_ROOT = File.expand_path("../..", __FILE__)
26
- VERSION = Chef::VersionString.new("15.11.3")
26
+ VERSION = Chef::VersionString.new("16.1.16")
27
27
  end
28
28
 
29
29
  #
@@ -94,7 +94,7 @@ class Chef
94
94
  host.typedef :ulong, :HMENU # (L) Handle to a menu. http://msdn.microsoft.com/en-us/library/ms646977%28VS.85%29.aspx
95
95
  host.typedef :ulong, :HMETAFILE # (L) Handle to a metafile. http://msdn.microsoft.com/en-us/library/dd145051%28VS.85%29.aspx
96
96
  host.typedef :ulong, :HMODULE # (L) Handle to an instance. Same as HINSTANCE today, but was different in 16-bit Windows.
97
- host.typedef :ulong, :HMONITOR # (L) Рandle to a display monitor. WinDef.h: if(WINVER >= 0x0500) host.typedef HANDLE HMONITOR;
97
+ host.typedef :ulong, :HMONITOR # (L) Handle to a display monitor. WinDef.h: if(WINVER >= 0x0500) host.typedef HANDLE HMONITOR;
98
98
  host.typedef :ulong, :HPALETTE # (L) Handle to a palette.
99
99
  host.typedef :ulong, :HPEN # (L) Handle to a pen. http://msdn.microsoft.com/en-us/library/dd162786%28VS.85%29.aspx
100
100
  host.typedef :long, :HRESULT # Return code used by COM interfaces. For more info, Structure of the COM Error Codes.
@@ -115,7 +115,7 @@ class Chef
115
115
  host.typedef :uint32, :LCID # Locale identifier. For more information, see Locales.
116
116
  host.typedef :uint32, :LCTYPE # Locale information type. For a list, see Locale Information Constants.
117
117
  host.typedef :uint32, :LGRPID # Language group identifier. For a list, see EnumLanguageGroupLocales.
118
- host.typedef :pointer, :LMSTR # Pointer to null termiated string of unicode characters
118
+ host.typedef :pointer, :LMSTR # Pointer to null terminated string of unicode characters
119
119
  host.typedef :long, :LONG # 32-bit signed integer. The range is -2,147,483,648 through +...647 decimal.
120
120
  host.typedef :int32, :LONG32 # 32-bit signed integer. The range is -2,147,483,648 through +...647 decimal.
121
121
  host.typedef :int64, :LONG64 # 64-bit signed integer. The range is –9,223,372,036,854,775,808 through +...807
@@ -64,7 +64,7 @@ class Chef
64
64
  ERROR_SHARING_VIOLATION = 32
65
65
  ERROR_LOCK_VIOLATION = 33
66
66
  ERROR_WRONG_DISK = 34
67
- ERROR_FCB_UNAVAILABLE = 35 # gets returned for some unsuccessful DeviceIoControl calls
67
+ ERROR_FCB_UNAVAILABLE = 35 # gets returned for some unsuccessful DeviceIoControl calls
68
68
  ERROR_SHARING_BUFFER_EXCEEDED = 36
69
69
  ERROR_HANDLE_EOF = 38
70
70
  ERROR_HANDLE_DISK_FULL = 39
@@ -90,6 +90,7 @@ class Chef
90
90
  ERROR_TOO_MANY_NAMES = 68
91
91
  ERROR_TOO_MANY_SESS = 69
92
92
  ERROR_SHARING_PAUSED = 70
93
+ # cspell:disable-next-line
93
94
  ERROR_REQ_NOT_ACCEP = 71
94
95
  ERROR_REDIR_PAUSED = 72
95
96
 
@@ -876,6 +877,7 @@ class Chef
876
877
 
877
878
  # Flags for LoadLibraryEx
878
879
 
880
+ # cspell:disable-next-line
879
881
  DONT_RESOLVE_DLL_REFERENCES = 0x00000001
880
882
  LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x00000010
881
883
  LOAD_LIBRARY_AS_DATAFILE = 0x00000002
@@ -540,7 +540,7 @@ BOOL WINAPI VerQueryValue(
540
540
  def file_search_handle(path)
541
541
  # Workaround for CHEF-4419:
542
542
  # Make sure paths starting with "/" has a drive letter
543
- # assigned from the current working diretory.
543
+ # assigned from the current working directory.
544
544
  # Note: With CHEF-4427 this issue will be fixed with a
545
545
  # broader fix to map all the paths starting with "/" to
546
546
  # SYSTEM_DRIVE on windows.
@@ -39,6 +39,7 @@ class Chef
39
39
  UF_ACCOUNTDISABLE = 0x000002
40
40
  UF_PASSWD_CANT_CHANGE = 0x000040
41
41
  UF_NORMAL_ACCOUNT = 0x000200
42
+ # cspell:disable-next-line
42
43
  UF_DONT_EXPIRE_PASSWD = 0x010000
43
44
 
44
45
  USE_NOFORCE = 0
@@ -413,6 +413,11 @@ class Chef
413
413
  :Buffer, :PWSTR
414
414
  end
415
415
 
416
+ # https://docs.microsoft.com/en-us/windows/win32/api/ntsecapi/ns-ntsecapi-lsa_enumeration_information
417
+ class LSA_ENUMERATION_INFORMATION < FFI::Struct
418
+ layout :Sid, :PSID
419
+ end
420
+
416
421
  ffi_lib "advapi32"
417
422
 
418
423
  safe_attach_function :AccessCheck, %i{pointer HANDLE DWORD pointer pointer pointer pointer pointer}, :BOOL
@@ -448,6 +453,7 @@ class Chef
448
453
  safe_attach_function :LookupPrivilegeDisplayNameW, %i{LPCWSTR LPCWSTR LPWSTR LPDWORD LPDWORD}, :BOOL
449
454
  safe_attach_function :LookupPrivilegeValueW, %i{LPCWSTR LPCWSTR PLUID}, :BOOL
450
455
  safe_attach_function :LsaAddAccountRights, %i{pointer pointer pointer ULONG}, :NTSTATUS
456
+ safe_attach_function :LsaEnumerateAccountsWithUserRight, %i{LSA_HANDLE PLSA_UNICODE_STRING PVOID PULONG}, :NTSTATUS
451
457
  safe_attach_function :LsaRemoveAccountRights, %i{pointer pointer BOOL pointer ULONG}, :NTSTATUS
452
458
  safe_attach_function :LsaClose, [ :LSA_HANDLE ], :NTSTATUS
453
459
  safe_attach_function :LsaEnumerateAccountRights, %i{LSA_HANDLE PSID PLSA_UNICODE_STRING PULONG}, :NTSTATUS
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Author:: Mark Mzyk (<mmzyk@ospcode.com>)
3
+ # Author:: Mark Mzyk (<mmzyk@chef.io>)
4
4
  # Copyright:: Copyright (c) Chef Software Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
@@ -166,14 +166,6 @@ class Chef
166
166
  VersionInfo.new(file_name)
167
167
  end
168
168
 
169
- def self.verify_links_supported!
170
- CreateSymbolicLinkW(nil)
171
- rescue Chef::Exceptions::Win32APIFunctionNotImplemented => e
172
- raise e
173
- rescue Exception
174
- # things are ok.
175
- end
176
-
177
169
  def self.file_access_check(path, desired_access)
178
170
  security_descriptor = Chef::ReservedNames::Win32::Security.get_file_security(path)
179
171
  token_rights = Chef::ReservedNames::Win32::Security::TOKEN_IMPERSONATE |
@@ -95,7 +95,7 @@ if other threads attempt to acquire the mutex.")
95
95
  @handle = OpenMutexW(SYNCHRONIZE, true, name.to_wstring)
96
96
 
97
97
  if @handle == 0
98
- # Mutext doesn't exist so create one.
98
+ # Mutex doesn't exist so create one.
99
99
  # In the initial creation of the mutex initial_owner is set to
100
100
  # false so that mutex will not be acquired until someone calls
101
101
  # acquire.
@@ -40,6 +40,7 @@ class Chef
40
40
  usri3_priv: 0,
41
41
  usri3_home_dir: nil,
42
42
  usri3_comment: nil,
43
+ # cspell:disable-next-line
43
44
  usri3_flags: UF_SCRIPT | UF_DONT_EXPIRE_PASSWD | UF_NORMAL_ACCOUNT,
44
45
  usri3_script_path: nil,
45
46
  usri3_auth_flags: 0,
@@ -214,6 +214,41 @@ class Chef
214
214
  privileges
215
215
  end
216
216
 
217
+ def self.get_account_with_user_rights(privilege)
218
+ privilege_pointer = FFI::MemoryPointer.new LSA_UNICODE_STRING, 1
219
+ privilege_lsa_string = LSA_UNICODE_STRING.new(privilege_pointer)
220
+ privilege_lsa_string[:Buffer] = FFI::MemoryPointer.from_string(privilege.to_wstring)
221
+ privilege_lsa_string[:Length] = privilege.length * 2
222
+ privilege_lsa_string[:MaximumLength] = (privilege.length + 1) * 2
223
+
224
+ buffer = FFI::MemoryPointer.new(:pointer)
225
+ count = FFI::MemoryPointer.new(:ulong)
226
+
227
+ accounts = []
228
+ with_lsa_policy(nil) do |policy_handle, sid|
229
+ result = LsaEnumerateAccountsWithUserRight(policy_handle.read_pointer, privilege_pointer, buffer, count)
230
+ if result == 0
231
+ win32_error = LsaNtStatusToWinError(result)
232
+ return [] if win32_error == 1313 # NO_SUCH_PRIVILEGE - https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--1300-1699-
233
+
234
+ test_and_raise_lsa_nt_status(result)
235
+
236
+ count.read_ulong.times do |i|
237
+ sid = LSA_ENUMERATION_INFORMATION.new(buffer.read_pointer + i * LSA_ENUMERATION_INFORMATION.size)
238
+ sid_name = lookup_account_sid(sid[:Sid])
239
+ domain, name, use = sid_name
240
+ account_name = (!domain.nil? && domain.length > 0) ? "#{domain}\\#{name}" : name
241
+ accounts << account_name
242
+ end
243
+ end
244
+
245
+ result = LsaFreeMemory(buffer.read_pointer)
246
+ test_and_raise_lsa_nt_status(result)
247
+ end
248
+
249
+ accounts
250
+ end
251
+
217
252
  def self.get_ace(acl, index)
218
253
  acl = acl.pointer if acl.respond_to?(:pointer)
219
254
  ace = FFI::Buffer.new :pointer
@@ -616,18 +651,21 @@ class Chef
616
651
  end
617
652
 
618
653
  def self.with_lsa_policy(username)
619
- sid = lookup_account_name(username)[1]
654
+ sid = lookup_account_name(username)[1] if username
620
655
 
621
656
  access = 0
622
657
  access |= POLICY_CREATE_ACCOUNT
623
658
  access |= POLICY_LOOKUP_NAMES
659
+ access |= POLICY_VIEW_LOCAL_INFORMATION if username.nil?
624
660
 
625
661
  policy_handle = FFI::MemoryPointer.new(:pointer)
626
662
  result = LsaOpenPolicy(nil, LSA_OBJECT_ATTRIBUTES.new, access, policy_handle)
627
663
  test_and_raise_lsa_nt_status(result)
628
664
 
665
+ sid_pointer = username.nil? ? nil : sid.pointer
666
+
629
667
  begin
630
- yield policy_handle, sid.pointer
668
+ yield policy_handle, sid_pointer
631
669
  ensure
632
670
  result = LsaClose(policy_handle.read_pointer)
633
671
  test_and_raise_lsa_nt_status(result)
@@ -261,7 +261,7 @@ class Chef
261
261
 
262
262
  SYSTEM_USER = SERVICE_ACCOUNT_USERS + BUILT_IN_GROUPS
263
263
 
264
- # Сheck if the user belongs to service accounts category
264
+ # Check if the user belongs to service accounts category
265
265
  #
266
266
  # @return [Boolean] True or False
267
267
  #
@@ -269,7 +269,7 @@ class Chef
269
269
  SERVICE_ACCOUNT_USERS.include?(user.to_s.upcase)
270
270
  end
271
271
 
272
- # Сheck if the user is in builtin system group
272
+ # Check if the user is in builtin system group
273
273
  #
274
274
  # @return [Boolean] True or False
275
275
  #
@@ -277,7 +277,7 @@ class Chef
277
277
  BUILT_IN_GROUPS.include?(user.to_s.upcase)
278
278
  end
279
279
 
280
- # Сheck if the user belongs to system users category
280
+ # Check if the user belongs to system users category
281
281
  #
282
282
  # @return [Boolean] True or False
283
283
  #
@@ -325,7 +325,7 @@ class Chef
325
325
  Array.new(entriesread.read_long) do |i|
326
326
  user_info = USER_INFO_3.new(bufptr.read_pointer + i * USER_INFO_3.size)
327
327
  # Check if the account is the Administrator account
328
- # RID for the Administrator account is always 500 and it's privilage is set to USER_PRIV_ADMIN
328
+ # RID for the Administrator account is always 500 and it's privilege is set to USER_PRIV_ADMIN
329
329
  if user_info[:usri3_user_id] == 500 && user_info[:usri3_priv] == 2 # USER_PRIV_ADMIN (2) - Administrator
330
330
  admin_account_name = user_info[:usri3_name].read_wstring
331
331
  break
@@ -2,16 +2,17 @@
2
2
 
3
3
  TMPDIR="${TMPDIR:-/tmp}"
4
4
 
5
- function create_chef_txt {
6
- touch $TMPDIR/inittest.txt
5
+ create_chef_txt() {
6
+ touch "$TMPDIR"/inittest.txt
7
7
  }
8
8
 
9
- function delete_chef_txt {
10
- rm $TMPDIR/inittest.txt
9
+
10
+ delete_chef_txt() {
11
+ rm "$TMPDIR"/inittest.txt
11
12
  }
12
13
 
13
- function rename_chef_txt {
14
- mv $TMPDIR/inittest.txt $TMPDIR/$1
14
+ rename_chef_txt() {
15
+ mv "$TMPDIR"/inittest.txt "$TMPDIR"/"$1"
15
16
  }
16
17
 
17
18
  case "$1" in
@@ -22,7 +23,7 @@ stop )
22
23
  delete_chef_txt
23
24
  ;;
24
25
  status )
25
- [ -f $TMPDIR/inittest.txt ] || [ -f $TMPDIR/inittest_reload.txt ] || [ -f $TMPDIR/inittest_restart.txt ]
26
+ [ -f "$TMPDIR"/inittest.txt ] || [ -f "$TMPDIR"/inittest_reload.txt ] || [ -f "$TMPDIR"/inittest_restart.txt ]
26
27
  ;;
27
28
  reload )
28
29
  rename_chef_txt "inittest_reload.txt"