chef 16.16.13 → 17.0.242

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 (638) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -13
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +6 -8
  7. data/lib/chef/application/base.rb +1 -1
  8. data/lib/chef/applications.rb +0 -1
  9. data/lib/chef/chef_fs/command_line.rb +5 -2
  10. data/lib/chef/chef_fs/file_system.rb +9 -10
  11. data/lib/chef/client.rb +2 -2
  12. data/lib/chef/compliance/default_attributes.rb +4 -3
  13. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  14. data/lib/chef/compliance/reporter/automate.rb +17 -7
  15. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  16. data/lib/chef/compliance/reporter/cli.rb +77 -0
  17. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  18. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  19. data/lib/chef/compliance/runner.rb +65 -27
  20. data/lib/chef/cookbook/gem_installer.rb +1 -5
  21. data/lib/chef/cookbook/synchronizer.rb +3 -5
  22. data/lib/chef/cookbook_loader.rb +2 -4
  23. data/lib/chef/cookbook_uploader.rb +0 -1
  24. data/lib/chef/cookbook_version.rb +4 -26
  25. data/lib/chef/data_bag_item.rb +11 -2
  26. data/lib/chef/data_collector/run_end_message.rb +1 -1
  27. data/lib/chef/delayed_evaluator.rb +4 -0
  28. data/lib/chef/deprecated.rb +6 -12
  29. data/lib/chef/dsl/chef_vault.rb +6 -6
  30. data/lib/chef/dsl/reboot_pending.rb +1 -2
  31. data/lib/chef/exceptions.rb +0 -3
  32. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  33. data/lib/chef/formatters/error_mapper.rb +2 -2
  34. data/lib/chef/group.rb +75 -0
  35. data/lib/chef/http.rb +5 -5
  36. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  37. data/lib/chef/node/attribute.rb +6 -4
  38. data/lib/chef/node/immutable_collections.rb +13 -0
  39. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  40. data/lib/chef/node.rb +19 -20
  41. data/lib/chef/org.rb +3 -2
  42. data/lib/chef/policy_builder/policyfile.rb +0 -5
  43. data/lib/chef/property.rb +18 -0
  44. data/lib/chef/provider/cron.rb +1 -1
  45. data/lib/chef/provider/execute.rb +2 -1
  46. data/lib/chef/provider/file.rb +1 -1
  47. data/lib/chef/provider/git.rb +5 -7
  48. data/lib/chef/provider/group/dscl.rb +1 -1
  49. data/lib/chef/provider/group/groupadd.rb +3 -3
  50. data/lib/chef/provider/group/groupmod.rb +3 -3
  51. data/lib/chef/provider/group/pw.rb +3 -3
  52. data/lib/chef/provider/ifconfig.rb +2 -2
  53. data/lib/chef/provider/link.rb +2 -2
  54. data/lib/chef/provider/mount/aix.rb +3 -3
  55. data/lib/chef/provider/mount/mount.rb +5 -5
  56. data/lib/chef/provider/mount/windows.rb +1 -1
  57. data/lib/chef/provider/mount.rb +5 -5
  58. data/lib/chef/provider/package/apt.rb +27 -1
  59. data/lib/chef/provider/package/deb.rb +3 -3
  60. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  61. data/lib/chef/provider/package/portage.rb +2 -2
  62. data/lib/chef/provider/package/powershell.rb +0 -5
  63. data/lib/chef/provider/package/rubygems.rb +9 -15
  64. data/lib/chef/provider/package/windows.rb +2 -4
  65. data/lib/chef/provider/package/yum/yum_helper.py +1 -1
  66. data/lib/chef/provider/package.rb +17 -21
  67. data/lib/chef/provider/route.rb +2 -2
  68. data/lib/chef/provider/service/aixinit.rb +1 -1
  69. data/lib/chef/provider/service/debian.rb +1 -1
  70. data/lib/chef/provider/service/freebsd.rb +15 -21
  71. data/lib/chef/provider/service/macosx.rb +4 -4
  72. data/lib/chef/provider/service/systemd.rb +43 -14
  73. data/lib/chef/provider/service/upstart.rb +2 -13
  74. data/lib/chef/provider/service/windows.rb +12 -12
  75. data/lib/chef/provider/service.rb +6 -6
  76. data/lib/chef/provider/subversion.rb +10 -12
  77. data/lib/chef/provider/systemd_unit.rb +36 -10
  78. data/lib/chef/provider/template/content.rb +3 -7
  79. data/lib/chef/provider/user/dscl.rb +1 -1
  80. data/lib/chef/provider/user/mac.rb +17 -20
  81. data/lib/chef/provider/user/pw.rb +1 -1
  82. data/lib/chef/provider/user/windows.rb +1 -1
  83. data/lib/chef/provider/user.rb +2 -2
  84. data/lib/chef/provider/zypper_repository.rb +2 -2
  85. data/lib/chef/provider.rb +1 -1
  86. data/lib/chef/providers.rb +0 -1
  87. data/lib/chef/resource/alternatives.rb +6 -6
  88. data/lib/chef/resource/apt_package.rb +1 -1
  89. data/lib/chef/resource/apt_preference.rb +2 -2
  90. data/lib/chef/resource/apt_repository.rb +6 -6
  91. data/lib/chef/resource/apt_update.rb +3 -2
  92. data/lib/chef/resource/archive_file.rb +2 -3
  93. data/lib/chef/resource/breakpoint.rb +1 -1
  94. data/lib/chef/resource/build_essential.rb +2 -6
  95. data/lib/chef/resource/chef_client_config.rb +2 -2
  96. data/lib/chef/resource/chef_client_cron.rb +4 -4
  97. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  98. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  99. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  100. data/lib/chef/resource/chef_handler.rb +3 -7
  101. data/lib/chef/resource/chef_sleep.rb +1 -1
  102. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  103. data/lib/chef/resource/chocolatey_config.rb +2 -6
  104. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  105. data/lib/chef/resource/chocolatey_source.rb +4 -10
  106. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  107. data/lib/chef/resource/cron_access.rb +2 -4
  108. data/lib/chef/resource/dmg_package.rb +6 -10
  109. data/lib/chef/resource/dpkg_package.rb +1 -1
  110. data/lib/chef/resource/execute.rb +6 -1
  111. data/lib/chef/resource/file.rb +1 -1
  112. data/lib/chef/resource/group.rb +2 -2
  113. data/lib/chef/resource/homebrew_cask.rb +5 -15
  114. data/lib/chef/resource/homebrew_tap.rb +2 -6
  115. data/lib/chef/resource/hostname.rb +21 -17
  116. data/lib/chef/resource/http_request.rb +1 -1
  117. data/lib/chef/resource/kernel_module.rb +6 -17
  118. data/lib/chef/resource/locale.rb +2 -3
  119. data/lib/chef/resource/lwrp_base.rb +4 -0
  120. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  121. data/lib/chef/resource/mdadm.rb +53 -7
  122. data/lib/chef/resource/mount.rb +3 -2
  123. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  124. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  125. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  126. data/lib/chef/resource/plist.rb +7 -7
  127. data/lib/chef/resource/powershell_script.rb +1 -1
  128. data/lib/chef/resource/remote_file.rb +1 -1
  129. data/lib/chef/resource/rhsm_errata.rb +16 -1
  130. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  131. data/lib/chef/resource/rhsm_register.rb +12 -6
  132. data/lib/chef/resource/rhsm_repo.rb +2 -6
  133. data/lib/chef/resource/rhsm_subscription.rb +7 -11
  134. data/lib/chef/resource/scm/git.rb +1 -1
  135. data/lib/chef/resource/sudo.rb +6 -6
  136. data/lib/chef/resource/support/client.erb +0 -6
  137. data/lib/chef/resource/sysctl.rb +2 -6
  138. data/lib/chef/resource/systemd_unit.rb +3 -3
  139. data/lib/chef/resource/template.rb +1 -1
  140. data/lib/chef/resource/timezone.rb +1 -3
  141. data/lib/chef/resource/user/mac_user.rb +1 -1
  142. data/lib/chef/resource/user_ulimit.rb +2 -3
  143. data/lib/chef/resource/windows_ad_join.rb +2 -6
  144. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  145. data/lib/chef/resource/windows_auto_run.rb +2 -5
  146. data/lib/chef/resource/windows_certificate.rb +207 -73
  147. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  148. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  149. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  150. data/lib/chef/resource/windows_dns_record.rb +2 -6
  151. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  152. data/lib/chef/resource/windows_env.rb +5 -4
  153. data/lib/chef/resource/windows_feature.rb +3 -9
  154. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  155. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  156. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  157. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  158. data/lib/chef/resource/windows_font.rb +2 -4
  159. data/lib/chef/resource/windows_pagefile.rb +2 -6
  160. data/lib/chef/resource/windows_path.rb +2 -2
  161. data/lib/chef/resource/windows_printer.rb +4 -4
  162. data/lib/chef/resource/windows_printer_port.rb +6 -6
  163. data/lib/chef/resource/windows_security_policy.rb +9 -12
  164. data/lib/chef/resource/windows_share.rb +14 -21
  165. data/lib/chef/resource/windows_shortcut.rb +4 -6
  166. data/lib/chef/resource/windows_task.rb +17 -5
  167. data/lib/chef/resource/windows_uac.rb +2 -4
  168. data/lib/chef/resource/windows_user_privilege.rb +5 -5
  169. data/lib/chef/resource/windows_workgroup.rb +1 -2
  170. data/lib/chef/resources.rb +0 -1
  171. data/lib/chef/user.rb +0 -1
  172. data/lib/chef/user_v1.rb +3 -4
  173. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  174. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  175. data/lib/chef/version.rb +1 -1
  176. data/lib/chef/win32/api.rb +2 -9
  177. data/lib/chef/win32/registry.rb +4 -2
  178. data/lib/chef/win32/version.rb +1 -2
  179. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  180. data/spec/data/lwrp/resources/bar.rb +2 -0
  181. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  182. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  183. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  184. data/spec/data/lwrp/resources/foo.rb +2 -0
  185. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  186. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  187. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  188. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  189. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  190. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  191. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  192. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  193. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  194. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  195. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  196. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  197. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  198. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  199. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  200. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  201. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  202. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  203. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  204. data/spec/functional/resource/apt_package_spec.rb +1 -1
  205. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  206. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  207. data/spec/functional/resource/group_spec.rb +1 -5
  208. data/spec/functional/resource/link_spec.rb +0 -8
  209. data/spec/functional/resource/registry_spec.rb +8 -8
  210. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  211. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  212. data/spec/functional/version_spec.rb +1 -1
  213. data/spec/functional/win32/registry_spec.rb +1 -1
  214. data/spec/integration/client/client_spec.rb +5 -2
  215. data/spec/integration/client/exit_code_spec.rb +1 -1
  216. data/spec/integration/client/ipv6_spec.rb +1 -1
  217. data/spec/integration/compliance/compliance_spec.rb +1 -1
  218. data/spec/integration/ohai/ohai_spec.rb +7 -6
  219. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  220. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  221. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  222. data/spec/integration/recipes/notifies_spec.rb +15 -1
  223. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  224. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  225. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  226. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  227. data/spec/spec_helper.rb +10 -13
  228. data/spec/support/chef_helpers.rb +0 -16
  229. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  230. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  231. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  232. data/spec/support/matchers/leak.rb +7 -9
  233. data/spec/support/platform_helpers.rb +1 -8
  234. data/spec/support/shared/integration/integration_helper.rb +0 -1
  235. data/spec/support/shared/unit/script_resource.rb +2 -2
  236. data/spec/unit/application/solo_spec.rb +2 -2
  237. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  238. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  239. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  240. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  241. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  242. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  243. data/spec/unit/compliance/runner_spec.rb +30 -4
  244. data/spec/unit/cookbook_version_spec.rb +0 -52
  245. data/spec/unit/data_bag_item_spec.rb +1 -6
  246. data/spec/unit/data_collector_spec.rb +1 -47
  247. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  248. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  249. data/spec/unit/lwrp_spec.rb +1 -1
  250. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  251. data/spec/unit/node/attribute_spec.rb +1 -1
  252. data/spec/unit/node_spec.rb +78 -0
  253. data/spec/unit/org_group_spec.rb +45 -0
  254. data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
  255. data/spec/unit/property_spec.rb +23 -22
  256. data/spec/unit/provider/cron_spec.rb +1 -1
  257. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  258. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  259. data/spec/unit/provider/group/pw_spec.rb +2 -2
  260. data/spec/unit/provider/group_spec.rb +1 -1
  261. data/spec/unit/provider/package/apt_spec.rb +84 -18
  262. data/spec/unit/provider/package/deb_spec.rb +3 -3
  263. data/spec/unit/provider/package/powershell_spec.rb +12 -74
  264. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  265. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  266. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  267. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  268. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  269. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  270. data/spec/unit/provider/service/windows_spec.rb +2 -2
  271. data/spec/unit/provider/subversion_spec.rb +2 -2
  272. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  273. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  274. data/spec/unit/provider_spec.rb +0 -8
  275. data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
  276. data/spec/unit/resource/mount_spec.rb +0 -10
  277. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  278. data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
  279. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  280. data/spec/unit/resource/user_ulimit_spec.rb +1 -14
  281. data/spec/unit/resource/windows_task_spec.rb +1 -1
  282. data/spec/unit/user_spec.rb +1 -1
  283. data/spec/unit/user_v1_spec.rb +6 -4
  284. data/tasks/rspec.rb +15 -7
  285. metadata +17 -380
  286. data/bin/knife +0 -24
  287. data/lib/chef/application/knife.rb +0 -234
  288. data/lib/chef/application/windows_service.rb +0 -338
  289. data/lib/chef/application/windows_service_manager.rb +0 -205
  290. data/lib/chef/chef_fs/knife.rb +0 -160
  291. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  292. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  293. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  294. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  295. data/lib/chef/knife/acl_add.rb +0 -57
  296. data/lib/chef/knife/acl_base.rb +0 -183
  297. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  298. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  299. data/lib/chef/knife/acl_remove.rb +0 -62
  300. data/lib/chef/knife/acl_show.rb +0 -56
  301. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  302. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  303. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  304. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  305. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  306. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  307. data/lib/chef/knife/bootstrap.rb +0 -1192
  308. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  309. data/lib/chef/knife/client_create.rb +0 -101
  310. data/lib/chef/knife/client_delete.rb +0 -62
  311. data/lib/chef/knife/client_edit.rb +0 -52
  312. data/lib/chef/knife/client_key_create.rb +0 -73
  313. data/lib/chef/knife/client_key_delete.rb +0 -80
  314. data/lib/chef/knife/client_key_edit.rb +0 -83
  315. data/lib/chef/knife/client_key_list.rb +0 -73
  316. data/lib/chef/knife/client_key_show.rb +0 -80
  317. data/lib/chef/knife/client_list.rb +0 -41
  318. data/lib/chef/knife/client_reregister.rb +0 -58
  319. data/lib/chef/knife/client_show.rb +0 -48
  320. data/lib/chef/knife/config_get.rb +0 -39
  321. data/lib/chef/knife/config_get_profile.rb +0 -37
  322. data/lib/chef/knife/config_list.rb +0 -139
  323. data/lib/chef/knife/config_list_profiles.rb +0 -37
  324. data/lib/chef/knife/config_show.rb +0 -127
  325. data/lib/chef/knife/config_use.rb +0 -61
  326. data/lib/chef/knife/config_use_profile.rb +0 -47
  327. data/lib/chef/knife/configure.rb +0 -150
  328. data/lib/chef/knife/configure_client.rb +0 -48
  329. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  330. data/lib/chef/knife/cookbook_delete.rb +0 -151
  331. data/lib/chef/knife/cookbook_download.rb +0 -142
  332. data/lib/chef/knife/cookbook_list.rb +0 -47
  333. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  334. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  335. data/lib/chef/knife/cookbook_show.rb +0 -98
  336. data/lib/chef/knife/cookbook_upload.rb +0 -292
  337. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  338. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  339. data/lib/chef/knife/core/formatting_options.rb +0 -49
  340. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  341. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  342. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  343. data/lib/chef/knife/core/node_editor.rb +0 -130
  344. data/lib/chef/knife/core/node_presenter.rb +0 -133
  345. data/lib/chef/knife/core/object_loader.rb +0 -115
  346. data/lib/chef/knife/core/status_presenter.rb +0 -147
  347. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  348. data/lib/chef/knife/core/text_formatter.rb +0 -85
  349. data/lib/chef/knife/core/ui.rb +0 -338
  350. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  351. data/lib/chef/knife/data_bag_create.rb +0 -81
  352. data/lib/chef/knife/data_bag_delete.rb +0 -49
  353. data/lib/chef/knife/data_bag_edit.rb +0 -74
  354. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  355. data/lib/chef/knife/data_bag_list.rb +0 -42
  356. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  357. data/lib/chef/knife/data_bag_show.rb +0 -69
  358. data/lib/chef/knife/delete.rb +0 -125
  359. data/lib/chef/knife/deps.rb +0 -156
  360. data/lib/chef/knife/diff.rb +0 -83
  361. data/lib/chef/knife/download.rb +0 -84
  362. data/lib/chef/knife/edit.rb +0 -88
  363. data/lib/chef/knife/environment_compare.rb +0 -128
  364. data/lib/chef/knife/environment_create.rb +0 -52
  365. data/lib/chef/knife/environment_delete.rb +0 -44
  366. data/lib/chef/knife/environment_edit.rb +0 -44
  367. data/lib/chef/knife/environment_from_file.rb +0 -84
  368. data/lib/chef/knife/environment_list.rb +0 -41
  369. data/lib/chef/knife/environment_show.rb +0 -47
  370. data/lib/chef/knife/exec.rb +0 -99
  371. data/lib/chef/knife/group_add.rb +0 -55
  372. data/lib/chef/knife/group_create.rb +0 -49
  373. data/lib/chef/knife/group_destroy.rb +0 -53
  374. data/lib/chef/knife/group_list.rb +0 -43
  375. data/lib/chef/knife/group_remove.rb +0 -56
  376. data/lib/chef/knife/group_show.rb +0 -49
  377. data/lib/chef/knife/key_create.rb +0 -112
  378. data/lib/chef/knife/key_create_base.rb +0 -50
  379. data/lib/chef/knife/key_delete.rb +0 -55
  380. data/lib/chef/knife/key_edit.rb +0 -118
  381. data/lib/chef/knife/key_edit_base.rb +0 -55
  382. data/lib/chef/knife/key_list.rb +0 -90
  383. data/lib/chef/knife/key_list_base.rb +0 -45
  384. data/lib/chef/knife/key_show.rb +0 -53
  385. data/lib/chef/knife/list.rb +0 -177
  386. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  387. data/lib/chef/knife/node_create.rb +0 -47
  388. data/lib/chef/knife/node_delete.rb +0 -46
  389. data/lib/chef/knife/node_edit.rb +0 -70
  390. data/lib/chef/knife/node_environment_set.rb +0 -53
  391. data/lib/chef/knife/node_from_file.rb +0 -51
  392. data/lib/chef/knife/node_list.rb +0 -44
  393. data/lib/chef/knife/node_policy_set.rb +0 -79
  394. data/lib/chef/knife/node_run_list_add.rb +0 -104
  395. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  396. data/lib/chef/knife/node_run_list_set.rb +0 -66
  397. data/lib/chef/knife/node_show.rb +0 -63
  398. data/lib/chef/knife/null.rb +0 -12
  399. data/lib/chef/knife/raw.rb +0 -123
  400. data/lib/chef/knife/recipe_list.rb +0 -32
  401. data/lib/chef/knife/rehash.rb +0 -50
  402. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  403. data/lib/chef/knife/role_create.rb +0 -53
  404. data/lib/chef/knife/role_delete.rb +0 -46
  405. data/lib/chef/knife/role_edit.rb +0 -45
  406. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  407. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  408. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  409. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  410. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  411. data/lib/chef/knife/role_from_file.rb +0 -51
  412. data/lib/chef/knife/role_list.rb +0 -42
  413. data/lib/chef/knife/role_run_list_add.rb +0 -87
  414. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  415. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  416. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  417. data/lib/chef/knife/role_run_list_set.rb +0 -69
  418. data/lib/chef/knife/role_show.rb +0 -48
  419. data/lib/chef/knife/search.rb +0 -194
  420. data/lib/chef/knife/serve.rb +0 -65
  421. data/lib/chef/knife/show.rb +0 -72
  422. data/lib/chef/knife/ssh.rb +0 -645
  423. data/lib/chef/knife/ssl_check.rb +0 -284
  424. data/lib/chef/knife/ssl_fetch.rb +0 -161
  425. data/lib/chef/knife/status.rb +0 -95
  426. data/lib/chef/knife/supermarket_download.rb +0 -121
  427. data/lib/chef/knife/supermarket_install.rb +0 -192
  428. data/lib/chef/knife/supermarket_list.rb +0 -76
  429. data/lib/chef/knife/supermarket_search.rb +0 -53
  430. data/lib/chef/knife/supermarket_share.rb +0 -166
  431. data/lib/chef/knife/supermarket_show.rb +0 -66
  432. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  433. data/lib/chef/knife/tag_create.rb +0 -52
  434. data/lib/chef/knife/tag_delete.rb +0 -60
  435. data/lib/chef/knife/tag_list.rb +0 -47
  436. data/lib/chef/knife/upload.rb +0 -86
  437. data/lib/chef/knife/user_create.rb +0 -107
  438. data/lib/chef/knife/user_delete.rb +0 -44
  439. data/lib/chef/knife/user_dissociate.rb +0 -42
  440. data/lib/chef/knife/user_edit.rb +0 -52
  441. data/lib/chef/knife/user_invite_add.rb +0 -43
  442. data/lib/chef/knife/user_invite_list.rb +0 -34
  443. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  444. data/lib/chef/knife/user_key_create.rb +0 -73
  445. data/lib/chef/knife/user_key_delete.rb +0 -80
  446. data/lib/chef/knife/user_key_edit.rb +0 -83
  447. data/lib/chef/knife/user_key_list.rb +0 -73
  448. data/lib/chef/knife/user_key_show.rb +0 -80
  449. data/lib/chef/knife/user_list.rb +0 -42
  450. data/lib/chef/knife/user_reregister.rb +0 -59
  451. data/lib/chef/knife/user_show.rb +0 -48
  452. data/lib/chef/knife/xargs.rb +0 -282
  453. data/lib/chef/knife/yaml_convert.rb +0 -91
  454. data/lib/chef/knife.rb +0 -665
  455. data/lib/chef/resource/user/dscl_user.rb +0 -35
  456. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  457. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  458. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  459. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  460. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  461. data/spec/functional/knife/configure_spec.rb +0 -33
  462. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  463. data/spec/functional/knife/exec_spec.rb +0 -55
  464. data/spec/functional/knife/rehash_spec.rb +0 -39
  465. data/spec/functional/knife/smoke_test.rb +0 -42
  466. data/spec/functional/knife/ssh_spec.rb +0 -352
  467. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  468. data/spec/functional/resource/windows_service_spec.rb +0 -105
  469. data/spec/functional/win32/service_manager_spec.rb +0 -220
  470. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  471. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  472. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  473. data/spec/integration/knife/chefignore_spec.rb +0 -301
  474. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  475. data/spec/integration/knife/client_create_spec.rb +0 -70
  476. data/spec/integration/knife/client_delete_spec.rb +0 -64
  477. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  478. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  479. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  480. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  481. data/spec/integration/knife/client_list_spec.rb +0 -49
  482. data/spec/integration/knife/client_show_spec.rb +0 -37
  483. data/spec/integration/knife/common_options_spec.rb +0 -174
  484. data/spec/integration/knife/config_list_spec.rb +0 -220
  485. data/spec/integration/knife/config_show_spec.rb +0 -192
  486. data/spec/integration/knife/config_use_spec.rb +0 -198
  487. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  488. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  489. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  490. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  491. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  492. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  493. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  494. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  495. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  496. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  497. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  498. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  499. data/spec/integration/knife/delete_spec.rb +0 -1018
  500. data/spec/integration/knife/deps_spec.rb +0 -703
  501. data/spec/integration/knife/diff_spec.rb +0 -605
  502. data/spec/integration/knife/download_spec.rb +0 -1336
  503. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  504. data/spec/integration/knife/environment_create_spec.rb +0 -41
  505. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  506. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  507. data/spec/integration/knife/environment_list_spec.rb +0 -42
  508. data/spec/integration/knife/environment_show_spec.rb +0 -77
  509. data/spec/integration/knife/list_spec.rb +0 -1060
  510. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  511. data/spec/integration/knife/node_create_spec.rb +0 -47
  512. data/spec/integration/knife/node_delete_spec.rb +0 -48
  513. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  514. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  515. data/spec/integration/knife/node_list_spec.rb +0 -45
  516. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  517. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  518. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  519. data/spec/integration/knife/node_show_spec.rb +0 -36
  520. data/spec/integration/knife/raw_spec.rb +0 -297
  521. data/spec/integration/knife/redirection_spec.rb +0 -64
  522. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  523. data/spec/integration/knife/role_create_spec.rb +0 -41
  524. data/spec/integration/knife/role_delete_spec.rb +0 -48
  525. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  526. data/spec/integration/knife/role_list_spec.rb +0 -45
  527. data/spec/integration/knife/role_show_spec.rb +0 -51
  528. data/spec/integration/knife/search_node_spec.rb +0 -40
  529. data/spec/integration/knife/serve_spec.rb +0 -92
  530. data/spec/integration/knife/show_spec.rb +0 -197
  531. data/spec/integration/knife/upload_spec.rb +0 -1617
  532. data/spec/support/shared/functional/knife.rb +0 -37
  533. data/spec/support/shared/functional/win32_service.rb +0 -57
  534. data/spec/support/shared/integration/knife_support.rb +0 -192
  535. data/spec/support/shared/unit/knife_shared.rb +0 -39
  536. data/spec/unit/application/knife_spec.rb +0 -241
  537. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  538. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  539. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  540. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  541. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  542. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  543. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  544. data/spec/unit/knife/client_create_spec.rb +0 -169
  545. data/spec/unit/knife/client_delete_spec.rb +0 -99
  546. data/spec/unit/knife/client_edit_spec.rb +0 -53
  547. data/spec/unit/knife/client_list_spec.rb +0 -34
  548. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  549. data/spec/unit/knife/client_show_spec.rb +0 -52
  550. data/spec/unit/knife/configure_client_spec.rb +0 -81
  551. data/spec/unit/knife/configure_spec.rb +0 -190
  552. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  553. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  554. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  555. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  556. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  557. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  558. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  559. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  560. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  561. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  562. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  563. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  564. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  565. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  566. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  567. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  568. data/spec/unit/knife/core/ui_spec.rb +0 -656
  569. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  570. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  571. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  572. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  573. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  574. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  575. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  576. data/spec/unit/knife/environment_create_spec.rb +0 -91
  577. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  578. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  579. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  580. data/spec/unit/knife/environment_list_spec.rb +0 -54
  581. data/spec/unit/knife/environment_show_spec.rb +0 -52
  582. data/spec/unit/knife/key_create_spec.rb +0 -223
  583. data/spec/unit/knife/key_delete_spec.rb +0 -133
  584. data/spec/unit/knife/key_edit_spec.rb +0 -264
  585. data/spec/unit/knife/key_helper.rb +0 -74
  586. data/spec/unit/knife/key_list_spec.rb +0 -216
  587. data/spec/unit/knife/key_show_spec.rb +0 -126
  588. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  589. data/spec/unit/knife/node_delete_spec.rb +0 -77
  590. data/spec/unit/knife/node_edit_spec.rb +0 -116
  591. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  592. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  593. data/spec/unit/knife/node_list_spec.rb +0 -62
  594. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  595. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  596. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  597. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  598. data/spec/unit/knife/node_show_spec.rb +0 -65
  599. data/spec/unit/knife/raw_spec.rb +0 -43
  600. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  601. data/spec/unit/knife/role_create_spec.rb +0 -80
  602. data/spec/unit/knife/role_delete_spec.rb +0 -67
  603. data/spec/unit/knife/role_edit_spec.rb +0 -77
  604. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  605. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  606. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  607. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  608. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  609. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  610. data/spec/unit/knife/role_list_spec.rb +0 -54
  611. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  612. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  613. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  614. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  615. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  616. data/spec/unit/knife/role_show_spec.rb +0 -59
  617. data/spec/unit/knife/ssh_spec.rb +0 -403
  618. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  619. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  620. data/spec/unit/knife/status_spec.rb +0 -112
  621. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  622. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  623. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  624. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  625. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  626. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  627. data/spec/unit/knife/tag_create_spec.rb +0 -23
  628. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  629. data/spec/unit/knife/tag_list_spec.rb +0 -23
  630. data/spec/unit/knife/user_create_spec.rb +0 -184
  631. data/spec/unit/knife/user_delete_spec.rb +0 -46
  632. data/spec/unit/knife/user_edit_spec.rb +0 -48
  633. data/spec/unit/knife/user_list_spec.rb +0 -36
  634. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  635. data/spec/unit/knife/user_show_spec.rb +0 -46
  636. data/spec/unit/knife_spec.rb +0 -634
  637. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  638. data/spec/unit/windows_service_spec.rb +0 -118
