chef 12.12.15-universal-mingw32 → 12.13.30-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 (412) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -0
  3. data/LICENSE +201 -201
  4. data/VERSION +1 -1
  5. data/acceptance/.gitignore +2 -0
  6. data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +1 -12
  7. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +29 -12
  8. data/acceptance/Gemfile +6 -3
  9. data/acceptance/Gemfile.lock +109 -67
  10. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +2 -2
  11. data/acceptance/trivial/.kitchen.yml +1 -1
  12. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
  13. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
  14. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
  15. data/acceptance/windows-service/test/integration/chef-windows-service/inspec/chef_windows_service_spec.rb +4 -4
  16. data/bin/chef-apply +0 -0
  17. data/bin/chef-client +0 -0
  18. data/bin/chef-service-manager +0 -0
  19. data/bin/chef-shell +0 -0
  20. data/bin/chef-solo +0 -0
  21. data/bin/chef-windows-service +0 -0
  22. data/bin/knife +0 -0
  23. data/chef.gemspec +4 -3
  24. data/distro/common/html/_sources/ctl_chef_client.txt +35 -35
  25. data/distro/common/html/_sources/ctl_chef_server.txt +341 -341
  26. data/distro/common/html/_sources/ctl_chef_shell.txt +15 -15
  27. data/distro/common/html/_sources/ctl_chef_solo.txt +25 -25
  28. data/distro/common/html/_sources/index.txt +135 -135
  29. data/distro/common/html/_sources/knife.txt +74 -74
  30. data/distro/common/html/_sources/knife_bootstrap.txt +56 -56
  31. data/distro/common/html/_sources/knife_client.txt +150 -150
  32. data/distro/common/html/_sources/knife_common_options.txt +6 -6
  33. data/distro/common/html/_sources/knife_configure.txt +29 -29
  34. data/distro/common/html/_sources/knife_cookbook.txt +236 -236
  35. data/distro/common/html/_sources/knife_cookbook_site.txt +157 -157
  36. data/distro/common/html/_sources/knife_data_bag.txt +159 -159
  37. data/distro/common/html/_sources/knife_delete.txt +26 -26
  38. data/distro/common/html/_sources/knife_deps.txt +61 -61
  39. data/distro/common/html/_sources/knife_diff.txt +34 -34
  40. data/distro/common/html/_sources/knife_download.txt +44 -44
  41. data/distro/common/html/_sources/knife_edit.txt +26 -26
  42. data/distro/common/html/_sources/knife_environment.txt +158 -158
  43. data/distro/common/html/_sources/knife_exec.txt +47 -47
  44. data/distro/common/html/_sources/knife_index_rebuild.txt +20 -20
  45. data/distro/common/html/_sources/knife_list.txt +33 -33
  46. data/distro/common/html/_sources/knife_node.txt +250 -250
  47. data/distro/common/html/_sources/knife_raw.txt +35 -35
  48. data/distro/common/html/_sources/knife_recipe_list.txt +23 -23
  49. data/distro/common/html/_sources/knife_role.txt +157 -157
  50. data/distro/common/html/_sources/knife_search.txt +53 -53
  51. data/distro/common/html/_sources/knife_serve.txt +18 -18
  52. data/distro/common/html/_sources/knife_show.txt +26 -26
  53. data/distro/common/html/_sources/knife_ssh.txt +43 -43
  54. data/distro/common/html/_sources/knife_ssl_check.txt +41 -41
  55. data/distro/common/html/_sources/knife_ssl_fetch.txt +41 -41
  56. data/distro/common/html/_sources/knife_status.txt +37 -37
  57. data/distro/common/html/_sources/knife_tag.txt +69 -69
  58. data/distro/common/html/_sources/knife_upload.txt +49 -49
  59. data/distro/common/html/_sources/knife_user.txt +127 -127
  60. data/distro/common/html/_sources/knife_using.txt +43 -43
  61. data/distro/common/html/_sources/knife_xargs.txt +30 -30
  62. data/distro/common/html/_static/guide.css +504 -504
  63. data/distro/common/html/_static/pygments.css +61 -61
  64. data/distro/common/html/_static/underscore.js +31 -31
  65. data/distro/common/html/ctl_chef_client.html +269 -269
  66. data/distro/common/html/ctl_chef_server.html +727 -727
  67. data/distro/common/html/ctl_chef_shell.html +162 -162
  68. data/distro/common/html/ctl_chef_solo.html +193 -193
  69. data/distro/common/html/index.html +201 -201
  70. data/distro/common/html/knife.html +169 -169
  71. data/distro/common/html/knife_bootstrap.html +284 -284
  72. data/distro/common/html/knife_client.html +284 -284
  73. data/distro/common/html/knife_common_options.html +95 -95
  74. data/distro/common/html/knife_configure.html +104 -104
  75. data/distro/common/html/knife_cookbook.html +486 -486
  76. data/distro/common/html/knife_data_bag.html +373 -373
  77. data/distro/common/html/knife_delete.html +92 -92
  78. data/distro/common/html/knife_deps.html +142 -142
  79. data/distro/common/html/knife_diff.html +122 -122
  80. data/distro/common/html/knife_download.html +144 -144
  81. data/distro/common/html/knife_edit.html +88 -88
  82. data/distro/common/html/knife_environment.html +325 -325
  83. data/distro/common/html/knife_exec.html +219 -219
  84. data/distro/common/html/knife_index_rebuild.html +82 -82
  85. data/distro/common/html/knife_list.html +113 -113
  86. data/distro/common/html/knife_node.html +457 -457
  87. data/distro/common/html/knife_raw.html +109 -109
  88. data/distro/common/html/knife_recipe_list.html +90 -90
  89. data/distro/common/html/knife_role.html +294 -294
  90. data/distro/common/html/knife_search.html +202 -202
  91. data/distro/common/html/knife_serve.html +78 -78
  92. data/distro/common/html/knife_show.html +103 -103
  93. data/distro/common/html/knife_ssh.html +176 -176
  94. data/distro/common/html/knife_ssl_check.html +150 -150
  95. data/distro/common/html/knife_ssl_fetch.html +150 -150
  96. data/distro/common/html/knife_status.html +143 -143
  97. data/distro/common/html/knife_tag.html +137 -137
  98. data/distro/common/html/knife_upload.html +152 -152
  99. data/distro/common/html/knife_user.html +241 -241
  100. data/distro/common/html/knife_using.html +209 -209
  101. data/distro/common/html/knife_xargs.html +121 -121
  102. data/distro/common/html/search.html +81 -81
  103. data/distro/common/man/man1/README.md +58 -58
  104. data/distro/common/man/man1/chef-shell.1 +194 -194
  105. data/distro/common/man/man1/knife-bootstrap.1 +215 -215
  106. data/distro/common/man/man1/knife-client.1 +443 -443
  107. data/distro/common/man/man1/knife-configure.1 +161 -161
  108. data/distro/common/man/man1/knife-cookbook.1 +770 -770
  109. data/distro/common/man/man1/knife-data-bag.1 +617 -617
  110. data/distro/common/man/man1/knife-delete.1 +127 -127
  111. data/distro/common/man/man1/knife-deps.1 +246 -246
  112. data/distro/common/man/man1/knife-diff.1 +226 -226
  113. data/distro/common/man/man1/knife-download.1 +258 -258
  114. data/distro/common/man/man1/knife-edit.1 +121 -121
  115. data/distro/common/man/man1/knife-environment.1 +508 -508
  116. data/distro/common/man/man1/knife-exec.1 +362 -362
  117. data/distro/common/man/man1/knife-index-rebuild.1 +63 -63
  118. data/distro/common/man/man1/knife-list.1 +174 -174
  119. data/distro/common/man/man1/knife-node.1 +716 -716
  120. data/distro/common/man/man1/knife-raw.1 +172 -172
  121. data/distro/common/man/man1/knife-recipe-list.1 +85 -85
  122. data/distro/common/man/man1/knife-role.1 +426 -426
  123. data/distro/common/man/man1/knife-search.1 +359 -359
  124. data/distro/common/man/man1/knife-serve.1 +109 -109
  125. data/distro/common/man/man1/knife-show.1 +160 -160
  126. data/distro/common/man/man1/knife-ssh.1 +284 -284
  127. data/distro/common/man/man1/knife-ssl-check.1 +207 -207
  128. data/distro/common/man/man1/knife-ssl-fetch.1 +207 -207
  129. data/distro/common/man/man1/knife-status.1 +234 -234
  130. data/distro/common/man/man1/knife-tag.1 +189 -189
  131. data/distro/common/man/man1/knife-upload.1 +280 -280
  132. data/distro/common/man/man1/knife-user.1 +356 -356
  133. data/distro/common/man/man1/knife-xargs.1 +189 -189
  134. data/distro/common/man/man1/knife.1 +332 -332
  135. data/distro/common/man/man8/chef-apply.8 +86 -86
  136. data/distro/common/man/man8/chef-client.8 +398 -398
  137. data/distro/common/man/man8/chef-solo.8 +260 -260
  138. data/distro/common/markdown/README +3 -3
  139. data/lib/chef/application.rb +23 -0
  140. data/lib/chef/application/client.rb +10 -2
  141. data/lib/chef/application/knife.rb +8 -0
  142. data/lib/chef/application/solo.rb +10 -2
  143. data/lib/chef/audit/audit_reporter.rb +5 -1
  144. data/lib/chef/audit/runner.rb +1 -1
  145. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -0
  146. data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +4 -2
  147. data/lib/chef/chef_fs/file_system/repository/base_file.rb +3 -0
  148. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -0
  149. data/lib/chef/chef_fs/file_system/repository/directory.rb +12 -1
  150. data/lib/chef/chef_fs/file_system_cache.rb +80 -0
  151. data/lib/chef/data_collector.rb +18 -1
  152. data/lib/chef/data_collector/resource_report.rb +1 -0
  153. data/lib/chef/decorator/unchain.rb +16 -0
  154. data/lib/chef/dsl/cheffish.rb +1 -0
  155. data/lib/chef/dsl/declare_resource.rb +9 -1
  156. data/lib/chef/file_access_control/windows.rb +3 -3
  157. data/lib/chef/knife/bootstrap.rb +9 -0
  158. data/lib/chef/knife/cookbook_site_install.rb +2 -11
  159. data/lib/chef/knife/cookbook_site_share.rb +7 -13
  160. data/lib/chef/knife/core/bootstrap_context.rb +10 -0
  161. data/lib/chef/knife/help_topics.rb +4 -4
  162. data/lib/chef/nil_argument.rb +3 -3
  163. data/lib/chef/node/attribute.rb +2 -2
  164. data/lib/chef/provider/apt_repository.rb +1 -1
  165. data/lib/chef/provider/apt_update.rb +12 -3
  166. data/lib/chef/provider/cron.rb +1 -1
  167. data/lib/chef/provider/package/aix.rb +5 -1
  168. data/lib/chef/provider/package/zypper.rb +7 -7
  169. data/lib/chef/provider/resource_update.rb +52 -52
  170. data/lib/chef/reserved_names.rb +9 -9
  171. data/lib/chef/resource.rb +13 -1
  172. data/lib/chef/resource/freebsd_package.rb +1 -1
  173. data/lib/chef/run_context.rb +15 -42
  174. data/lib/chef/sandbox.rb +20 -20
  175. data/lib/chef/version.rb +1 -1
  176. data/lib/chef/version_class.rb +7 -2
  177. data/lib/chef/win32/file.rb +4 -4
  178. data/lib/chef/win32/system.rb +0 -0
  179. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
  180. data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
  181. data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
  182. data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
  183. data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
  184. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
  185. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
  186. data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
  187. data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
  188. data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
  189. data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
  190. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
  191. data/spec/data/apt/chef-integration-test2-1.0/debian/rules +0 -0
  192. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
  193. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
  194. data/spec/data/apt/var/www/apt/conf/distributions +7 -7
  195. data/spec/data/apt/var/www/apt/conf/incoming +4 -4
  196. data/spec/data/apt/var/www/apt/conf/pulls +3 -3
  197. data/spec/data/apt/var/www/apt/db/version +4 -4
  198. data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
  199. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
  200. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
  201. data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
  202. data/spec/data/bootstrap/no_proxy.erb +2 -2
  203. data/spec/data/bootstrap/secret.erb +9 -9
  204. data/spec/data/bootstrap/test-hints.erb +12 -12
  205. data/spec/data/bootstrap/test.erb +1 -1
  206. data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
  207. data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
  208. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
  209. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
  210. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
  211. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
  212. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
  213. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
  214. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
  215. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
  216. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
  217. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
  218. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
  219. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
  220. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
  221. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
  222. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
  223. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
  224. data/spec/data/config.rb +6 -6
  225. data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
  226. data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
  227. data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
  228. data/spec/data/cookbooks/apache2/metadata.rb +2 -2
  229. data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
  230. data/spec/data/cookbooks/borken/metadata.rb +2 -2
  231. data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
  232. data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
  233. data/spec/data/cookbooks/chefignore +8 -8
  234. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
  235. data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
  236. data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
  237. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
  238. data/spec/data/cookbooks/java/files/default/java.response +1 -1
  239. data/spec/data/cookbooks/java/metadata.rb +2 -2
  240. data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
  241. data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
  242. data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
  243. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  244. data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
  245. data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
  246. data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
  247. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
  248. data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
  249. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
  250. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
  251. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
  252. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
  253. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
  254. data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
  255. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
  256. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
  257. data/spec/data/cookbooks/openldap/metadata.rb +8 -8
  258. data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
  259. data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
  260. data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
  261. data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
  262. data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
  263. data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
  264. data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
  265. data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
  266. data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
  267. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
  268. data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
  269. data/spec/data/cookbooks/preseed/metadata.rb +2 -2
  270. data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
  271. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
  272. data/spec/data/definitions/test.rb +4 -4
  273. data/spec/data/environment-config.rb +4 -4
  274. data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
  275. data/spec/data/fileedit/hosts +4 -4
  276. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
  277. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
  278. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
  279. data/spec/data/kitchen/chefignore +6 -6
  280. data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
  281. data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
  282. data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
  283. data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
  284. data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
  285. data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
  286. data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
  287. data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
  288. data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
  289. data/spec/data/knife_subcommand/test_yourself.rb +21 -21
  290. data/spec/data/lwrp/providers/inline_compiler.rb +26 -26
  291. data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
  292. data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
  293. data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
  294. data/spec/data/lwrp/resources/foo.rb +4 -4
  295. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +1 -1
  296. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
  297. data/spec/data/mac_users/10.7-8.plist.xml +559 -559
  298. data/spec/data/mac_users/10.7-8.shadow.xml +11 -11
  299. data/spec/data/mac_users/10.7.plist.xml +559 -559
  300. data/spec/data/mac_users/10.7.shadow.xml +11 -11
  301. data/spec/data/mac_users/10.8.plist.xml +559 -559
  302. data/spec/data/mac_users/10.8.shadow.xml +21 -21
  303. data/spec/data/mac_users/10.9.plist.xml +560 -560
  304. data/spec/data/mac_users/10.9.shadow.xml +21 -21
  305. data/spec/data/metadata/quick_start/metadata.rb +19 -19
  306. data/spec/data/nodes/default.rb +15 -15
  307. data/spec/data/nodes/test.example.com.rb +17 -17
  308. data/spec/data/nodes/test.rb +15 -15
  309. data/spec/data/null_config.rb +1 -1
  310. data/spec/data/object_loader/environments/test.json +7 -7
  311. data/spec/data/object_loader/environments/test.rb +2 -2
  312. data/spec/data/object_loader/environments/test_json_class.json +8 -8
  313. data/spec/data/object_loader/nodes/test.json +7 -7
  314. data/spec/data/object_loader/nodes/test.rb +2 -2
  315. data/spec/data/object_loader/nodes/test_json_class.json +8 -8
  316. data/spec/data/object_loader/roles/test.json +7 -7
  317. data/spec/data/object_loader/roles/test.rb +2 -2
  318. data/spec/data/object_loader/roles/test_json_class.json +8 -8
  319. data/spec/data/partial_one.erb +1 -1
  320. data/spec/data/recipes/test.rb +7 -7
  321. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
  322. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
  323. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
  324. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
  325. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -1
  326. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
  327. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
  328. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
  329. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
  330. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -1
  331. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
  332. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
  333. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
  334. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -1
  335. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
  336. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
  337. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
  338. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -1
  339. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
  340. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
  341. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -1
  342. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
  343. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
  344. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
  345. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
  346. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -1
  347. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
  348. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
  349. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
  350. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
  351. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -1
  352. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  353. data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
  354. data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
  355. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
  356. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
  357. data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
  358. data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
  359. data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
  360. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -1
  361. data/spec/data/run_context/nodes/run_context.rb +5 -5
  362. data/spec/data/search_queries_to_transform.txt +98 -98
  363. data/spec/data/shef-config.rb +10 -10
  364. data/spec/data/ssl/5e707473.0 +18 -18
  365. data/spec/data/ssl/chef-rspec.cert +27 -27
  366. data/spec/data/ssl/chef-rspec.key +27 -27
  367. data/spec/data/ssl/key.pem +15 -15
  368. data/spec/data/ssl/private_key.pem +27 -27
  369. data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
  370. data/spec/data/standalone_cookbook/chefignore +9 -9
  371. data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
  372. data/spec/data/trusted_certs/example.crt +22 -22
  373. data/spec/data/trusted_certs/intermediate.pem +27 -27
  374. data/spec/data/trusted_certs/root.pem +22 -22
  375. data/spec/functional/assets/chefinittest +34 -34
  376. data/spec/functional/assets/testchefsubsys +10 -10
  377. data/spec/functional/mixin/powershell_out_spec.rb +2 -2
  378. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +0 -0
  379. data/spec/functional/resource/aix_service_spec.rb +0 -0
  380. data/spec/functional/resource/aixinit_service_spec.rb +0 -0
  381. data/spec/functional/resource/cron_spec.rb +8 -1
  382. data/spec/functional/resource/env_spec.rb +0 -0
  383. data/spec/functional/resource/link_spec.rb +1 -6
  384. data/spec/functional/run_lock_spec.rb +17 -10
  385. data/spec/integration/knife/diff_spec.rb +2 -2
  386. data/spec/integration/knife/download_spec.rb +4 -4
  387. data/spec/integration/knife/raw_spec.rb +2 -0
  388. data/spec/integration/knife/upload_spec.rb +3 -3
  389. data/spec/rcov.opts +2 -2
  390. data/spec/spec_helper.rb +11 -1
  391. data/spec/support/shared/integration/knife_support.rb +4 -0
  392. data/spec/unit/application/client_spec.rb +35 -0
  393. data/spec/unit/application/solo_spec.rb +6 -6
  394. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -0
  395. data/spec/unit/data_collector_spec.rb +41 -1
  396. data/spec/unit/dsl/declare_resource_spec.rb +30 -0
  397. data/spec/unit/knife/cookbook_site_install_spec.rb +2 -0
  398. data/spec/unit/knife/cookbook_site_share_spec.rb +4 -4
  399. data/spec/unit/node_spec.rb +6 -0
  400. data/spec/unit/provider/cron_spec.rb +16 -16
  401. data/spec/unit/provider/package/aix_spec.rb +13 -0
  402. data/spec/unit/provider/package/zypper_spec.rb +18 -2
  403. data/spec/unit/resource/apt_repository_spec.rb +14 -2
  404. data/spec/unit/resource/apt_update_spec.rb +14 -2
  405. data/spec/unit/resource_builder_spec.rb +1 -1
  406. data/tasks/bin/bundle-platform +0 -0
  407. data/tasks/bin/bundle-platform.bat +0 -0
  408. data/tasks/bin/create-override-gemfile +0 -0
  409. data/tasks/bin/run_external_test +0 -0
  410. data/tasks/bundle.rb +2 -2
  411. metadata +29 -15
  412. data/acceptance/data-collector/Berksfile.lock +0 -6
