chef 16.18.0-universal-mingw32 → 17.0.242-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 (649) 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/action_collection.rb +1 -1
  8. data/lib/chef/application/base.rb +1 -1
  9. data/lib/chef/application.rb +1 -1
  10. data/lib/chef/applications.rb +0 -1
  11. data/lib/chef/chef_fs/command_line.rb +5 -2
  12. data/lib/chef/chef_fs/file_system.rb +9 -10
  13. data/lib/chef/client.rb +5 -5
  14. data/lib/chef/compliance/default_attributes.rb +4 -3
  15. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  16. data/lib/chef/compliance/reporter/automate.rb +17 -7
  17. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  18. data/lib/chef/compliance/reporter/cli.rb +77 -0
  19. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  20. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  21. data/lib/chef/compliance/runner.rb +65 -27
  22. data/lib/chef/cookbook/gem_installer.rb +1 -5
  23. data/lib/chef/cookbook/synchronizer.rb +3 -5
  24. data/lib/chef/cookbook_loader.rb +2 -4
  25. data/lib/chef/cookbook_uploader.rb +0 -1
  26. data/lib/chef/cookbook_version.rb +4 -26
  27. data/lib/chef/data_bag_item.rb +11 -2
  28. data/lib/chef/data_collector/run_end_message.rb +2 -2
  29. data/lib/chef/delayed_evaluator.rb +4 -0
  30. data/lib/chef/deprecated.rb +6 -12
  31. data/lib/chef/dsl/chef_vault.rb +6 -6
  32. data/lib/chef/dsl/reboot_pending.rb +1 -2
  33. data/lib/chef/exceptions.rb +0 -3
  34. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  35. data/lib/chef/formatters/error_mapper.rb +2 -2
  36. data/lib/chef/group.rb +75 -0
  37. data/lib/chef/http.rb +5 -5
  38. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  39. data/lib/chef/node/attribute.rb +9 -24
  40. data/lib/chef/node/immutable_collections.rb +13 -0
  41. data/lib/chef/node/mixin/deep_merge_cache.rb +14 -10
  42. data/lib/chef/node.rb +19 -20
  43. data/lib/chef/org.rb +3 -2
  44. data/lib/chef/policy_builder/policyfile.rb +0 -5
  45. data/lib/chef/property.rb +18 -0
  46. data/lib/chef/provider/cron.rb +1 -1
  47. data/lib/chef/provider/execute.rb +2 -1
  48. data/lib/chef/provider/file.rb +1 -1
  49. data/lib/chef/provider/git.rb +5 -7
  50. data/lib/chef/provider/group/dscl.rb +1 -1
  51. data/lib/chef/provider/group/groupadd.rb +3 -3
  52. data/lib/chef/provider/group/groupmod.rb +3 -3
  53. data/lib/chef/provider/group/pw.rb +3 -3
  54. data/lib/chef/provider/ifconfig.rb +2 -2
  55. data/lib/chef/provider/link.rb +2 -2
  56. data/lib/chef/provider/mount/aix.rb +3 -3
  57. data/lib/chef/provider/mount/mount.rb +5 -5
  58. data/lib/chef/provider/mount/windows.rb +1 -1
  59. data/lib/chef/provider/mount.rb +5 -5
  60. data/lib/chef/provider/package/apt.rb +27 -1
  61. data/lib/chef/provider/package/deb.rb +3 -3
  62. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  63. data/lib/chef/provider/package/portage.rb +2 -2
  64. data/lib/chef/provider/package/powershell.rb +0 -5
  65. data/lib/chef/provider/package/rubygems.rb +9 -15
  66. data/lib/chef/provider/package/windows.rb +2 -4
  67. data/lib/chef/provider/package/yum/yum_helper.py +1 -1
  68. data/lib/chef/provider/package.rb +17 -21
  69. data/lib/chef/provider/route.rb +2 -2
  70. data/lib/chef/provider/service/aixinit.rb +1 -1
  71. data/lib/chef/provider/service/debian.rb +1 -1
  72. data/lib/chef/provider/service/freebsd.rb +15 -21
  73. data/lib/chef/provider/service/macosx.rb +4 -4
  74. data/lib/chef/provider/service/systemd.rb +43 -14
  75. data/lib/chef/provider/service/upstart.rb +2 -13
  76. data/lib/chef/provider/service/windows.rb +12 -12
  77. data/lib/chef/provider/service.rb +6 -6
  78. data/lib/chef/provider/subversion.rb +10 -12
  79. data/lib/chef/provider/systemd_unit.rb +36 -10
  80. data/lib/chef/provider/template/content.rb +3 -7
  81. data/lib/chef/provider/user/dscl.rb +1 -1
  82. data/lib/chef/provider/user/mac.rb +17 -20
  83. data/lib/chef/provider/user/pw.rb +1 -1
  84. data/lib/chef/provider/user/windows.rb +1 -1
  85. data/lib/chef/provider/user.rb +2 -2
  86. data/lib/chef/provider/zypper_repository.rb +2 -2
  87. data/lib/chef/provider.rb +1 -1
  88. data/lib/chef/providers.rb +0 -1
  89. data/lib/chef/resource/alternatives.rb +6 -6
  90. data/lib/chef/resource/apt_package.rb +1 -1
  91. data/lib/chef/resource/apt_preference.rb +2 -2
  92. data/lib/chef/resource/apt_repository.rb +6 -6
  93. data/lib/chef/resource/apt_update.rb +3 -2
  94. data/lib/chef/resource/archive_file.rb +8 -9
  95. data/lib/chef/resource/breakpoint.rb +1 -1
  96. data/lib/chef/resource/build_essential.rb +2 -6
  97. data/lib/chef/resource/chef_client_config.rb +2 -2
  98. data/lib/chef/resource/chef_client_cron.rb +4 -4
  99. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  100. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  101. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  102. data/lib/chef/resource/chef_client_trusted_certificate.rb +0 -1
  103. data/lib/chef/resource/chef_handler.rb +3 -7
  104. data/lib/chef/resource/chef_sleep.rb +1 -1
  105. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  106. data/lib/chef/resource/chocolatey_config.rb +2 -6
  107. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  108. data/lib/chef/resource/chocolatey_source.rb +4 -10
  109. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  110. data/lib/chef/resource/cron_access.rb +2 -4
  111. data/lib/chef/resource/dmg_package.rb +6 -10
  112. data/lib/chef/resource/dpkg_package.rb +1 -1
  113. data/lib/chef/resource/execute.rb +6 -1
  114. data/lib/chef/resource/file.rb +1 -1
  115. data/lib/chef/resource/group.rb +2 -2
  116. data/lib/chef/resource/homebrew_cask.rb +5 -15
  117. data/lib/chef/resource/homebrew_tap.rb +2 -6
  118. data/lib/chef/resource/hostname.rb +21 -17
  119. data/lib/chef/resource/http_request.rb +1 -1
  120. data/lib/chef/resource/kernel_module.rb +6 -17
  121. data/lib/chef/resource/locale.rb +2 -3
  122. data/lib/chef/resource/lwrp_base.rb +4 -0
  123. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  124. data/lib/chef/resource/mdadm.rb +53 -7
  125. data/lib/chef/resource/mount.rb +3 -2
  126. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  127. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  128. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  129. data/lib/chef/resource/plist.rb +7 -7
  130. data/lib/chef/resource/powershell_script.rb +1 -1
  131. data/lib/chef/resource/remote_file.rb +1 -1
  132. data/lib/chef/resource/rhsm_errata.rb +16 -1
  133. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  134. data/lib/chef/resource/rhsm_register.rb +12 -6
  135. data/lib/chef/resource/rhsm_repo.rb +2 -6
  136. data/lib/chef/resource/rhsm_subscription.rb +7 -11
  137. data/lib/chef/resource/scm/git.rb +1 -1
  138. data/lib/chef/resource/sudo.rb +6 -6
  139. data/lib/chef/resource/support/client.erb +2 -6
  140. data/lib/chef/resource/sysctl.rb +2 -6
  141. data/lib/chef/resource/systemd_unit.rb +3 -3
  142. data/lib/chef/resource/template.rb +1 -1
  143. data/lib/chef/resource/timezone.rb +1 -3
  144. data/lib/chef/resource/user/mac_user.rb +1 -1
  145. data/lib/chef/resource/user_ulimit.rb +2 -3
  146. data/lib/chef/resource/windows_ad_join.rb +2 -6
  147. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  148. data/lib/chef/resource/windows_auto_run.rb +2 -5
  149. data/lib/chef/resource/windows_certificate.rb +207 -73
  150. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  151. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  152. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  153. data/lib/chef/resource/windows_dns_record.rb +2 -6
  154. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  155. data/lib/chef/resource/windows_env.rb +5 -4
  156. data/lib/chef/resource/windows_feature.rb +3 -9
  157. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  158. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  159. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  160. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  161. data/lib/chef/resource/windows_font.rb +2 -4
  162. data/lib/chef/resource/windows_pagefile.rb +2 -6
  163. data/lib/chef/resource/windows_path.rb +2 -2
  164. data/lib/chef/resource/windows_printer.rb +4 -4
  165. data/lib/chef/resource/windows_printer_port.rb +6 -6
  166. data/lib/chef/resource/windows_security_policy.rb +9 -12
  167. data/lib/chef/resource/windows_share.rb +14 -21
  168. data/lib/chef/resource/windows_shortcut.rb +4 -6
  169. data/lib/chef/resource/windows_task.rb +17 -5
  170. data/lib/chef/resource/windows_uac.rb +2 -4
  171. data/lib/chef/resource/windows_user_privilege.rb +5 -5
  172. data/lib/chef/resource/windows_workgroup.rb +1 -2
  173. data/lib/chef/resource.rb +1 -1
  174. data/lib/chef/resource_reporter.rb +1 -1
  175. data/lib/chef/resources.rb +0 -1
  176. data/lib/chef/shell/ext.rb +3 -3
  177. data/lib/chef/user.rb +0 -1
  178. data/lib/chef/user_v1.rb +3 -4
  179. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  180. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  181. data/lib/chef/version.rb +1 -1
  182. data/lib/chef/win32/api.rb +2 -9
  183. data/lib/chef/win32/registry.rb +4 -2
  184. data/lib/chef/win32/version.rb +1 -2
  185. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  186. data/spec/data/lwrp/resources/bar.rb +2 -0
  187. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  188. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  189. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  190. data/spec/data/lwrp/resources/foo.rb +2 -0
  191. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  192. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  193. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  194. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  195. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  196. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  197. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  198. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  199. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  200. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  201. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  202. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  203. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  204. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  205. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  206. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  207. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  208. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  209. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  210. data/spec/functional/resource/apt_package_spec.rb +1 -1
  211. data/spec/functional/resource/chocolatey_package_spec.rb +9 -0
  212. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  213. data/spec/functional/resource/group_spec.rb +1 -5
  214. data/spec/functional/resource/link_spec.rb +0 -8
  215. data/spec/functional/resource/registry_spec.rb +8 -8
  216. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  217. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  218. data/spec/functional/version_spec.rb +1 -1
  219. data/spec/functional/win32/registry_spec.rb +1 -1
  220. data/spec/integration/client/client_spec.rb +5 -2
  221. data/spec/integration/client/exit_code_spec.rb +1 -1
  222. data/spec/integration/client/ipv6_spec.rb +1 -1
  223. data/spec/integration/compliance/compliance_spec.rb +1 -1
  224. data/spec/integration/ohai/ohai_spec.rb +7 -6
  225. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  226. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  227. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  228. data/spec/integration/recipes/notifies_spec.rb +15 -1
  229. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  230. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  231. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  232. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  233. data/spec/spec_helper.rb +10 -13
  234. data/spec/support/chef_helpers.rb +0 -16
  235. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  236. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  237. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  238. data/spec/support/matchers/leak.rb +7 -9
  239. data/spec/support/platform_helpers.rb +1 -8
  240. data/spec/support/shared/integration/integration_helper.rb +0 -1
  241. data/spec/support/shared/unit/script_resource.rb +2 -2
  242. data/spec/unit/application/solo_spec.rb +2 -2
  243. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  244. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  245. data/spec/unit/client_spec.rb +4 -4
  246. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  247. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  248. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  249. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  250. data/spec/unit/compliance/runner_spec.rb +30 -4
  251. data/spec/unit/cookbook_version_spec.rb +0 -52
  252. data/spec/unit/data_bag_item_spec.rb +1 -6
  253. data/spec/unit/data_collector_spec.rb +2 -71
  254. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  255. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  256. data/spec/unit/lwrp_spec.rb +1 -1
  257. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  258. data/spec/unit/mixin/powershell_out_spec.rb +2 -2
  259. data/spec/unit/node/attribute_spec.rb +1 -1
  260. data/spec/unit/node_spec.rb +78 -0
  261. data/spec/unit/org_group_spec.rb +45 -0
  262. data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
  263. data/spec/unit/property_spec.rb +23 -22
  264. data/spec/unit/provider/cron_spec.rb +1 -1
  265. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  266. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  267. data/spec/unit/provider/group/pw_spec.rb +2 -2
  268. data/spec/unit/provider/group_spec.rb +1 -1
  269. data/spec/unit/provider/package/apt_spec.rb +84 -18
  270. data/spec/unit/provider/package/deb_spec.rb +3 -3
  271. data/spec/unit/provider/package/powershell_spec.rb +12 -74
  272. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  273. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  274. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  275. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  276. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  277. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  278. data/spec/unit/provider/service/windows_spec.rb +2 -2
  279. data/spec/unit/provider/subversion_spec.rb +2 -2
  280. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  281. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  282. data/spec/unit/provider_spec.rb +0 -8
  283. data/spec/unit/resource/archive_file_spec.rb +1 -13
  284. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +0 -14
  285. data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
  286. data/spec/unit/resource/mount_spec.rb +0 -10
  287. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  288. data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
  289. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  290. data/spec/unit/resource/user_ulimit_spec.rb +1 -14
  291. data/spec/unit/resource/windows_task_spec.rb +1 -1
  292. data/spec/unit/resource_spec.rb +2 -7
  293. data/spec/unit/user_spec.rb +1 -1
  294. data/spec/unit/user_v1_spec.rb +6 -4
  295. data/tasks/rspec.rb +15 -7
  296. metadata +19 -382
  297. data/bin/knife +0 -24
  298. data/lib/chef/application/knife.rb +0 -234
  299. data/lib/chef/application/windows_service.rb +0 -338
  300. data/lib/chef/application/windows_service_manager.rb +0 -205
  301. data/lib/chef/chef_fs/knife.rb +0 -160
  302. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  303. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  304. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  305. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  306. data/lib/chef/knife/acl_add.rb +0 -57
  307. data/lib/chef/knife/acl_base.rb +0 -183
  308. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  309. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  310. data/lib/chef/knife/acl_remove.rb +0 -62
  311. data/lib/chef/knife/acl_show.rb +0 -56
  312. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  313. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  314. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  315. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  316. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  317. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  318. data/lib/chef/knife/bootstrap.rb +0 -1192
  319. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  320. data/lib/chef/knife/client_create.rb +0 -101
  321. data/lib/chef/knife/client_delete.rb +0 -62
  322. data/lib/chef/knife/client_edit.rb +0 -52
  323. data/lib/chef/knife/client_key_create.rb +0 -73
  324. data/lib/chef/knife/client_key_delete.rb +0 -80
  325. data/lib/chef/knife/client_key_edit.rb +0 -83
  326. data/lib/chef/knife/client_key_list.rb +0 -73
  327. data/lib/chef/knife/client_key_show.rb +0 -80
  328. data/lib/chef/knife/client_list.rb +0 -41
  329. data/lib/chef/knife/client_reregister.rb +0 -58
  330. data/lib/chef/knife/client_show.rb +0 -48
  331. data/lib/chef/knife/config_get.rb +0 -39
  332. data/lib/chef/knife/config_get_profile.rb +0 -37
  333. data/lib/chef/knife/config_list.rb +0 -139
  334. data/lib/chef/knife/config_list_profiles.rb +0 -37
  335. data/lib/chef/knife/config_show.rb +0 -127
  336. data/lib/chef/knife/config_use.rb +0 -61
  337. data/lib/chef/knife/config_use_profile.rb +0 -47
  338. data/lib/chef/knife/configure.rb +0 -150
  339. data/lib/chef/knife/configure_client.rb +0 -48
  340. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  341. data/lib/chef/knife/cookbook_delete.rb +0 -151
  342. data/lib/chef/knife/cookbook_download.rb +0 -142
  343. data/lib/chef/knife/cookbook_list.rb +0 -47
  344. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  345. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  346. data/lib/chef/knife/cookbook_show.rb +0 -98
  347. data/lib/chef/knife/cookbook_upload.rb +0 -292
  348. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  349. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  350. data/lib/chef/knife/core/formatting_options.rb +0 -49
  351. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  352. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  353. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  354. data/lib/chef/knife/core/node_editor.rb +0 -130
  355. data/lib/chef/knife/core/node_presenter.rb +0 -133
  356. data/lib/chef/knife/core/object_loader.rb +0 -115
  357. data/lib/chef/knife/core/status_presenter.rb +0 -147
  358. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  359. data/lib/chef/knife/core/text_formatter.rb +0 -85
  360. data/lib/chef/knife/core/ui.rb +0 -338
  361. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  362. data/lib/chef/knife/data_bag_create.rb +0 -81
  363. data/lib/chef/knife/data_bag_delete.rb +0 -49
  364. data/lib/chef/knife/data_bag_edit.rb +0 -74
  365. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  366. data/lib/chef/knife/data_bag_list.rb +0 -42
  367. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  368. data/lib/chef/knife/data_bag_show.rb +0 -69
  369. data/lib/chef/knife/delete.rb +0 -125
  370. data/lib/chef/knife/deps.rb +0 -156
  371. data/lib/chef/knife/diff.rb +0 -83
  372. data/lib/chef/knife/download.rb +0 -84
  373. data/lib/chef/knife/edit.rb +0 -88
  374. data/lib/chef/knife/environment_compare.rb +0 -128
  375. data/lib/chef/knife/environment_create.rb +0 -52
  376. data/lib/chef/knife/environment_delete.rb +0 -44
  377. data/lib/chef/knife/environment_edit.rb +0 -44
  378. data/lib/chef/knife/environment_from_file.rb +0 -84
  379. data/lib/chef/knife/environment_list.rb +0 -41
  380. data/lib/chef/knife/environment_show.rb +0 -47
  381. data/lib/chef/knife/exec.rb +0 -99
  382. data/lib/chef/knife/group_add.rb +0 -55
  383. data/lib/chef/knife/group_create.rb +0 -49
  384. data/lib/chef/knife/group_destroy.rb +0 -53
  385. data/lib/chef/knife/group_list.rb +0 -43
  386. data/lib/chef/knife/group_remove.rb +0 -56
  387. data/lib/chef/knife/group_show.rb +0 -49
  388. data/lib/chef/knife/key_create.rb +0 -112
  389. data/lib/chef/knife/key_create_base.rb +0 -50
  390. data/lib/chef/knife/key_delete.rb +0 -55
  391. data/lib/chef/knife/key_edit.rb +0 -118
  392. data/lib/chef/knife/key_edit_base.rb +0 -55
  393. data/lib/chef/knife/key_list.rb +0 -90
  394. data/lib/chef/knife/key_list_base.rb +0 -45
  395. data/lib/chef/knife/key_show.rb +0 -53
  396. data/lib/chef/knife/list.rb +0 -177
  397. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  398. data/lib/chef/knife/node_create.rb +0 -47
  399. data/lib/chef/knife/node_delete.rb +0 -46
  400. data/lib/chef/knife/node_edit.rb +0 -70
  401. data/lib/chef/knife/node_environment_set.rb +0 -53
  402. data/lib/chef/knife/node_from_file.rb +0 -51
  403. data/lib/chef/knife/node_list.rb +0 -44
  404. data/lib/chef/knife/node_policy_set.rb +0 -79
  405. data/lib/chef/knife/node_run_list_add.rb +0 -104
  406. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  407. data/lib/chef/knife/node_run_list_set.rb +0 -66
  408. data/lib/chef/knife/node_show.rb +0 -63
  409. data/lib/chef/knife/null.rb +0 -12
  410. data/lib/chef/knife/raw.rb +0 -123
  411. data/lib/chef/knife/recipe_list.rb +0 -32
  412. data/lib/chef/knife/rehash.rb +0 -50
  413. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  414. data/lib/chef/knife/role_create.rb +0 -53
  415. data/lib/chef/knife/role_delete.rb +0 -46
  416. data/lib/chef/knife/role_edit.rb +0 -45
  417. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  418. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  419. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  420. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  421. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  422. data/lib/chef/knife/role_from_file.rb +0 -51
  423. data/lib/chef/knife/role_list.rb +0 -42
  424. data/lib/chef/knife/role_run_list_add.rb +0 -87
  425. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  426. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  427. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  428. data/lib/chef/knife/role_run_list_set.rb +0 -69
  429. data/lib/chef/knife/role_show.rb +0 -48
  430. data/lib/chef/knife/search.rb +0 -194
  431. data/lib/chef/knife/serve.rb +0 -65
  432. data/lib/chef/knife/show.rb +0 -72
  433. data/lib/chef/knife/ssh.rb +0 -645
  434. data/lib/chef/knife/ssl_check.rb +0 -284
  435. data/lib/chef/knife/ssl_fetch.rb +0 -161
  436. data/lib/chef/knife/status.rb +0 -95
  437. data/lib/chef/knife/supermarket_download.rb +0 -121
  438. data/lib/chef/knife/supermarket_install.rb +0 -192
  439. data/lib/chef/knife/supermarket_list.rb +0 -76
  440. data/lib/chef/knife/supermarket_search.rb +0 -53
  441. data/lib/chef/knife/supermarket_share.rb +0 -166
  442. data/lib/chef/knife/supermarket_show.rb +0 -66
  443. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  444. data/lib/chef/knife/tag_create.rb +0 -52
  445. data/lib/chef/knife/tag_delete.rb +0 -60
  446. data/lib/chef/knife/tag_list.rb +0 -47
  447. data/lib/chef/knife/upload.rb +0 -86
  448. data/lib/chef/knife/user_create.rb +0 -107
  449. data/lib/chef/knife/user_delete.rb +0 -44
  450. data/lib/chef/knife/user_dissociate.rb +0 -42
  451. data/lib/chef/knife/user_edit.rb +0 -52
  452. data/lib/chef/knife/user_invite_add.rb +0 -43
  453. data/lib/chef/knife/user_invite_list.rb +0 -34
  454. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  455. data/lib/chef/knife/user_key_create.rb +0 -73
  456. data/lib/chef/knife/user_key_delete.rb +0 -80
  457. data/lib/chef/knife/user_key_edit.rb +0 -83
  458. data/lib/chef/knife/user_key_list.rb +0 -73
  459. data/lib/chef/knife/user_key_show.rb +0 -80
  460. data/lib/chef/knife/user_list.rb +0 -42
  461. data/lib/chef/knife/user_reregister.rb +0 -59
  462. data/lib/chef/knife/user_show.rb +0 -48
  463. data/lib/chef/knife/xargs.rb +0 -282
  464. data/lib/chef/knife/yaml_convert.rb +0 -91
  465. data/lib/chef/knife.rb +0 -665
  466. data/lib/chef/resource/user/dscl_user.rb +0 -35
  467. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  468. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  469. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  470. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  471. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  472. data/spec/functional/knife/configure_spec.rb +0 -33
  473. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  474. data/spec/functional/knife/exec_spec.rb +0 -55
  475. data/spec/functional/knife/rehash_spec.rb +0 -39
  476. data/spec/functional/knife/smoke_test.rb +0 -42
  477. data/spec/functional/knife/ssh_spec.rb +0 -352
  478. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  479. data/spec/functional/resource/windows_service_spec.rb +0 -105
  480. data/spec/functional/win32/service_manager_spec.rb +0 -220
  481. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  482. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  483. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  484. data/spec/integration/knife/chefignore_spec.rb +0 -301
  485. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  486. data/spec/integration/knife/client_create_spec.rb +0 -70
  487. data/spec/integration/knife/client_delete_spec.rb +0 -64
  488. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  489. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  490. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  491. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  492. data/spec/integration/knife/client_list_spec.rb +0 -49
  493. data/spec/integration/knife/client_show_spec.rb +0 -37
  494. data/spec/integration/knife/common_options_spec.rb +0 -174
  495. data/spec/integration/knife/config_list_spec.rb +0 -220
  496. data/spec/integration/knife/config_show_spec.rb +0 -192
  497. data/spec/integration/knife/config_use_spec.rb +0 -198
  498. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  499. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  500. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  501. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  502. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  503. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  504. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  505. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  506. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  507. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  508. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  509. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  510. data/spec/integration/knife/delete_spec.rb +0 -1018
  511. data/spec/integration/knife/deps_spec.rb +0 -703
  512. data/spec/integration/knife/diff_spec.rb +0 -605
  513. data/spec/integration/knife/download_spec.rb +0 -1336
  514. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  515. data/spec/integration/knife/environment_create_spec.rb +0 -41
  516. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  517. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  518. data/spec/integration/knife/environment_list_spec.rb +0 -42
  519. data/spec/integration/knife/environment_show_spec.rb +0 -77
  520. data/spec/integration/knife/list_spec.rb +0 -1060
  521. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  522. data/spec/integration/knife/node_create_spec.rb +0 -47
  523. data/spec/integration/knife/node_delete_spec.rb +0 -48
  524. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  525. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  526. data/spec/integration/knife/node_list_spec.rb +0 -45
  527. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  528. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  529. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  530. data/spec/integration/knife/node_show_spec.rb +0 -36
  531. data/spec/integration/knife/raw_spec.rb +0 -297
  532. data/spec/integration/knife/redirection_spec.rb +0 -64
  533. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  534. data/spec/integration/knife/role_create_spec.rb +0 -41
  535. data/spec/integration/knife/role_delete_spec.rb +0 -48
  536. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  537. data/spec/integration/knife/role_list_spec.rb +0 -45
  538. data/spec/integration/knife/role_show_spec.rb +0 -51
  539. data/spec/integration/knife/search_node_spec.rb +0 -40
  540. data/spec/integration/knife/serve_spec.rb +0 -92
  541. data/spec/integration/knife/show_spec.rb +0 -197
  542. data/spec/integration/knife/upload_spec.rb +0 -1616
  543. data/spec/support/shared/functional/knife.rb +0 -37
  544. data/spec/support/shared/functional/win32_service.rb +0 -57
  545. data/spec/support/shared/integration/knife_support.rb +0 -192
  546. data/spec/support/shared/unit/knife_shared.rb +0 -39
  547. data/spec/unit/application/knife_spec.rb +0 -241
  548. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  549. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  550. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  551. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  552. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  553. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  554. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  555. data/spec/unit/knife/client_create_spec.rb +0 -169
  556. data/spec/unit/knife/client_delete_spec.rb +0 -99
  557. data/spec/unit/knife/client_edit_spec.rb +0 -53
  558. data/spec/unit/knife/client_list_spec.rb +0 -34
  559. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  560. data/spec/unit/knife/client_show_spec.rb +0 -52
  561. data/spec/unit/knife/configure_client_spec.rb +0 -81
  562. data/spec/unit/knife/configure_spec.rb +0 -190
  563. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  564. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  565. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  566. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  567. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  568. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  569. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  570. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  571. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  572. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  573. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  574. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  575. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  576. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  577. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  578. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  579. data/spec/unit/knife/core/ui_spec.rb +0 -656
  580. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  581. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  582. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  583. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  584. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  585. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  586. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  587. data/spec/unit/knife/environment_create_spec.rb +0 -91
  588. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  589. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  590. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  591. data/spec/unit/knife/environment_list_spec.rb +0 -54
  592. data/spec/unit/knife/environment_show_spec.rb +0 -52
  593. data/spec/unit/knife/key_create_spec.rb +0 -223
  594. data/spec/unit/knife/key_delete_spec.rb +0 -133
  595. data/spec/unit/knife/key_edit_spec.rb +0 -264
  596. data/spec/unit/knife/key_helper.rb +0 -74
  597. data/spec/unit/knife/key_list_spec.rb +0 -216
  598. data/spec/unit/knife/key_show_spec.rb +0 -126
  599. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  600. data/spec/unit/knife/node_delete_spec.rb +0 -77
  601. data/spec/unit/knife/node_edit_spec.rb +0 -116
  602. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  603. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  604. data/spec/unit/knife/node_list_spec.rb +0 -62
  605. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  606. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  607. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  608. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  609. data/spec/unit/knife/node_show_spec.rb +0 -65
  610. data/spec/unit/knife/raw_spec.rb +0 -43
  611. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  612. data/spec/unit/knife/role_create_spec.rb +0 -80
  613. data/spec/unit/knife/role_delete_spec.rb +0 -67
  614. data/spec/unit/knife/role_edit_spec.rb +0 -77
  615. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  616. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  617. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  618. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  619. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  620. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  621. data/spec/unit/knife/role_list_spec.rb +0 -54
  622. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  623. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  624. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  625. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  626. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  627. data/spec/unit/knife/role_show_spec.rb +0 -59
  628. data/spec/unit/knife/ssh_spec.rb +0 -403
  629. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  630. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  631. data/spec/unit/knife/status_spec.rb +0 -112
  632. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  633. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  634. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  635. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  636. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  637. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  638. data/spec/unit/knife/tag_create_spec.rb +0 -23
  639. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  640. data/spec/unit/knife/tag_list_spec.rb +0 -23
  641. data/spec/unit/knife/user_create_spec.rb +0 -184
  642. data/spec/unit/knife/user_delete_spec.rb +0 -46
  643. data/spec/unit/knife/user_edit_spec.rb +0 -48
  644. data/spec/unit/knife/user_list_spec.rb +0 -36
  645. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  646. data/spec/unit/knife/user_show_spec.rb +0 -46
  647. data/spec/unit/knife_spec.rb +0 -634
  648. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  649. data/spec/unit/windows_service_spec.rb +0 -118