@@ -19,6 +19,7 @@ require_relative "common_api"
19
19
  require_relative "mixin/state_tracking"
20
20
  require_relative "mixin/immutablize_array"
21
21
  require_relative "mixin/immutablize_hash"
22
+ require_relative "../delayed_evaluator"
22
23
 
23
24
  class Chef
24
25
  class Node
@@ -109,6 +110,12 @@ class Chef
109
110
  key
110
111
  end
111
112
 
113
+ def [](*args)
114
+ value = super
115
+ value = value.call while value.is_a?(::Chef::DelayedEvaluator)
116
+ value
117
+ end
118
+
112
119
  prepend Chef::Node::Mixin::StateTracking
113
120
  prepend Chef::Node::Mixin::ImmutablizeArray
114
121
  end
@@ -187,6 +194,12 @@ class Chef
187
194
  e
188
195
  end
189
196
 
197
+ def [](*args)
198
+ value = super
199
+ value = value.call while value.is_a?(::Chef::DelayedEvaluator)
200
+ value
201
+ end
202
+
190
203
  prepend Chef::Node::Mixin::StateTracking
191
204
  prepend Chef::Node::Mixin::ImmutablizeHash
192
205
  end
@@ -15,6 +15,8 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
+ require_relative "../../delayed_evaluator"
19
+
18
20
  class Chef