@@ -1,3 +1,3 @@
1
- This directory contains markdown documentation that is used in other places.
2
- For example, markdown (.mkd) documents that are generated as man pages
3
- with ronn.
1
+ This directory contains markdown documentation that is used in other places.
2
+ For example, markdown (.mkd) documents that are generated as man pages
3
+ with ronn.
@@ -28,6 +28,7 @@ require "mixlib/cli"
28
28
  require "tmpdir"
29
29
  require "rbconfig"
30
30
  require "chef/application/exit_code"
31
+ require "yaml"
31
32
 
32
33
  class Chef
33
34
  class Application
@@ -108,7 +109,22 @@ class Chef
108
109
  config_content = config_fetcher.read_config
109
110
  apply_config(config_content, config[:config_file])
110
111
  end
112
+ extra_config_options = config.delete(:config_option)
111
113
  Chef::Config.merge!(config)
114
+ if extra_config_options
115
+ extra_parsed_options = extra_config_options.inject({}) do |memo, option|
116
+ # Sanity check value.
117
+ Chef::Application.fatal!("Unparsable config option #{option.inspect}") if option.empty? || !option.include?("=")
118
+ # Split including whitespace if someone does truly odd like
119
+ # --config-option "foo = bar"
120
+ key, value = option.split(/\s*=\s*/, 2)
121
+ # Call to_sym because Chef::Config expects only symbol keys. Also
122
+ # runs a simple parse on the string for some common types.
123
+ memo[key.to_sym] = YAML.safe_load(value)
124
+ memo
125
+ end
126
+ Chef::Config.merge!(extra_parsed_options)
127
+ end
112
128
  end