@@ -158,8 +158,10 @@ class Chef
158
158
  }.freeze
159
159
 
160
160
  ENUM_METHODS.each do |delegated_method|
161
- define_method(delegated_method) do |*args, &block|
162
- merged_attributes.send(delegated_method, *args, &block)
161
+ if Hash.public_method_defined?(delegated_method)
162
+ define_method(delegated_method) do |*args, &block|
163
+ merged_attributes.send(delegated_method, *args, &block)
164
+ end
163
165
  end
164
166
  end
165
167
 
@@ -450,34 +452,17 @@ class Chef
450
452
  # method-style access to attributes (has to come after the prepended ImmutablizeHash)
451
453
 
452
454
  def read(*path)
453
- if path[0].nil?
454
- Chef::Log.warn "Calling node.read() without any path argument is very slow, probably a bug, and should be avoided"
455
- merged_attributes.read(*path) # re-merges everything, slow edge case
456
- else
457
- self[path[0]] unless path[0].nil? # force deep_merge_cache key construction if necessary
458
- deep_merge_cache.read(*path)
459
- end
455
+ merged_attributes.read(*path)
460
456
  end
461
457
 
462
458
  alias :dig :read
463
459
 
464
460
  def read!(*path)
465
- if path[0].nil?
466
- Chef::Log.warn "Calling node.read!() without any path argument is very slow, probably a bug, and should be avoided"
467
- merged_attributes.read!(*path) # re-merges everything, slow edge case
468
- else
469
- self[path[0]] unless path[0].nil? # force deep_merge_cache key construction if necessary
470
- deep_merge_cache.read!(*path)
471
- end
461
+ merged_attributes.read!(*path)
472
462
  end