19
21
  class Node
20
22
  module Mixin
@@ -46,13 +48,15 @@ class Chef
46
48
  alias :reset :reset_cache
47
49
 
48
50
  def [](key)
49
- if deep_merge_cache.key?(key.to_s)
50
- # return the cache of the deep merged values by top-level key
51
- deep_merge_cache[key.to_s]
52
- else
53
- # save all the work of computing node[key]
54
- deep_merge_cache[key.to_s] = merged_attributes(key)
55
- end
51
+ ret = if deep_merge_cache.key?(key.to_s)
52
+ # return the cache of the deep merged values by top-level key
53
+ deep_merge_cache[key.to_s]
54
+ else
55
+ # save all the work of computing node[key]
56
+ deep_merge_cache[key.to_s] = merged_attributes(key)
57
+ end
58
+ ret = ret.call while ret.is_a?(::Chef::DelayedEvaluator)
59
+ ret
56
60
  end
57
61
 
58
62
  end
data/lib/chef/node.rb CHANGED
@@ -687,25 +687,6 @@ class Chef
687
687
  name <=> other.name
688
688
  end
689
689
 
690
- # Returns hash of node data with attributes based on whitelist/blacklist rules.
691
- def data_for_save
692
- data = for_json
693
- %w{automatic default normal override}.each do |level|
694
- allowlist = allowlist_or_whitelist_config(level)
695
- unless allowlist.nil? # nil => save everything
696
- logger.info("Allowing #{level} node attributes for save.")
697
- data[level] = Chef::AttributeAllowlist.filter(data[level], allowlist)
698
- end
699
-
700
- blocklist = blocklist_or_blacklist_config(level)
701
- unless blocklist.nil? # nil => remove nothing
702
- logger.info("Blocking #{level} node attributes for save")
703
- data[level] = Chef::AttributeBlocklist.filter(data[level], blocklist)
704
- end
705
- end
706
- data
707
- end
708
-
709
690
  private