113
129
 
114
130
  def set_specific_recipes
@@ -332,6 +348,13 @@ class Chef
332
348
  class << self
333
349
  def debug_stacktrace(e)
334
350
  message = "#{e.class}: #{e}\n#{e.backtrace.join("\n")}"
351
+
352
+ cause = e.cause if e.respond_to?(:cause)
353
+ while cause != nil
354
+ message << "\n\n>>>> Caused by #{cause.class}: #{cause}\n#{cause.backtrace.join("\n")}"
355
+ cause = cause.respond_to?(:cause) ? cause.cause : nil
356
+ end
357
+
335
358
  chef_stacktrace_out = "Generated at #{Time.now}\n"
336
359
  chef_stacktrace_out += message
337
360
 
@@ -27,6 +27,7 @@ require "chef/handler/error_report"
27
27
  require "chef/workstation_config_loader"
28
28
  require "chef/mixin/shell_out"
29
29
  require "chef-config/mixin/dot_d"
30
+ require "mixlib/archive"
30
31
 
31
32
  class Chef::Application::Client < Chef::Application
32
33
  include Chef::Mixin::ShellOut
@@ -40,6 +41,14 @@ class Chef::Application::Client < Chef::Application
40
41
  :long => "--config CONFIG",
41
42
  :description => "The configuration file to use"