473
463
 
474
464
  def exist?(*path)
475
- if path[0].nil?
476
- true
477
- else
478
- self[path[0]] unless path[0].nil? # force deep_merge_cache key construction if necessary
479
- deep_merge_cache.exist?(*path)
480
- end
465
+ merged_attributes.exist?(*path)
481
466
  end
482
467
 
483
468
  def write(level, *args, &block)
@@ -613,7 +598,7 @@ class Chef
613
598
  merge_with.each do |key, merge_with_value|
614
599
  value =
615
600
  if merge_onto.key?(key)
616
- deep_merge!(safe_dup(merge_onto[key]), merge_with_value)
601
+ deep_merge!(safe_dup(merge_onto.internal_get(key)), merge_with_value)
617
602
  else
618
603
  merge_with_value
619
604
  end
@@ -649,7 +634,7 @@ class Chef
649
634
  merge_with.each do |key, merge_with_value|
650
635
  value =
651
636
  if merge_onto.key?(key)
652
- hash_only_merge!(safe_dup(merge_onto[key]), merge_with_value)
637
+ hash_only_merge!(safe_dup(merge_onto.internal_get(key)), merge_with_value)
653
638
  else
654
639
  merge_with_value
655
640
  end
@@ -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
@@ -28,7 +30,7 @@ class Chef
28
30
  @merged_attributes = nil
29
31
  @combined_override = nil
30
32
  @combined_default = nil
31
- @deep_merge_cache = Chef::Node::ImmutableMash.new
33
+ @deep_merge_cache = {}
32
34
  end
33
35
 
34
36
  # Invalidate a key in the deep_merge_cache. If called with nil, or no arg, this will invalidate
@@ -37,22 +39,24 @@ class Chef
37
39
  # must invalidate the entire cache and re-deep-merge the entire node object.
38
40
  def reset_cache(path = nil)
39
41
  if path.nil?
40
- deep_merge_cache.regular_clear
42
+ deep_merge_cache.clear
41
43
  else
42
- deep_merge_cache.regular_delete(path.to_s)
44
+ deep_merge_cache.delete(path.to_s)
43
45
  end
44
46
  end
45
47
 
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.internal_set(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