710
691
 
711
692
  def save_without_policyfile_attrs
@@ -731,7 +712,7 @@ class Chef
731
712
  # @param [String] level the attribute level
732
713
  def allowlist_or_whitelist_config(level)
733
714
  if Chef::Config["#{level}_attribute_whitelist".to_sym]
734
- Chef.deprecated(:attribute_whitelist_configuration, "Attribute whitelist configurations have been deprecated. Use the allowed_LEVEL_attribute configs instead")
715
+ Chef.deprecated(:attribute_blacklist_configuration, "Attribute whitelist configurations have been deprecated. Use the allowed_LEVEL_attribute configs instead")
735
716
  Chef::Config["#{level}_attribute_whitelist".to_sym]
736
717
  else
737
718
  Chef::Config["allowed_#{level}_attributes".to_sym]
@@ -751,6 +732,24 @@ class Chef
751
732
  end
752
733
  end
753
734
 
735
+ def data_for_save
736
+ data = for_json
737
+ %w{automatic default normal override}.each do |level|
738
+ allowlist = allowlist_or_whitelist_config(level)
739
+ unless allowlist.nil? # nil => save everything
740
+ logger.info("Allowing #{level} node attributes for save.")
741
+ data[level] = Chef::AttributeAllowlist.filter(data[level], allowlist)
742
+ end
743
+
744
+ blocklist = blocklist_or_blacklist_config(level)
745
+ unless blocklist.nil? # nil => remove nothing
746
+ logger.info("Blocking #{level} node attributes for save")
747
+ data[level] = Chef::AttributeBlocklist.filter(data[level], blocklist)
748
+ end
749
+ end
750
+ data
751
+ end
752
+
754
753
  # Returns a UUID that uniquely identifies this node for reporting reasons.