42
43
 
44
+ option :config_option,
45
+ :long => "--config-option OPTION=VALUE",
46
+ :description => "Override a single configuration option",
47
+ :proc => lambda { |option, existing|
48
+ (existing ||= []) << option
49
+ existing
50
+ }
51
+
43
52
  option :formatter,
44
53
  :short => "-F FORMATTER",
45
54
  :long => "--format FORMATTER",
@@ -334,8 +343,7 @@ class Chef::Application::Client < Chef::Application
334
343
  FileUtils.mkdir_p(Chef::Config.chef_repo_path)
335
344
  tarball_path = File.join(Chef::Config.chef_repo_path, "recipes.tgz")
336
345
  fetch_recipe_tarball(Chef::Config[:recipe_url], tarball_path)
337
- result = shell_out!("tar zxvf #{tarball_path} -C #{Chef::Config.chef_repo_path}")
338
- Chef::Log.debug "#{result.stdout}"
346
+ Mixlib::Archive.new(tarball_path).extract(Chef::Config.chef_repo_path, perms: false, ignore: /^\.$/)
339
347
  end
340
348
  end
341
349
 
@@ -33,6 +33,14 @@ class Chef::Application::Knife < Chef::Application
33
33
  :description => "The configuration file to use",
34
34
  :proc => lambda { |path| File.expand_path(path, Dir.pwd) }