755
754
  #
756
755
  # The node is read in from disk if it exists, or it's generated if it does
data/lib/chef/org.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Steven Danna (steve@chef.io)
3
- # Copyright:: Copyright (c) Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,9 +19,10 @@
19
19
  require_relative "json_compat"
20
20
  require_relative "mixin/params_validate"
21
21
  require_relative "server_api"
22
+ require_relative "group"
22
23
 
23
24
  class Chef
24
- class Org
25
+ class Org < Group
25
26
 
26
27
  include Chef::Mixin::ParamsValidate
27
28
 
@@ -148,11 +148,6 @@ class Chef
148
148
  # consume_external_attrs may add items to the run_list. Save the
149
149
  # expanded run_list, which we will pass to the server later to
150
150
  # determine which versions of cookbooks to use.
151
-
152
- unless Chef::Config[:policy_document_native_api]
153
- Chef.deprecated(:policyfile_compat_mode, "The chef-server 11 policyfile compat mode is deprecated, please set policy_document_native_api to true in your config")
154
- end
155
-
156
151
  node.reset_defaults_and_overrides
157
152
 
158
153
  node.consume_external_attrs(ohai_data, json_attribs)
data/lib/chef/property.rb CHANGED
@@ -412,6 +412,7 @@ class Chef
412
412
  # Otherwise, we have to validate it now.