35
35
 
36
+ option :config_option,
37
+ :long => "--config-option OPTION=VALUE",
38
+ :description => "Override a single configuration option",
39
+ :proc => lambda { |option, existing|
40
+ (existing ||= []) << option
41
+ existing
42
+ }
43
+
36
44
  verbosity_level = 0
37
45
  option :verbosity,
38
46
  :short => "-V",
@@ -29,6 +29,7 @@ require "fileutils"
29
29
  require "chef/mixin/shell_out"
30
30
  require "pathname"
31
31
  require "chef-config/mixin/dot_d"
32
+ require "mixlib/archive"
32
33
 
33
34
  class Chef::Application::Solo < Chef::Application
34
35
  include Chef::Mixin::ShellOut
@@ -40,6 +41,14 @@ class Chef::Application::Solo < Chef::Application
40
41
  :default => Chef::Config.platform_specific_path("/etc/chef/solo.rb"),
41
42
  :description => "The configuration file to use"
42
43
 
44
+ option :config_option,
45
+ :long => "--config-option OPTION=VALUE",
46
+ :description => "Override a single configuration option",
47
+ :proc => lambda { |option, existing|
48
+ (existing ||= []) << option
49
+ existing
50
+ }
51
+
43
52
  option :formatter,
44
53
  :short => "-F FORMATTER",