413
413
  value = input_to_stored_value(resource, default, is_default: true)
414
414
  end
415
+ value = deep_dup(value)
415
416
  value = stored_value_to_output(resource, value)
416
417
 
417
418
  # If the value is mutable (non-frozen), we set it on the instance
@@ -748,5 +749,22 @@ class Chef
748
749
 
749
750
  result
750
751
  end
752
+
753
+ # recursively dup the value
754
+ def deep_dup(value)
755
+ return value if value.is_a?(DelayedEvaluator)
756
+
757
+ visitor = lambda do |obj|
758
+ obj = obj.dup rescue obj
759
+ case obj
760
+ when Hash
761
+ obj.each { |k, v| obj[k] = visitor.call(v) }
762
+ when Array
763
+ obj.each_with_index { |v, i| obj[i] = visitor.call(v) }
764
+ end
765
+ obj
766
+ end
767
+ visitor.call(value)
768
+ end
751
769
  end
752
770
  end
@@ -101,7 +101,7 @@ class Chef
101
101
 
102
102
  if @cron_exists
103
103
  unless cron_different?
104
- logger.trace("Skipping existing cron entry '#{new_resource.name}'")
104
+ logger.debug("#{new_resource}: Skipping existing cron entry")
105
105
  return
106
106
  end
107
107
  read_crontab.each_line do |line|
@@ -27,7 +27,7 @@ class Chef
27
27
 
28
28
  provides :execute, target_mode: true
29
29
 
30
- def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout, :input
30
+ def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout, :input, :login
31
31
 
32
32
  def load_current_resource
33
33
  current_resource = Chef::Resource::Execute.new(new_resource.name)
@@ -92,6 +92,7 @@ class Chef
92
92
  opts[:cwd] = cwd if cwd
93
93
  opts[:umask] = umask if umask
94
94
  opts[:input] = input if input
95
+ opts[:login] = login if login
95
96
  opts[:default_env] = default_env
96
97
  opts[:log_level] = :info
97
98
  opts[:log_tag] = new_resource.to_s
@@ -152,7 +152,7 @@ class Chef
152
152
  unless ::File.exist?(new_resource.path)
153
153
  action_create
154
154
  else
155
- logger.trace("#{new_resource} exists at #{new_resource.path} taking no action.")
155
+ logger.debug("#{new_resource} exists at #{new_resource.path} taking no action.")
156
156
  end
157
157
  end
158
158
 
@@ -94,7 +94,7 @@ class Chef
94
94
  enable_submodules
95
95
  add_remotes
96
96
  else
97
- logger.trace "#{new_resource} checkout destination #{cwd} already exists or is a non-empty directory"
97
+ logger.debug "#{new_resource} checkout destination #{cwd} already exists or is a non-empty directory"
98
98
  end
99
99
  end
100
100
 
@@ -281,12 +281,10 @@ class Chef
281
281
 
282
282
  def target_revision
283
283
  @target_revision ||=
284
- begin
285
- if sha_hash?(new_resource.revision)
286
- @target_revision = new_resource.revision
287
- else
288
- @target_revision = remote_resolve_reference
289
- end
284
+ if sha_hash?(new_resource.revision)
285
+ @target_revision = new_resource.revision
286
+ else
287
+ @target_revision = remote_resolve_reference
290
288
  end
291
289
  end
292
290
 
@@ -158,7 +158,7 @@ class Chef
158
158
  if new_resource.group_name && (current_resource.group_name != new_resource.group_name)
159
159
  dscl_create_group
160
160
  end
161
- if new_resource.gid && (current_resource.gid != new_resource.gid.to_s)
161
+ if new_resource.gid && (current_resource.gid != new_resource.gid)
162
162
  set_gid
163
163
  end
164
164
  if new_resource.members || new_resource.excluded_members
@@ -67,7 +67,7 @@ class Chef
67
67
  members_to_be_added << member unless current_resource.members.include?(member)
68
68
  end
69
69
  members_to_be_added.each do |member|
70
- logger.trace("#{new_resource} appending member #{member} to group #{new_resource.group_name}")
70
+ logger.debug("#{new_resource} appending member #{member} to group #{new_resource.group_name}")
71
71
  add_member(member)
72
72
  end
73
73
  end
@@ -79,13 +79,13 @@ class Chef
79
79
  end
80
80
 
81
81
  members_to_be_removed.each do |member|
82
- logger.trace("#{new_resource} removing member #{member} from group #{new_resource.group_name}")
82
+ logger.debug("#{new_resource} removing member #{member} from group #{new_resource.group_name}")
83
83
  remove_member(member)
84
84
  end
85
85
  end
86
86
  else
87
87
  members_description = new_resource.members.empty? ? "none" : new_resource.members.join(", ")
88
- logger.trace("#{new_resource} setting group members to: #{members_description}")
88
+ logger.debug("#{new_resource} setting group members to: #{members_description}")
89
89
  set_members(new_resource.members)
90
90
  end
91
91
  end
@@ -66,13 +66,13 @@ class Chef
66
66
  end
67
67
  end
68
68
 
69
- logger.trace("#{new_resource} not changing group members, the group has no members to add") if members_to_be_added.empty?
69
+ logger.debug("#{new_resource} not changing group members, the group has no members to add") if members_to_be_added.empty?
70
70
 
71
71
  add_group_members(members_to_be_added)
72
72
  else
73
73
  # We are resetting the members of a group so use the same trick
74
74
  reset_group_membership
75
- logger.trace("#{new_resource} setting group members to: none") if new_resource.members.empty?
75
+ logger.debug("#{new_resource} setting group members to: none") if new_resource.members.empty?
76
76
  add_group_members(new_resource.members)
77
77
  end
78
78
  end
@@ -84,7 +84,7 @@ class Chef
84
84
 
85
85
  # Adds a list of usernames to the group using `user mod`
86
86
  def add_group_members(members)
87
- logger.trace("#{new_resource} adding members #{members.join(", ")}") unless members.empty?
87
+ logger.debug("#{new_resource} adding members #{members.join(", ")}") unless members.empty?
88
88
  members.each do |user|
89
89
  shell_out!("user", "mod", "-G", new_resource.group_name, user)
90
90
  end
@@ -44,7 +44,7 @@ class Chef
44
44
  # new or existing group. Because pw groupadd does not support the -m
45
45
  # and -d options used by manage_group, we treat group creation as a
46
46
  # special case and use -M.
47
- logger.trace("#{new_resource} setting group members: #{new_resource.members.join(",")}")
47
+ logger.debug("#{new_resource} setting group members: #{new_resource.members.join(",")}")
48
48
  command += [ "-M", new_resource.members.join(",") ]
49
49
  end
50
50
 
@@ -119,12 +119,12 @@ class Chef
119
119
  end
120
120
 
121
121
  unless members_to_be_added.empty?
122
- logger.trace("#{new_resource} adding group members: #{members_to_be_added.join(",")}")
122
+ logger.debug("#{new_resource} adding group members: #{members_to_be_added.join(",")}")
123
123
  opts << [ "-m", members_to_be_added.join(",") ]
124
124
  end
125
125
 
126
126
  unless members_to_be_removed.empty?
127
- logger.trace("#{new_resource} removing group members: #{members_to_be_removed.join(",")}")
127
+ logger.debug("#{new_resource} removing group members: #{members_to_be_removed.join(",")}")
128
128
  opts << [ "-d", members_to_be_removed.join(",") ]
129
129
  end
130
130
 
@@ -205,7 +205,7 @@ class Chef
205
205
  logger.info("#{new_resource} deleted")
206
206
  end
207
207
  else
208
- logger.trace("#{new_resource} does not exist - nothing to do")
208
+ logger.debug("#{new_resource} does not exist - nothing to do")
209
209
  end
210
210
  delete_config
211
211
  end
@@ -220,7 +220,7 @@ class Chef
220
220
  logger.info("#{new_resource} disabled")
221
221
  end
222
222
  else
223
- logger.trace("#{new_resource} does not exist - nothing to do")
223
+ logger.debug("#{new_resource} does not exist - nothing to do")
224
224
  end
225
225
  end
226
226
 
@@ -106,7 +106,7 @@ class Chef
106
106
  if new_resource.link_type == :symbolic
107
107
  converge_by("create symlink at #{new_resource.target_file} to #{new_resource.to}") do
108
108
  file_class.symlink(canonicalize(new_resource.to), new_resource.target_file)
109
- logger.trace("#{new_resource} created #{new_resource.link_type} link from #{new_resource.target_file} -> #{new_resource.to}")
109
+ logger.debug("#{new_resource} created #{new_resource.link_type} link from #{new_resource.target_file} -> #{new_resource.to}")
110
110
  logger.info("#{new_resource} created")
111
111
  # file_class.symlink will create the link with default access controls.
112
112
  # This means that the access controls of the file could be different
@@ -118,7 +118,7 @@ class Chef
118
118
  elsif new_resource.link_type == :hard
119
119
  converge_by("create hard link at #{new_resource.target_file} to #{new_resource.to}") do
120
120
  file_class.link(new_resource.to, new_resource.target_file)
121
- logger.trace("#{new_resource} created #{new_resource.link_type} link from #{new_resource.target_file} -> #{new_resource.to}")
121
+ logger.debug("#{new_resource} created #{new_resource.link_type} link from #{new_resource.target_file} -> #{new_resource.to}")
122
122
  logger.info("#{new_resource} created")
123
123
  end
124
124
  end
@@ -140,7 +140,7 @@ class Chef
140
140
  shell_out!(command)
141
141
  logger.trace("#{@new_resource} is mounted at #{@new_resource.mount_point}")
142
142
  else
143
- logger.trace("#{@new_resource} is already mounted at #{@new_resource.mount_point}")
143
+ logger.debug("#{@new_resource} is already mounted at #{@new_resource.mount_point}")
144
144
  end
145
145
  end
146
146
 
@@ -154,7 +154,7 @@ class Chef
154
154
 
155
155
  def enable_fs
156
156
  if @current_resource.enabled && mount_options_unchanged?
157
- logger.trace("#{@new_resource} is already enabled - nothing to do")
157
+ logger.debug("#{@new_resource} is already enabled - nothing to do")
158
158
  return nil
159
159
  end
160
160
 
@@ -211,7 +211,7 @@ class Chef
211
211
  contents.each { |line| fstab.puts line }
212
212
  end
213
213
  else
214
- logger.trace("#{@new_resource} is not enabled - nothing to do")
214
+ logger.debug("#{@new_resource} is not enabled - nothing to do")
215
215
  end
216
216
  end
217
217
 
@@ -120,7 +120,7 @@ class Chef
120
120
  shell_out!(*command)
121
121
  logger.trace("#{@new_resource} is mounted at #{@new_resource.mount_point}")
122
122
  else
123
- logger.trace("#{@new_resource} is already mounted at #{@new_resource.mount_point}")
123
+ logger.debug("#{@new_resource} is already mounted at #{@new_resource.mount_point}")
124
124
  end
125
125
  end
126
126
 
@@ -129,7 +129,7 @@ class Chef
129
129
  shell_out!("umount", @new_resource.mount_point)
130
130
  logger.trace("#{@new_resource} is no longer mounted at #{@new_resource.mount_point}")
131
131
  else
132
- logger.trace("#{@new_resource} is not mounted at #{@new_resource.mount_point}")
132
+ logger.debug("#{@new_resource} is not mounted at #{@new_resource.mount_point}")
133
133
  end
134
134
  end
135
135
 
@@ -147,7 +147,7 @@ class Chef
147
147
  sleep 1
148
148
  mount_fs
149
149
  else
150
- logger.trace("#{@new_resource} is not mounted at #{@new_resource.mount_point} - nothing to do")
150
+ logger.debug("#{@new_resource} is not mounted at #{@new_resource.mount_point} - nothing to do")
151
151
  end
152
152
  end
153
153
 
@@ -158,7 +158,7 @@ class Chef
158
158
 
159
159
  def enable_fs
160
160
  if @current_resource.enabled && mount_options_unchanged? && device_unchanged?
161
- logger.trace("#{@new_resource} is already enabled - nothing to do")
161
+ logger.debug("#{@new_resource} is already enabled - nothing to do")
162
162
  return nil
163
163
  end
164
164
 
@@ -272,7 +272,7 @@ class Chef
272
272
  contents.reverse_each { |line| fstab.puts line }
273
273
  end
274
274
  else