45
54
  :long => "--format FORMATTER",
@@ -273,8 +282,7 @@ class Chef::Application::Solo < Chef::Application
273
282
  FileUtils.mkdir_p(recipes_path)
274
283
  tarball_path = File.join(recipes_path, "recipes.tgz")
275
284
  fetch_recipe_tarball(Chef::Config[:recipe_url], tarball_path)
276
- result = shell_out!("tar zxvf #{tarball_path} -C #{recipes_path}")
277
- Chef::Log.debug "#{result.stdout}"
285
+ Mixlib::Archive.new(tarball_path).extract(Chef::Config.chef_repo_path, perms: false, ignore: /^\.$/)
278
286
  end
279
287
 
280
288
  # json_attribs shuld be fetched after recipe_url tarball is unpacked.
@@ -140,7 +140,11 @@ class Chef
140
140
  # Save the audit report to local disk
141
141
  error_file = "failed-audit-data.json"
142
142
  Chef::FileCache.store(error_file, Chef::JSONCompat.to_json_pretty(run_data), 0640)
143
- Chef::Log.error("Failed to post audit report to server. Saving report to #{Chef::FileCache.load(error_file, false)}")
143
+ if Chef::Config.chef_zero.enabled
144
+ Chef::Log.debug("Saving audit report to #{Chef::FileCache.load(error_file, false)}")
145
+ else
146
+ Chef::Log.error("Failed to post audit report to server. Saving report to #{Chef::FileCache.load(error_file, false)}")
147
+ end
144
148
  end
145
149
  else
146
150
  Chef::Log.error("Failed to post audit report to server (#{e})")
@@ -165,7 +165,7 @@ class Chef
165
165
  add_example_group_methods
166
166
  run_context.audits.each do |name, group|
167
167
  ctl_grp = RSpec::Core::ExampleGroup.__control_group__(*group.args, &group.block)
168
- RSpec.world.register(ctl_grp)
168
+ RSpec.world.record(ctl_grp)
169
169
  end
170
170
  end
171
171
 
@@ -458,6 +458,7 @@ class Chef
458
458
  # We want to delete just the ones that == POLICY
459
459
  next unless policy.name.rpartition("-")[0] == path[1]
460
460
  policy.delete(false)
461
+ FileSystemCache.instance.delete!(policy.file_path)
461
462
  found_policy = true
462
463
  end
463
464
  raise ChefZero::DataStore::DataNotFoundError.new(path) if !found_policy
@@ -28,14 +28,16 @@ class Chef
28
28
  module Repository
29
29
  class AclsDir < Repository::Directory
30
30
 
31
+ BARE_FILES = %w{ organization.json root }
32
+
31
33
  def can_have_child?(name, is_dir)
32
- is_dir ? Chef::ChefFS::FileSystem::ChefServer::AclsDir::ENTITY_TYPES.include?(name) : name == "organization.json"
34
+ is_dir ? Chef::ChefFS::FileSystem::ChefServer::AclsDir::ENTITY_TYPES.include?(name) : BARE_FILES.include?(name)
33
35
  end
34
36
 
35
37
  protected
36
38
 
37
39
  def make_child_entry(child_name)
38
- if child_name == "organization.json"
40
+ if BARE_FILES.include? child_name
39
41
  Acl.new(child_name, self)
40
42
  else
41
43
  AclsSubDir.new(child_name, self)
@@ -16,6 +16,8 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
+ require "chef/chef_fs/file_system_cache"
20
+
19
21
  class Chef
20
22
  module ChefFS
21
23
  module FileSystem
@@ -99,6 +101,7 @@ class Chef
99
101
  end
100
102
 
101
103
  def delete(_)
104
+ FileSystemCache.instance.delete!(file_path)
102
105
  File.delete(file_path)
103
106
  rescue Errno::ENOENT
104
107
  raise Chef::ChefFS::FileSystem::NotFoundError.new(self, $!)
@@ -120,6 +120,7 @@ class Chef
120
120
  end
121
121
 
122
122
  def delete(recurse)
123
+ FileSystemCache.instance.delete!(file_path)
123
124
  begin
124
125
  if dir?
125
126
  if !recurse
@@ -16,6 +16,8 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
+ require "chef/chef_fs/file_system_cache"
20
+
19
21
  class Chef
20
22
  module ChefFS
21
23
  module FileSystem
@@ -68,9 +70,11 @@ class Chef
68
70
  end
69
71
 
70
72
  def children
71
- dir_ls.sort.
73
+ return FileSystemCache.instance.children(file_path) if FileSystemCache.instance.exist?(file_path)
74
+ children = dir_ls.sort.
72
75
  map { |child_name| make_child_entry(child_name) }.
73
76
  select { |new_child| new_child.fs_entry_valid? && can_have_child?(new_child.name, new_child.dir?) }
77
+ FileSystemCache.instance.set_children(file_path, children)
74
78
  rescue Errno::ENOENT => e
75
79
  raise Chef::ChefFS::FileSystem::NotFoundError.new(self, e)
76
80
  end
@@ -80,6 +84,7 @@ class Chef
80
84
  if child.exists?
81
85
  raise Chef::ChefFS::FileSystem::AlreadyExistsError.new(:create_child, child)
82
86
  end
87
+ FileSystemCache.instance.delete!(child.file_path)
83
88
  if file_contents
84
89
  child.write(file_contents)
85
90
  else
@@ -118,6 +123,7 @@ class Chef
118
123
  raise Chef::ChefFS::FileSystem::AlreadyExistsError.new(:create_child, self)
119
124
  end
120
125
  begin
126
+ FileSystemCache.instance.delete!(file_path)
121
127
  Dir.mkdir(file_path)
122
128
  rescue Errno::EEXIST
123
129
  raise Chef::ChefFS::FileSystem::AlreadyExistsError.new(:create_child, self)
@@ -134,6 +140,7 @@ class Chef
134
140
  raise MustDeleteRecursivelyError.new(self, $!)
135
141
  end
136
142
  FileUtils.rm_r(file_path)
143
+ FileSystemCache.instance.delete!(file_path)
137
144
  else
138
145
  raise Chef::ChefFS::FileSystem::NotFoundError.new(self, $!)
139
146
  end
@@ -145,6 +152,10 @@ class Chef
145
152
 
146
153
  protected
147
154
 
155
+ def write(data)
156
+ raise FileSystemError.new(self, nil, "attempted to write to a directory entry")
157
+ end
158
+
148
159
  def make_child_entry(child_name)
149
160
  raise "Not Implemented"
150
161
  end
@@ -0,0 +1,80 @@
1
+ #
2
+ # Copyright:: Copyright 2016, Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "singleton"
19
+ require "chef/client"
20
+
21
+ class Chef
22
+ module ChefFS
23
+ class FileSystemCache
24
+ include Singleton
25
+
26
+ def initialize
27
+ @cache = {}
28
+
29
+ Chef::Client.when_run_starts do
30
+ FileSystemCache.instance.reset!
31
+ end
32
+ end
33
+
34
+ def reset!
35
+ @cache = {}
36
+ end
37
+
38
+ def exist?(path)
39
+ @cache.key?(path)
40
+ end
41
+
42
+ def children(path)
43
+ @cache[path]["children"]
44
+ end
45
+
46
+ def set_children(path, val)
47
+ @cache[path] ||= { "children" => [] }
48
+ @cache[path]["children"] = val
49
+ val
50
+ end
51
+
52
+ def delete!(path)
53
+ parent = _get_parent(path)
54
+ Chef::Log.debug("Deleting parent #{parent} and #{path} from FileSystemCache")
55
+ if @cache.key?(path)
56
+ @cache.delete(path)
57
+ end
58
+ if !parent.nil? && @cache.key?(parent)
59
+ @cache.delete(parent)
60
+ end
61
+ end
62
+
63
+ def fetch(path)
64
+ if @cache.key?(path)
65
+ @cache[path]
66
+ else
67
+ false
68
+ end
69
+ end
70
+
71
+ private
72
+
73
+ def _get_parent(path)
74
+ parts = ChefFS::PathUtils.split(path)
75
+ return nil if parts.nil? || parts.length < 2
76
+ ChefFS::PathUtils.join(*parts[0..-2])
77
+ end
78
+ end
79
+ end
80
+ end
@@ -57,6 +57,8 @@ class Chef
57
57
  :current_resource_report, :enabled
58
58
 
59
59
  def initialize
60
+ validate_data_collector_server_url!
61
+
60
62
  @all_resource_reports = []
61
63
  @current_resource_loaded = nil
62
64
  @error_descriptions = {}
@@ -236,7 +238,8 @@ class Chef
236
238
  yield
237
239
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET,
238
240
  Errno::ECONNREFUSED, EOFError, Net::HTTPBadResponse,
239
- Net::HTTPHeaderSyntaxError, Net::ProtocolError, OpenSSL::SSL::SSLError => e
241
+ Net::HTTPHeaderSyntaxError, Net::ProtocolError, OpenSSL::SSL::SSLError,
242
+ Errno::EHOSTDOWN => e
240
243
  disable_data_collector_reporter