275
- logger.trace("#{@new_resource} is not enabled - nothing to do")
275
+ logger.debug("#{@new_resource} is not enabled - nothing to do")
276
276
  end
277
277
  end
278
278
 
@@ -67,7 +67,7 @@ class Chef
67
67
  password: @new_resource.password)
68
68
  logger.trace("#{@new_resource} is mounted at #{@new_resource.mount_point}")
69
69
  else
70
- logger.trace("#{@new_resource} is already mounted at #{@new_resource.mount_point}")
70
+ logger.debug("#{@new_resource} is already mounted at #{@new_resource.mount_point}")
71
71
  end
72
72
  end
73
73
 
@@ -42,7 +42,7 @@ class Chef
42
42
  logger.info("#{new_resource} mounted")
43
43
  end
44
44
  else
45
- logger.trace("#{new_resource} is already mounted")
45
+ logger.debug("#{new_resource} is already mounted")
46
46
  end
47
47
  end
48
48
 
@@ -53,7 +53,7 @@ class Chef
53
53
  logger.info("#{new_resource} unmounted")
54
54
  end
55
55
  else
56
- logger.trace("#{new_resource} is already unmounted")
56
+ logger.debug("#{new_resource} is already unmounted")
57
57
  end
58
58
  end
59
59
 
@@ -76,7 +76,7 @@ class Chef
76
76
  end
77
77
  end
78
78
  else
79
- logger.trace("#{new_resource} not mounted, nothing to remount")
79
+ logger.debug("#{new_resource} not mounted, nothing to remount")
80
80
  end
81
81
  end
82
82
 
@@ -87,7 +87,7 @@ class Chef
87
87
  logger.info("#{new_resource} enabled")
88
88
  end
89
89
  else
90
- logger.trace("#{new_resource} already enabled")
90
+ logger.debug("#{new_resource} already enabled")
91
91
  end
92
92
  end
93
93
 
@@ -98,7 +98,7 @@ class Chef
98
98
  logger.info("#{new_resource} disabled")
99
99
  end
100
100
  else
101
- logger.trace("#{new_resource} already disabled")
101
+ logger.debug("#{new_resource} already disabled")
102
102
  end
103
103
  end
104
104
 
@@ -176,6 +176,7 @@ class Chef
176
176
  def resolve_package_versions(pkg)
177
177
  current_version = nil
178
178
  candidate_version = nil
179
+ all_versions = []
179
180
  run_noninteractive("apt-cache", default_release_options, "policy", pkg).stdout.each_line do |line|
180
181
  case line
181
182
  when /^\s{2}Installed: (.+)$/
@@ -184,9 +185,34 @@ class Chef
184
185
  when /^\s{2}Candidate: (.+)$/
185
186
  candidate_version = ( $1 != "(none)" ) ? $1 : nil
186
187
  logger.trace("#{new_resource} candidate version for #{pkg} is #{$1}")
188
+ when /\s+(?:\*\*\* )?(\S+) \d+/
189
+ all_versions << $1
187
190
  end
188
191
  end
189
- [ current_version, candidate_version ]
192
+ # This is a bit ugly... really this whole provider needs
193
+ # to be rewritten to use target_version_array and friends, but
194
+ # for now this gets us moving
195
+ idx = package_name_array.index(pkg)
196
+ chosen_version =
197
+ if idx
198
+ user_ver = new_version_array[idx]
199
+ if user_ver
200
+ if all_versions.include?(user_ver)
201
+ user_ver
202
+ else
203
+ logger.debug("User specified a version that's not available")
204
+ nil
205
+ end
206
+ else
207
+ # user didn't specify a version, use candidate
208
+ candidate_version
209
+ end
210
+ else
211
+ # this probably means we're redirected from a virtual
212
+ # package, so... just go with candidate version
213
+ candidate_version
214
+ end
215
+ [ current_version, chosen_version ]
190
216
  end
191
217
 
192
218
  def resolve_virtual_package_name(pkg)
@@ -28,12 +28,12 @@ class Chef
28
28
 
29
29
  action :reconfig do
30
30
  if current_resource.version.nil?
31
- logger.trace("#{new_resource} is NOT installed - nothing to do")
31
+ logger.debug("#{new_resource} is NOT installed - nothing to do")
32
32
  return
33
33
  end
34
34
 
35
35
  unless new_resource.response_file
36
- logger.trace("#{new_resource} no response_file provided - nothing to do")
36
+ logger.debug("#{new_resource} no response_file provided - nothing to do")
37
37
  return
38
38
  end
39
39
 
@@ -46,7 +46,7 @@ class Chef
46
46
  logger.info("#{new_resource} reconfigured")
47
47
  end
48
48
  else
49
- logger.trace("#{new_resource} preseeding has not changed - nothing to do")
49
+ logger.debug("#{new_resource} preseeding has not changed - nothing to do")
50
50
  end
51
51
  end
52
52
 
@@ -160,7 +160,7 @@ else:
160
160
 
161
161
  try:
162
162
  while 1:
163
- # kill self if we get orphaned (tragic)
163
+ # stop the process if the parent proc goes away
164
164
  ppid = os.getppid()
165
165
  if ppid == 1:
166
166
  raise RuntimeError("orphaned")
@@ -28,13 +28,13 @@ class Chef
28
28
  provides :package, platform: "gentoo"
29
29
  provides :portage_package
30
30
 
31
- PACKAGE_NAME_PATTERN = %r{(?:([^/]+)/)?([^/]+)}.freeze
31
+ PACKAGE_NAME_PATTERN = %r{^(?:([^/]+)/)?([^/]+)$}.freeze
32
32
 
33
33
  def load_current_resource
34
34
  @current_resource = Chef::Resource::PortagePackage.new(new_resource.name)
35
35
  current_resource.package_name(new_resource.package_name)
36
36
 
37
- category, pkg = /^#{PACKAGE_NAME_PATTERN}$/.match(new_resource.package_name)[1, 2]
37
+ category, pkg = PACKAGE_NAME_PATTERN.match(new_resource.package_name)[1, 2]
38
38
 
39
39
  globsafe_category = category ? Chef::Util::PathHelper.escape_glob_dir(category) : nil
40
40
  globsafe_pkg = Chef::Util::PathHelper.escape_glob_dir(pkg)
@@ -124,11 +124,6 @@ class Chef
124
124
  command.push("-RequiredVersion #{version}") if version
125
125
  command.push("-Source #{new_resource.source}") if new_resource.source && cmdlet_name =~ Regexp.union(/Install-Package/, /Find-Package/)
126
126
  command.push("-SkipPublisherCheck") if new_resource.skip_publisher_check && cmdlet_name !~ /Find-Package/
127
- if new_resource.options && cmdlet_name !~ Regexp.union(/Get-Package/, /Find-Package/)
128
- new_resource.options.each do |arg|
129
- command.push(arg) unless command.include?(arg)
130
- end
131
- end
132
127
  command.push(").Version")
133
128
  command.join(" ")
134
129
  end