241
244
  code = if e.respond_to?(:response) && e.response.code
242
245
  e.response.code.to_s
@@ -376,6 +379,20 @@ class Chef
376
379
  def nested_resource?(new_resource)
377
380
  @current_resource_report && @current_resource_report.new_resource != new_resource
378
381
  end
382
+
383
+ def validate_data_collector_server_url!
384
+ raise Chef::Exceptions::ConfigurationError,
385
+ "Chef::Config[:data_collector][:server_url] is empty. Please supply a valid URL." if data_collector_server_url.empty?
386
+
387
+ begin
388
+ uri = URI(data_collector_server_url)
389
+ rescue URI::InvalidURIError
390
+ raise Chef::Exceptions::ConfigurationError, "Chef::Config[:data_collector][:server_url] (#{data_collector_server_url}) is not a valid URI."
391
+ end
392
+
393
+ raise Chef::Exceptions::ConfigurationError,
394
+ "Chef::Config[:data_collector][:server_url] (#{data_collector_server_url}) is a URI with no host. Please supply a valid URL." if uri.host.nil?
395
+ end
379
396
  end
380
397
  end
381
398
  end
@@ -80,6 +80,7 @@ class Chef
80
80
  if new_resource.cookbook_name
81
81
  hash["cookbook_name"] = new_resource.cookbook_name
82
82
  hash["cookbook_version"] = new_resource.cookbook_version.version
83
+ hash["recipe_name"] = new_resource.recipe_name
83
84
  end
84
85
 
85
86
  hash["conditional"] = conditional.to_text if status == "skipped"
@@ -38,6 +38,22 @@ class Chef
38
38
  __path__.push(key)
39
39
  @delegate_sd_obj.public_send(__method__, *__path__, value)
40
40
  end
41
+
42
+ # unfortunately we have to support method_missing for node.set_unless.foo.bar = 'baz' notation
43
+ def method_missing(symbol, *args)
44
+ if symbol == :to_ary
45
+ merged_attributes.send(symbol, *args)
46
+ elsif args.empty?
47
+ Chef.log_deprecation %q{method access to node attributes (node.foo.bar) is deprecated and will be removed in Chef 13, please use bracket syntax (node["foo"]["bar"])}
48
+ self[symbol]
49
+ elsif symbol.to_s =~ /=$/
50
+ Chef.log_deprecation %q{method setting of node attributes (node.foo="bar") is deprecated and will be removed in Chef 13, please use bracket syntax (node["foo"]="bar")}
51
+ key_to_set = symbol.to_s[/^(.+)=$/, 1]
52
+ self[key_to_set] = (args.length == 1 ? args[0] : args)
53
+ else
54
+ raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'"
55
+ end
56
+ end
41
57
  end
42
58
  end
43
59
  end
@@ -27,6 +27,7 @@ class Chef
27
27
  chef_acl
28
28
  chef_client
29
29
  chef_container
30
+ chef_data_bag_item
30
31
  chef_data_bag
31
32
  chef_environment
32
33
  chef_group
@@ -71,7 +71,15 @@ class Chef
71
71
  # delete_resource!(:template, '/x/y.txy')
72
72
  #
73
73
  def delete_resource!(type, name, run_context: self.run_context)
74
- run_context.resource_collection.delete("#{type}[#{name}]")
74
+ run_context.resource_collection.delete("#{type}[#{name}]").tap do |resource|
75
+ # Purge any pending notifications too. This will not raise an exception
76
+ # if there are no notifications.
77
+ if resource
78
+ run_context.before_notification_collection.delete(resource.declared_key)
79
+ run_context.immediate_notification_collection.delete(resource.declared_key)
80
+ run_context.delayed_notification_collection.delete(resource.declared_key)
81
+ end
82
+ end
75
83
  end
76
84
 
77
85
  # Lookup a resource in the resource collection by name and delete it. Returns
@@ -128,7 +128,7 @@ class Chef
128
128
  end
129
129
 
130
130
  def should_update_dacl?
131
- return true unless ::File.exists?(file)
131
+ return true unless ::File.exists?(file) || ::File.symlink?(file)
132
132
  dacl = target_dacl
133
133
  existing_dacl = existing_descriptor.dacl
134
134
  inherits = target_inherits
@@ -161,7 +161,7 @@ class Chef
161
161
  end
162
162
 
163
163
  def should_update_group?
164
- return true unless ::File.exists?(file)
164
+ return true unless ::File.exists?(file) || ::File.symlink?(file)
165
165
  (group = target_group) && (group != existing_descriptor.group)
166
166
  end
167
167
 
@@ -180,7 +180,7 @@ class Chef
180
180
  end
181
181
 
182
182
  def should_update_owner?
183
- return true unless ::File.exists?(file)
183
+ return true unless ::File.exists?(file) || ::File.symlink?(file)
184
184
  (owner = target_owner) && (owner != existing_descriptor.owner)
185
185
  end
186
186