chef 10.34.6 → 11.0.0.beta.0

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 (506) hide show
  1. data/CONTRIBUTING.md +155 -0
  2. data/README.md +89 -0
  3. data/Rakefile +4 -12
  4. data/bin/chef-apply +25 -0
  5. data/bin/chef-shell +34 -0
  6. data/bin/shef +6 -5
  7. data/distro/common/html/chef-client.8.html +4 -4
  8. data/distro/common/html/chef-expander.8.html +4 -4
  9. data/distro/common/html/chef-expanderctl.8.html +4 -4
  10. data/distro/common/html/chef-server-webui.8.html +4 -4
  11. data/distro/common/html/chef-server.8.html +4 -4
  12. data/distro/common/html/{shef.1.html → chef-shell.1.html} +49 -46
  13. data/distro/common/html/chef-solo.8.html +18 -12
  14. data/distro/common/html/chef-solr.8.html +4 -4
  15. data/distro/common/html/knife-bootstrap.1.html +4 -4
  16. data/distro/common/html/knife-client.1.html +4 -4
  17. data/distro/common/html/knife-configure.1.html +4 -4
  18. data/distro/common/html/knife-cookbook-site.1.html +4 -4
  19. data/distro/common/html/knife-cookbook.1.html +10 -7
  20. data/distro/common/html/knife-data-bag.1.html +10 -7
  21. data/distro/common/html/knife-environment.1.html +8 -6
  22. data/distro/common/html/knife-exec.1.html +9 -9
  23. data/distro/common/html/knife-index.1.html +4 -4
  24. data/distro/common/html/knife-node.1.html +4 -4
  25. data/distro/common/html/knife-role.1.html +4 -4
  26. data/distro/common/html/knife-search.1.html +4 -4
  27. data/distro/common/html/knife-ssh.1.html +4 -4
  28. data/distro/common/html/knife-status.1.html +4 -4
  29. data/distro/common/html/knife-tag.1.html +4 -4
  30. data/distro/common/html/knife.1.html +8 -13
  31. data/distro/common/man/man1/{shef.1 → chef-shell.1} +21 -57
  32. data/distro/common/man/man1/knife-bootstrap.1 +1 -1
  33. data/distro/common/man/man1/knife-client.1 +1 -1
  34. data/distro/common/man/man1/knife-configure.1 +1 -1
  35. data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
  36. data/distro/common/man/man1/knife-cookbook.1 +15 -2
  37. data/distro/common/man/man1/knife-data-bag.1 +15 -2
  38. data/distro/common/man/man1/knife-environment.1 +12 -2
  39. data/distro/common/man/man1/knife-exec.1 +4 -7
  40. data/distro/common/man/man1/knife-index.1 +1 -1
  41. data/distro/common/man/man1/knife-node.1 +1 -1
  42. data/distro/common/man/man1/knife-role.1 +1 -1
  43. data/distro/common/man/man1/knife-search.1 +1 -1
  44. data/distro/common/man/man1/knife-ssh.1 +1 -1
  45. data/distro/common/man/man1/knife-status.1 +1 -1
  46. data/distro/common/man/man1/knife-tag.1 +1 -1
  47. data/distro/common/man/man1/knife.1 +3 -6
  48. data/distro/common/man/man8/chef-client.8 +1 -1
  49. data/distro/common/man/man8/chef-expander.8 +1 -1
  50. data/distro/common/man/man8/chef-expanderctl.8 +1 -1
  51. data/distro/common/man/man8/chef-server-webui.8 +1 -1
  52. data/distro/common/man/man8/chef-server.8 +1 -1
  53. data/distro/common/man/man8/chef-solo.8 +36 -4
  54. data/distro/common/man/man8/chef-solr.8 +1 -1
  55. data/distro/common/markdown/man1/{shef.mkd → chef-shell.mkd} +49 -43
  56. data/distro/common/markdown/man1/knife-exec.mkd +11 -6
  57. data/distro/common/markdown/man1/knife.mkd +4 -9
  58. data/distro/debian/etc/default/chef-client +0 -1
  59. data/distro/debian/etc/init.d/chef-client +2 -2
  60. data/lib/chef.rb +2 -5
  61. data/lib/chef/api_client.rb +20 -130
  62. data/lib/chef/api_client/registration.rb +126 -0
  63. data/lib/chef/application.rb +71 -14
  64. data/lib/chef/application/apply.rb +160 -0
  65. data/lib/chef/application/client.rb +25 -18
  66. data/lib/chef/application/knife.rb +0 -2
  67. data/lib/chef/application/solo.rb +23 -8
  68. data/lib/chef/application/windows_service.rb +5 -2
  69. data/lib/chef/applications.rb +1 -0
  70. data/lib/chef/chef_fs.rb +11 -0
  71. data/lib/chef/chef_fs/command_line.rb +232 -0
  72. data/lib/chef/chef_fs/file_pattern.rb +312 -0
  73. data/lib/chef/chef_fs/file_system.rb +358 -0
  74. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -0
  75. data/lib/chef/chef_fs/file_system/base_fs_object.rb +121 -0
  76. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +109 -0
  77. data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb} +12 -15
  78. data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +84 -0
  79. data/lib/chef/chef_fs/file_system/cookbook_dir.rb +188 -0
  80. data/lib/chef/chef_fs/file_system/cookbook_file.rb +78 -0
  81. data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
  82. data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +68 -0
  83. data/lib/chef/chef_fs/file_system/data_bag_dir.rb +78 -0
  84. data/lib/chef/chef_fs/file_system/data_bag_item.rb +59 -0
  85. data/lib/chef/chef_fs/file_system/data_bags_dir.rb +66 -0
  86. data/lib/chef/chef_fs/file_system/file_system_entry.rb +90 -0
  87. data/lib/chef/{index_queue.rb → chef_fs/file_system/file_system_error.rb} +14 -12
  88. data/lib/chef/{resource/whyrun_safe_ruby_block.rb → chef_fs/file_system/file_system_root_dir.rb} +10 -10
  89. data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +31 -0
  90. data/lib/chef/chef_fs/file_system/nodes_dir.rb +47 -0
  91. data/lib/chef/{provider/whyrun_safe_ruby_block.rb → chef_fs/file_system/nonexistent_fs_object.rb} +19 -9
  92. data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
  93. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +84 -0
  94. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +123 -0
  95. data/lib/chef/chef_fs/knife.rb +77 -0
  96. data/lib/chef/chef_fs/path_utils.rb +64 -0
  97. data/lib/chef/client.rb +44 -21
  98. data/lib/chef/config.rb +52 -43
  99. data/lib/chef/cookbook/synchronizer.rb +6 -8
  100. data/lib/chef/cookbook/syntax_check.rb +61 -14
  101. data/lib/chef/cookbook_loader.rb +39 -26
  102. data/lib/chef/cookbook_uploader.rb +17 -19
  103. data/lib/chef/cookbook_version.rb +3 -302
  104. data/lib/chef/daemon.rb +3 -18
  105. data/lib/chef/data_bag.rb +4 -97
  106. data/lib/chef/data_bag_item.rb +2 -65
  107. data/lib/chef/digester.rb +73 -0
  108. data/lib/chef/dsl.rb +6 -0
  109. data/lib/chef/dsl/data_query.rb +66 -0
  110. data/lib/chef/dsl/include_attribute.rb +60 -0
  111. data/lib/chef/dsl/include_recipe.rb +42 -0
  112. data/lib/chef/dsl/platform_introspection.rb +213 -0
  113. data/lib/chef/dsl/recipe.rb +84 -0
  114. data/lib/chef/dsl/registry_helper.rb +59 -0
  115. data/lib/chef/encrypted_data_bag_item.rb +74 -19
  116. data/lib/chef/environment.rb +9 -180
  117. data/lib/chef/exceptions.rb +87 -14
  118. data/lib/chef/formatters/base.rb +4 -1
  119. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +0 -4
  120. data/lib/chef/json_compat.rb +1 -97
  121. data/lib/chef/knife.rb +90 -41
  122. data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
  123. data/lib/chef/knife/bootstrap/centos5-gems.erb +2 -2
  124. data/lib/chef/knife/bootstrap/chef-full.erb +3 -3
  125. data/lib/chef/knife/bootstrap/fedora13-gems.erb +2 -2
  126. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
  127. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +2 -2
  128. data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +2 -2
  129. data/lib/chef/knife/configure.rb +1 -2
  130. data/lib/chef/knife/cookbook_metadata.rb +1 -0
  131. data/lib/chef/knife/cookbook_test.rb +3 -2
  132. data/lib/chef/knife/cookbook_upload.rb +12 -7
  133. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  134. data/lib/chef/knife/core/generic_presenter.rb +26 -13
  135. data/lib/chef/knife/core/node_editor.rb +36 -16
  136. data/lib/chef/knife/core/node_presenter.rb +1 -1
  137. data/lib/chef/knife/core/text_formatter.rb +23 -37
  138. data/lib/chef/knife/core/ui.rb +15 -9
  139. data/lib/chef/knife/delete.rb +39 -0
  140. data/lib/chef/knife/diff.rb +46 -0
  141. data/lib/chef/knife/download.rb +50 -0
  142. data/lib/chef/knife/environment_show.rb +7 -0
  143. data/lib/chef/knife/exec.rb +5 -5
  144. data/lib/chef/knife/help_topics.rb +1 -1
  145. data/lib/chef/knife/index_rebuild.rb +91 -7
  146. data/lib/chef/knife/list.rb +109 -0
  147. data/lib/chef/knife/raw.rb +108 -0
  148. data/lib/chef/knife/search.rb +40 -22
  149. data/lib/chef/knife/show.rb +32 -0
  150. data/lib/chef/knife/ssh.rb +6 -2
  151. data/lib/chef/knife/upload.rb +50 -0
  152. data/lib/chef/mixin/checksum.rb +3 -3
  153. data/lib/chef/mixin/deep_merge.rb +55 -197
  154. data/lib/chef/mixin/language.rb +9 -222
  155. data/lib/chef/mixin/language_include_attribute.rb +6 -38
  156. data/lib/chef/mixin/language_include_recipe.rb +3 -35
  157. data/lib/chef/mixin/params_validate.rb +6 -19
  158. data/lib/chef/mixin/recipe_definition_dsl_core.rb +8 -61
  159. data/lib/chef/mixin/securable.rb +32 -7
  160. data/lib/chef/mixin/template.rb +40 -0
  161. data/lib/chef/mixins.rb +0 -4
  162. data/lib/chef/monkey_patches/net_http.rb +0 -34
  163. data/lib/chef/node.rb +133 -309
  164. data/lib/chef/node/attribute.rb +333 -473
  165. data/lib/chef/node/attribute_collections.rb +199 -0
  166. data/lib/chef/node/immutable_collections.rb +186 -0
  167. data/lib/chef/platform.rb +7 -22
  168. data/lib/chef/provider.rb +2 -49
  169. data/lib/chef/provider/breakpoint.rb +6 -6
  170. data/lib/chef/provider/cookbook_file.rb +5 -33
  171. data/lib/chef/provider/deploy.rb +2 -1
  172. data/lib/chef/provider/directory.rb +14 -17
  173. data/lib/chef/provider/file.rb +19 -52
  174. data/lib/chef/provider/group.rb +31 -51
  175. data/lib/chef/provider/group/dscl.rb +13 -53
  176. data/lib/chef/provider/group/gpasswd.rb +19 -14
  177. data/lib/chef/provider/group/groupadd.rb +1 -41
  178. data/lib/chef/provider/group/groupmod.rb +36 -46
  179. data/lib/chef/provider/group/pw.rb +16 -59
  180. data/lib/chef/provider/group/suse.rb +13 -16
  181. data/lib/chef/provider/group/usermod.rb +18 -40
  182. data/lib/chef/provider/group/windows.rb +6 -13
  183. data/lib/chef/provider/http_request.rb +25 -42
  184. data/lib/chef/provider/link.rb +2 -0
  185. data/lib/chef/provider/lwrp_base.rb +150 -0
  186. data/lib/chef/provider/package/portage.rb +4 -9
  187. data/lib/chef/provider/package/rpm.rb +2 -2
  188. data/lib/chef/provider/package/rubygems.rb +9 -41
  189. data/lib/chef/provider/package/yum.rb +12 -19
  190. data/lib/chef/provider/registry_key.rb +156 -0
  191. data/lib/chef/provider/remote_directory.rb +2 -0
  192. data/lib/chef/provider/remote_file.rb +21 -12
  193. data/lib/chef/provider/ruby_block.rb +5 -2
  194. data/lib/chef/provider/service.rb +15 -0
  195. data/lib/chef/provider/service/init.rb +9 -7
  196. data/lib/chef/provider/service/macosx.rb +15 -73
  197. data/lib/chef/provider/service/simple.rb +1 -1
  198. data/lib/chef/provider/service/solaris.rb +3 -3
  199. data/lib/chef/provider/template.rb +22 -25
  200. data/lib/chef/provider/template_finder.rb +61 -0
  201. data/lib/chef/provider/user.rb +0 -1
  202. data/lib/chef/provider/user/dscl.rb +175 -568
  203. data/lib/chef/provider/user/useradd.rb +30 -47
  204. data/lib/chef/providers.rb +3 -2
  205. data/lib/chef/recipe.rb +14 -8
  206. data/lib/chef/resource.rb +13 -154
  207. data/lib/chef/resource/group.rb +1 -11
  208. data/lib/chef/resource/http_request.rb +2 -1
  209. data/lib/chef/resource/lwrp_base.rb +127 -0
  210. data/lib/chef/resource/mount.rb +10 -11
  211. data/lib/chef/resource/registry_key.rb +86 -0
  212. data/lib/chef/resource/remote_directory.rb +6 -5
  213. data/lib/chef/resource/remote_file.rb +22 -31
  214. data/lib/chef/resource/ruby_block.rb +2 -2
  215. data/lib/chef/resource/service.rb +14 -0
  216. data/lib/chef/resource/user.rb +0 -18
  217. data/lib/chef/resource_collection.rb +25 -21
  218. data/lib/chef/resources.rb +2 -1
  219. data/lib/chef/rest.rb +50 -131
  220. data/lib/chef/rest/auth_credentials.rb +4 -20
  221. data/lib/chef/rest/rest_request.rb +2 -7
  222. data/lib/chef/role.rb +1 -97
  223. data/lib/chef/run_context.rb +108 -130
  224. data/lib/chef/run_context/cookbook_compiler.rb +280 -0
  225. data/lib/chef/run_list.rb +0 -2
  226. data/lib/chef/run_list/run_list_expansion.rb +0 -15
  227. data/lib/chef/run_lock.rb +90 -0
  228. data/lib/chef/runner.rb +28 -5
  229. data/lib/chef/sandbox.rb +15 -148
  230. data/lib/chef/scan_access_control.rb +2 -4
  231. data/lib/chef/shef/ext.rb +3 -575
  232. data/lib/chef/{shef.rb → shell.rb} +35 -40
  233. data/lib/chef/shell/ext.rb +593 -0
  234. data/lib/chef/{shef → shell}/model_wrapper.rb +3 -3
  235. data/lib/chef/{shef/shef_rest.rb → shell/shell_rest.rb} +4 -4
  236. data/lib/chef/{shef/shef_session.rb → shell/shell_session.rb} +17 -15
  237. data/lib/chef/shell_out.rb +7 -0
  238. data/lib/chef/util/windows/net_group.rb +1 -5
  239. data/lib/chef/version.rb +3 -3
  240. data/lib/chef/win32/api/process.rb +0 -1
  241. data/lib/chef/win32/handle.rb +1 -8
  242. data/lib/chef/win32/registry.rb +371 -0
  243. data/spec/data/big_json.json +1 -2
  244. data/spec/data/big_json_plus_one.json +1 -2
  245. data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
  246. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  247. data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
  248. data/spec/data/nodes/default.rb +3 -3
  249. data/spec/data/nodes/test.example.com.rb +3 -3
  250. data/spec/data/nodes/test.rb +3 -3
  251. data/spec/data/partial_one.erb +1 -0
  252. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
  253. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
  254. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
  255. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
  256. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
  257. data/spec/data/{knife-home/.chef/plugins/knife/example_home_subcommand.rb → run_context/cookbooks/circular-dep1/recipes/default.rb} +0 -0
  258. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  259. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
  260. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
  261. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
  262. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
  263. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
  264. data/spec/data/{lwrp_const_scoping/resources/conflict.rb → run_context/cookbooks/circular-dep2/recipes/default.rb} +0 -0
  265. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  266. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
  267. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
  268. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
  269. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
  270. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
  271. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
  272. data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
  273. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  274. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
  275. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
  276. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
  277. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
  278. data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
  279. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  280. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
  281. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
  282. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
  283. data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
  284. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  285. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
  286. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
  287. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
  288. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
  289. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
  290. data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
  291. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
  292. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
  293. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
  294. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
  295. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
  296. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
  297. data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
  298. data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
  299. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  300. data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
  301. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  302. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
  303. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
  304. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
  305. data/spec/data/shef-config.rb +7 -0
  306. data/spec/functional/dsl/registry_helper_spec.rb +63 -0
  307. data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
  308. data/spec/functional/knife/exec_spec.rb +2 -2
  309. data/spec/functional/knife/ssh_spec.rb +5 -1
  310. data/spec/functional/resource/cookbook_file_spec.rb +7 -19
  311. data/spec/functional/resource/directory_spec.rb +4 -0
  312. data/spec/functional/resource/file_spec.rb +56 -22
  313. data/spec/functional/resource/link_spec.rb +2 -0
  314. data/spec/functional/resource/registry_spec.rb +576 -0
  315. data/spec/functional/resource/remote_directory_spec.rb +142 -36
  316. data/spec/functional/resource/remote_file_spec.rb +18 -0
  317. data/spec/functional/resource/template_spec.rb +23 -2
  318. data/spec/functional/run_lock_spec.rb +106 -0
  319. data/spec/functional/shell_spec.rb +100 -0
  320. data/spec/functional/win32/registry_helper_spec.rb +632 -0
  321. data/spec/spec_helper.rb +5 -29
  322. data/spec/stress/win32/security_spec.rb +1 -1
  323. data/spec/support/chef_helpers.rb +0 -2
  324. data/spec/support/platform_helpers.rb +8 -15
  325. data/spec/support/shared/functional/directory_resource.rb +84 -22
  326. data/spec/support/shared/functional/file_resource.rb +169 -71
  327. data/spec/support/shared/functional/securable_resource.rb +143 -119
  328. data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
  329. data/spec/support/shared/unit/file_system_support.rb +110 -0
  330. data/spec/support/shared/unit/platform_introspector.rb +162 -0
  331. data/spec/unit/api_client/registration_spec.rb +175 -0
  332. data/spec/unit/api_client_spec.rb +78 -156
  333. data/spec/unit/application/apply.rb +84 -0
  334. data/spec/unit/application/client_spec.rb +1 -37
  335. data/spec/unit/application/knife_spec.rb +5 -0
  336. data/spec/unit/application_spec.rb +57 -2
  337. data/spec/unit/checksum/storage/filesystem_spec.rb +1 -1
  338. data/spec/unit/chef_fs/diff_spec.rb +328 -0
  339. data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
  340. data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
  341. data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
  342. data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
  343. data/spec/unit/chef_fs/file_system_spec.rb +136 -0
  344. data/spec/unit/client_spec.rb +124 -33
  345. data/spec/unit/config_spec.rb +46 -13
  346. data/spec/unit/cookbook/synchronizer_spec.rb +1 -49
  347. data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
  348. data/spec/unit/cookbook_loader_spec.rb +153 -91
  349. data/spec/unit/cookbook_manifest_spec.rb +81 -81
  350. data/spec/unit/cookbook_spec.rb +3 -20
  351. data/spec/unit/cookbook_version_spec.rb +23 -122
  352. data/spec/unit/daemon_spec.rb +3 -24
  353. data/spec/unit/data_bag_spec.rb +6 -4
  354. data/spec/unit/digester_spec.rb +50 -0
  355. data/spec/unit/dsl/data_query_spec.rb +66 -0
  356. data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
  357. data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
  358. data/spec/unit/encrypted_data_bag_item_spec.rb +50 -105
  359. data/spec/unit/environment_spec.rb +0 -130
  360. data/spec/unit/exceptions_spec.rb +2 -3
  361. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
  362. data/spec/unit/json_compat_spec.rb +15 -7
  363. data/spec/unit/knife/bootstrap_spec.rb +2 -0
  364. data/spec/unit/knife/configure_spec.rb +20 -14
  365. data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
  366. data/spec/unit/knife/cookbook_test_spec.rb +1 -0
  367. data/spec/unit/knife/cookbook_upload_spec.rb +43 -8
  368. data/spec/unit/knife/core/bootstrap_context_spec.rb +1 -1
  369. data/spec/unit/knife/core/ui_spec.rb +156 -125
  370. data/spec/unit/knife/data_bag_create_spec.rb +9 -0
  371. data/spec/unit/knife/data_bag_edit_spec.rb +1 -4
  372. data/spec/unit/knife/data_bag_from_file_spec.rb +4 -6
  373. data/spec/unit/knife/data_bag_show_spec.rb +11 -4
  374. data/spec/unit/knife/index_rebuild_spec.rb +96 -33
  375. data/spec/unit/knife/knife_help.rb +7 -7
  376. data/spec/unit/knife/node_edit_spec.rb +6 -33
  377. data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
  378. data/spec/unit/knife/ssh_spec.rb +12 -15
  379. data/spec/unit/knife/status_spec.rb +2 -2
  380. data/spec/unit/knife_spec.rb +53 -0
  381. data/spec/unit/lwrp_spec.rb +59 -42
  382. data/spec/unit/mixin/checksum_spec.rb +2 -2
  383. data/spec/unit/mixin/deep_merge_spec.rb +101 -799
  384. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
  385. data/spec/unit/mixin/params_validate_spec.rb +4 -37
  386. data/spec/unit/mixin/securable_spec.rb +5 -3
  387. data/spec/unit/mixin/template_spec.rb +119 -0
  388. data/spec/unit/node/attribute_spec.rb +195 -173
  389. data/spec/unit/node/immutable_collections_spec.rb +139 -0
  390. data/spec/unit/node_spec.rb +366 -370
  391. data/spec/unit/platform_spec.rb +9 -10
  392. data/spec/unit/provider/breakpoint_spec.rb +8 -8
  393. data/spec/unit/provider/cookbook_file_spec.rb +4 -8
  394. data/spec/unit/provider/directory_spec.rb +96 -64
  395. data/spec/unit/provider/env_spec.rb +2 -2
  396. data/spec/unit/provider/file_spec.rb +48 -39
  397. data/spec/unit/provider/group/dscl_spec.rb +0 -36
  398. data/spec/unit/provider/group/gpasswd_spec.rb +9 -16
  399. data/spec/unit/provider/group/groupadd_spec.rb +4 -3
  400. data/spec/unit/provider/group/groupmod_spec.rb +1 -0
  401. data/spec/unit/provider/group/pw_spec.rb +15 -12
  402. data/spec/unit/provider/group/usermod_spec.rb +6 -21
  403. data/spec/unit/provider/group/windows_spec.rb +8 -0
  404. data/spec/unit/provider/group_spec.rb +6 -28
  405. data/spec/unit/provider/http_request_spec.rb +28 -69
  406. data/spec/unit/provider/ifconfig_spec.rb +2 -2
  407. data/spec/unit/provider/ohai_spec.rb +4 -4
  408. data/spec/unit/provider/package/apt_spec.rb +0 -1
  409. data/spec/unit/provider/package/ips_spec.rb +0 -1
  410. data/spec/unit/provider/package/portage_spec.rb +0 -44
  411. data/spec/unit/provider/package/rpm_spec.rb +0 -12
  412. data/spec/unit/provider/package/rubygems_spec.rb +1 -44
  413. data/spec/unit/provider/package/yum_spec.rb +39 -36
  414. data/spec/unit/provider/package_spec.rb +7 -5
  415. data/spec/unit/provider/registry_key_spec.rb +269 -0
  416. data/spec/unit/provider/remote_directory_spec.rb +7 -3
  417. data/spec/unit/provider/remote_file_spec.rb +36 -0
  418. data/spec/unit/provider/route_spec.rb +4 -3
  419. data/spec/unit/provider/ruby_block_spec.rb +8 -0
  420. data/spec/unit/provider/service/arch_service_spec.rb +5 -5
  421. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  422. data/spec/unit/provider/service/freebsd_service_spec.rb +5 -5
  423. data/spec/unit/provider/service/init_service_spec.rb +27 -4
  424. data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
  425. data/spec/unit/provider/service/invokercd_service_spec.rb +4 -4
  426. data/spec/unit/provider/service/macosx_spec.rb +11 -66
  427. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  428. data/spec/unit/provider/service/simple_service_spec.rb +3 -3
  429. data/spec/unit/provider/service/upstart_service_spec.rb +9 -9
  430. data/spec/unit/provider/subversion_spec.rb +1 -1
  431. data/spec/unit/provider/template_spec.rb +35 -11
  432. data/spec/unit/provider/user/dscl_spec.rb +285 -681
  433. data/spec/unit/provider/user/useradd_spec.rb +1 -22
  434. data/spec/unit/provider/user_spec.rb +1 -1
  435. data/spec/unit/recipe_spec.rb +10 -8
  436. data/spec/unit/registry_helper_spec.rb +374 -0
  437. data/spec/unit/resource/mount_spec.rb +0 -11
  438. data/spec/unit/resource/registry_key_spec.rb +171 -0
  439. data/spec/unit/resource/remote_file_spec.rb +21 -23
  440. data/spec/unit/resource/ruby_block_spec.rb +7 -3
  441. data/spec/unit/resource/service_spec.rb +11 -0
  442. data/spec/unit/resource_spec.rb +4 -19
  443. data/spec/unit/rest/auth_credentials_spec.rb +2 -19
  444. data/spec/unit/rest_spec.rb +130 -284
  445. data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
  446. data/spec/unit/run_context_spec.rb +18 -4
  447. data/spec/unit/run_list_spec.rb +0 -209
  448. data/spec/unit/run_lock_spec.rb +37 -0
  449. data/spec/unit/runner_spec.rb +101 -2
  450. data/spec/unit/scan_access_control_spec.rb +4 -4
  451. data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
  452. data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
  453. data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +14 -69
  454. data/spec/unit/shell_out_spec.rb +18 -0
  455. data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
  456. metadata +275 -234
  457. checksums.yaml +0 -15
  458. data/README.rdoc +0 -177
  459. data/distro/common/html/knife-recipe.1.html +0 -92
  460. data/lib/chef/certificate.rb +0 -161
  461. data/lib/chef/checksum.rb +0 -167
  462. data/lib/chef/checksum_cache.rb +0 -190
  463. data/lib/chef/cookbook_version_selector.rb +0 -168
  464. data/lib/chef/couchdb.rb +0 -246
  465. data/lib/chef/index_queue/amqp_client.rb +0 -116
  466. data/lib/chef/index_queue/consumer.rb +0 -76
  467. data/lib/chef/index_queue/indexable.rb +0 -109
  468. data/lib/chef/knife/bootstrap/ubuntu12.10-gems.erb +0 -60
  469. data/lib/chef/monkey_patches/moneta.rb +0 -50
  470. data/lib/chef/monkey_patches/uri.rb +0 -70
  471. data/lib/chef/openid_registration.rb +0 -187
  472. data/lib/chef/provider/user/solaris.rb +0 -90
  473. data/lib/chef/solr_query.rb +0 -187
  474. data/lib/chef/solr_query/lucene.treetop +0 -150
  475. data/lib/chef/solr_query/lucene_nodes.rb +0 -285
  476. data/lib/chef/solr_query/query_transform.rb +0 -65
  477. data/lib/chef/solr_query/solr_http_request.rb +0 -132
  478. data/lib/chef/webui_user.rb +0 -231
  479. data/spec/data/cookbooks/openldap/files/default/.dotfile +0 -1
  480. data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +0 -1
  481. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +0 -1
  482. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +0 -1
  483. data/spec/data/mac_users/10.7-8.plist.xml +0 -559
  484. data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
  485. data/spec/data/mac_users/10.7.plist.xml +0 -559
  486. data/spec/data/mac_users/10.7.shadow.xml +0 -11
  487. data/spec/data/mac_users/10.8.plist.xml +0 -559
  488. data/spec/data/mac_users/10.8.shadow.xml +0 -21
  489. data/spec/data/mac_users/10.9.plist.xml +0 -560
  490. data/spec/data/mac_users/10.9.shadow.xml +0 -21
  491. data/spec/functional/resource/base.rb +0 -40
  492. data/spec/functional/resource/group_spec.rb +0 -343
  493. data/spec/functional/resource/user/dscl_spec.rb +0 -199
  494. data/spec/unit/certificate_spec.rb +0 -76
  495. data/spec/unit/checksum_cache_spec.rb +0 -209
  496. data/spec/unit/checksum_spec.rb +0 -94
  497. data/spec/unit/couchdb_spec.rb +0 -274
  498. data/spec/unit/index_queue_spec.rb +0 -391
  499. data/spec/unit/mixin/language_spec.rb +0 -305
  500. data/spec/unit/openid_registration_spec.rb +0 -153
  501. data/spec/unit/provider/user/solaris_spec.rb +0 -414
  502. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +0 -47
  503. data/spec/unit/solr_query/query_transform_spec.rb +0 -454
  504. data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
  505. data/spec/unit/solr_query_spec.rb +0 -203
  506. data/spec/unit/webui_user_spec.rb +0 -238
@@ -19,14 +19,13 @@
19
19
 
20
20
  require 'chef/mixin/from_file'
21
21
  require 'chef/mixin/convert_to_class_name'
22
- require 'chef/mixin/recipe_definition_dsl_core'
22
+ require 'chef/dsl/recipe'
23
23
  require 'chef/mixin/enforce_ownership_and_permissions'
24
24
  require 'chef/mixin/why_run'
25
25
  class Chef
26
26
  class Provider
27
- include Chef::Mixin::RecipeDefinitionDSLCore
27
+ include Chef::DSL::Recipe
28
28
  include Chef::Mixin::WhyRun
29
- include Chef::Mixin::EnforceOwnershipAndPermissions
30
29
 
31
30
  attr_accessor :new_resource
32
31
  attr_accessor :current_resource
@@ -173,51 +172,5 @@ class Chef
173
172
  end
174
173
  end
175
174
 
176
- public
177
-
178
- class << self
179
- include Chef::Mixin::ConvertToClassName
180
-
181
- def build_from_file(cookbook_name, filename, run_context)
182
- pname = filename_to_qualified_string(cookbook_name, filename)
183
-
184
- # Add log entry if we override an existing light-weight provider.
185
- class_name = convert_to_class_name(pname)
186
- overriding = Chef::Provider.const_defined?(class_name)
187
- Chef::Log.info("#{class_name} light-weight provider already initialized -- overriding!") if overriding
188
-
189
- new_provider_class = Class.new self do |cls|
190
-
191
- include Chef::Mixin::RecipeDefinitionDSLCore
192
-
193
- def load_current_resource
194
- # silence Chef::Exceptions::Override exception
195
- end
196
-
197
- class << cls
198
- include Chef::Mixin::FromFile
199
-
200
- # setup DSL's shortcut methods
201
- def action(name, &block)
202
- define_method("action_#{name.to_s}") do
203
- instance_eval(&block)
204
- end
205
- end
206
- end
207
-
208
- # load provider definition from file
209
- cls.class_from_file(filename)
210
- end
211
-
212
- # register new class as a Chef::Provider
213
- pname = filename_to_qualified_string(cookbook_name, filename)
214
- class_name = convert_to_class_name(pname)
215
- Chef::Provider.const_set(class_name, new_provider_class)
216
- Chef::Log.debug("Loaded contents of #{filename} into a provider named #{pname} defined in Chef::Provider::#{class_name}")
217
-
218
- new_provider_class
219
- end
220
- end
221
-
222
175
  end
223
176
  end
@@ -6,9 +6,9 @@
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -19,18 +19,18 @@
19
19
  class Chef
20
20
  class Provider
21
21
  class Breakpoint < Chef::Provider
22
-
22
+
23
23
  def load_current_resource
24
24
  end
25
-
25
+
26
26
  def action_break
27
- if defined?(Shef) && Shef.running?
27
+ if defined?(Shell) && Shell.running?
28
28
  run_context.resource_collection.iterator.pause
29
29
  @new_resource.updated_by_last_action(true)
30
30
  run_context.resource_collection.iterator
31
31
  end
32
32
  end
33
-
33
+
34
34
  end
35
35
  end
36
36
  end
@@ -23,6 +23,9 @@ require 'tempfile'
23
23
  class Chef
24
24
  class Provider
25
25
  class CookbookFile < Chef::Provider::File
26
+
27
+ include Chef::Mixin::EnforceOwnershipAndPermissions
28
+
26
29
  def whyrun_supported?
27
30
  true
28
31
  end
@@ -33,7 +36,7 @@ class Chef
33
36
  end
34
37
 
35
38
  def action_create
36
- if file_cache_location && content_stale?
39
+ if file_cache_location && content_stale?
37
40
  description = []
38
41
  description << "create a new cookbook_file #{@new_resource.path}"
39
42
  description << diff_current(file_cache_location)
@@ -44,8 +47,8 @@ class Chef
44
47
  Chef::Log.debug("#{@new_resource} staging #{file_cache_location} to #{tempfile.path}")
45
48
  tempfile.close
46
49
  FileUtils.cp(file_cache_location, tempfile.path)
47
- enforce_tempfile_inheritance(tempfile.path)
48
50
  end
51
+ update_new_file_state
49
52
  Chef::Log.info("#{@new_resource} created file #{@new_resource.path}")
50
53
  end
51
54
  else
@@ -77,37 +80,6 @@ class Chef
77
80
  ( ! ::File.exist?(@new_resource.path)) || ( ! compare_content)
78
81
  end
79
82
 
80
- protected
81
-
82
- def enforce_tempfile_inheritance(tempfile_path)
83
- # On the Windows platform, files in the temp directory
84
- # default to not inherit unless the new resource specifies rights of
85
- # some sort. Here we ensure that even when no rights are
86
- # specified, the dacl's inheritance flag is set.
87
- if Chef::Platform.windows? &&
88
- @new_resource.rights.nil? &&
89
- @new_resource.group.nil? &&
90
- @new_resource.owner.nil? &&
91
- @new_resource.deny_rights.nil?
92
-
93
- securable_tempfile = Chef::ReservedNames::Win32::Security::SecurableObject.new(tempfile_path)
94
-
95
- # No rights were specified, so the dacl will have no explicit aces
96
- default_dacl = Chef::ReservedNames::Win32::Security::ACL.create([])
97
-
98
- # In setting this default dacl, set inheritance to true
99
- securable_tempfile.set_dacl(default_dacl, true)
100
- end
101
- end
102
-
103
- private
104
-
105
- def managing_content?
106
- return true if @new_resource.checksum
107
- return true if !@new_resource.source.nil? && @action != :create_if_missing
108
- false
109
- end
110
-
111
83
  end
112
84
  end
113
85
  end
@@ -21,12 +21,13 @@ require "chef/mixin/from_file"
21
21
  require "chef/monkey_patches/fileutils"
22
22
  require "chef/provider/git"
23
23
  require "chef/provider/subversion"
24
+ require 'chef/dsl/recipe'
24
25
 
25
26
  class Chef
26
27
  class Provider
27
28
  class Deploy < Chef::Provider
28
29
 
29
- include Chef::Mixin::RecipeDefinitionDSLCore
30
+ include Chef::DSL::Recipe
30
31
  include Chef::Mixin::FromFile
31
32
  include Chef::Mixin::Command
32
33
 
@@ -26,6 +26,9 @@ require 'fileutils'
26
26
  class Chef
27
27
  class Provider
28
28
  class Directory < Chef::Provider::File
29
+
30
+ include Chef::Mixin::EnforceOwnershipAndPermissions
31
+
29
32
  def whyrun_supported?
30
33
  true
31
34
  end
@@ -33,7 +36,6 @@ class Chef
33
36
  def load_current_resource
34
37
  @current_resource = Chef::Resource::Directory.new(@new_resource.name)
35
38
  @current_resource.path(@new_resource.path)
36
- load_current_resource_attrs
37
39
  setup_acl
38
40
 
39
41
  @current_resource
@@ -59,8 +61,8 @@ class Chef
59
61
  # find the lowest-level directory in @new_resource.path that already exists
60
62
  # make sure we have write permissions to that directory
61
63
  is_parent_writable = lambda do |base_dir|
62
- base_dir = ::File.dirname(base_dir)
63
- if ::File.exist?(base_dir)
64
+ base_dir = ::File.dirname(base_dir)
65
+ if ::File.exist?(base_dir)
64
66
  ::File.writable?(base_dir)
65
67
  else
66
68
  is_parent_writable.call(base_dir)
@@ -70,27 +72,27 @@ class Chef
70
72
  else
71
73
  # in why run mode & parent directory does not exist no permissions check is required
72
74
  # If not in why run, permissions must be valid and we rely on prior assertion that dir exists
73
- if !whyrun_mode? || ::File.exist?(parent_directory)
75
+ if !whyrun_mode? || ::File.exist?(parent_directory)
74
76
  ::File.writable?(parent_directory)
75
77
  else
76
78
  true
77
79
  end
78
80
  end
79
81
  end
80
- a.failure_message(Chef::Exceptions::InsufficientPermissions,
82
+ a.failure_message(Chef::Exceptions::InsufficientPermissions,
81
83
  "Cannot create #{@new_resource} at #{@new_resource.path} due to insufficient permissions")
82
84
  end
83
85
 
84
- requirements.assert(:delete) do |a|
85
- a.assertion do
86
+ requirements.assert(:delete) do |a|
87
+ a.assertion do
86
88
  if ::File.exist?(@new_resource.path)
87
- ::File.directory?(@new_resource.path) && ::File.writable?(@new_resource.path)
89
+ ::File.directory?(@new_resource.path) && ::File.writable?(@new_resource.path)
88
90
  else
89
91
  true
90
92
  end
91
93
  end
92
94
  a.failure_message(RuntimeError, "Cannot delete #{@new_resource} at #{@new_resource.path}!")
93
- # No why-run handling here:
95
+ # No why-run handling here:
94
96
  # * if we don't have permissions, this is unlikely to be changed earlier in the run
95
97
  # * if the target is a file (not a dir), there's no reasonable path by which this would have been changed
96
98
  end
@@ -98,16 +100,17 @@ class Chef
98
100
 
99
101
  def action_create
100
102
  unless ::File.exist?(@new_resource.path)
101
- converge_by("create new directory #{@new_resource.path}") do
103
+ converge_by("create new directory #{@new_resource.path}") do
102
104
  if @new_resource.recursive == true
103
105
  ::FileUtils.mkdir_p(@new_resource.path)
104
106
  else
105
107
  ::Dir.mkdir(@new_resource.path)
106
108
  end
107
109
  Chef::Log.info("#{@new_resource} created directory #{@new_resource.path}")
108
- end
110
+ end
109
111
  end
110
112
  set_all_access_controls
113
+ update_new_file_state
111
114
  end
112
115
 
113
116
  def action_delete
@@ -123,12 +126,6 @@ class Chef
123
126
  end
124
127
  end
125
128
  end
126
-
127
- private
128
-
129
- def managing_content?
130
- false
131
- end
132
129
  end
133
130
  end
134
131
  end
@@ -30,6 +30,7 @@ class Chef
30
30
 
31
31
  class Provider
32
32
  class File < Chef::Provider
33
+ include Chef::Mixin::EnforceOwnershipAndPermissions
33
34
  include Chef::Mixin::Checksum
34
35
  include Chef::Mixin::ShellOut
35
36
 
@@ -48,9 +49,9 @@ class Chef
48
49
 
49
50
  def diff_current_from_content(new_content)
50
51
  result = nil
51
- Tempfile.open("chef-diff") do |file|
52
+ Tempfile.open("chef-diff") do |file|
52
53
  file.write new_content
53
- file.close
54
+ file.close
54
55
  result = diff_current file.path
55
56
  end
56
57
  result
@@ -96,12 +97,12 @@ class Chef
96
97
  # -u: Unified diff format
97
98
  result = shell_out("diff -u #{target_path} #{temp_path}" )
98
99
  rescue Exception => e
99
- # Should *not* receive this, but in some circumstances it seems that
100
+ # Should *not* receive this, but in some circumstances it seems that
100
101
  # an exception can be thrown even using shell_out instead of shell_out!
101
102
  return [ "Could not determine diff. Error: #{e.message}" ]
102
103
  end
103
104
 
104
- # diff will set a non-zero return code even when there's
105
+ # diff will set a non-zero return code even when there's
105
106
  # valid stdout results, if it encounters something unexpected
106
107
  # So as long as we have output, we'll show it.
107
108
  if not result.stdout.empty?
@@ -118,7 +119,7 @@ class Chef
118
119
  else
119
120
  [ "(no diff)" ]
120
121
  end
121
- end
122
+ end
122
123
 
123
124
  def whyrun_supported?
124
125
  true
@@ -132,46 +133,20 @@ class Chef
132
133
  @current_resource.path(@new_resource.path)
133
134
  if !::File.directory?(@new_resource.path)
134
135
  if ::File.exist?(@new_resource.path)
135
- if managing_content?
136
+ if @action != :create_if_missing
136
137
  @current_resource.checksum(checksum(@new_resource.path))
137
138
  end
138
139
  end
139
140
  end
140
- load_current_resource_attrs
141
141
  setup_acl
142
142
 
143
143
  @current_resource
144
144
  end
145
145
 
146
- def load_current_resource_attrs
147
- if Chef::Platform.windows?
148
- # TODO: To work around CHEF-3554, add support for Windows
149
- # equivalent, or implicit resource reporting won't work for
150
- # Windows.
151
- return
152
- end
153
-
154
- if ::File.exist?(@new_resource.path)
155
- stat = ::File.stat(@new_resource.path)
156
- @current_resource.owner(stat.uid)
157
- @current_resource.mode(stat.mode & 07777)
158
- @current_resource.group(stat.gid)
159
-
160
- if @new_resource.group.nil?
161
- @new_resource.group(@current_resource.group)
162
- end
163
- if @new_resource.owner.nil?
164
- @new_resource.owner(@current_resource.owner)
165
- end
166
- if @new_resource.mode.nil?
167
- @new_resource.mode(@current_resource.mode)
168
- end
169
- end
170
- end
171
-
172
146
  def setup_acl
173
- @acl_scanner = ScanAccessControl.new(@new_resource, @current_resource)
174
- @acl_scanner.set_all!
147
+ return if Chef::Platform.windows?
148
+ acl_scanner = ScanAccessControl.new(@new_resource, @current_resource)
149
+ acl_scanner.set_all!
175
150
  end
176
151
 
177
152
  def define_resource_requirements
@@ -191,7 +166,7 @@ class Chef
191
166
  # Make sure the file is deletable if it exists. Otherwise, fail.
192
167
  requirements.assert(:delete) do |a|
193
168
  a.assertion do
194
- if ::File.exists?(@new_resource.path)
169
+ if ::File.exists?(@new_resource.path)
195
170
  ::File.writable?(@new_resource.path)
196
171
  else
197
172
  true
@@ -211,7 +186,7 @@ class Chef
211
186
  unless compare_content
212
187
  description = []
213
188
  description << "update content in file #{@new_resource.path} from #{short_cksum(@current_resource.checksum)} to #{short_cksum(new_resource_content_checksum)}"
214
- description << diff_current_from_content(@new_resource.content)
189
+ description << diff_current_from_content(@new_resource.content)
215
190
  converge_by(description) do
216
191
  backup @new_resource.path if ::File.exists?(@new_resource.path)
217
192
  ::File.open(@new_resource.path, "w") {|f| f.write @new_resource.content }
@@ -221,10 +196,10 @@ class Chef
221
196
  end
222
197
 
223
198
  # if you are using a tempfile before creating, you must
224
- # override the default with the tempfile, since the
199
+ # override the default with the tempfile, since the
225
200
  # file at @new_resource.path will not be updated on converge
226
201
  def update_new_file_state(path=@new_resource.path)
227
- if !::File.directory?(path)
202
+ if !::File.directory?(path)
228
203
  @new_resource.checksum(checksum(path))
229
204
  end
230
205
 
@@ -235,10 +210,8 @@ class Chef
235
210
  return
236
211
  end
237
212
 
238
- stat = ::File.stat(path)
239
- @new_resource.owner(stat.uid)
240
- @new_resource.mode(stat.mode & 07777)
241
- @new_resource.group(stat.gid)
213
+ acl_scanner = ScanAccessControl.new(@new_resource, @new_resource)
214
+ acl_scanner.set_all!
242
215
  end
243
216
 
244
217
  def action_create
@@ -247,7 +220,7 @@ class Chef
247
220
  desc = "create new file #{@new_resource.path}"
248
221
  desc << " with content checksum #{short_cksum(new_resource_content_checksum)}" if new_resource.content
249
222
  description << desc
250
- description << diff_current_from_content(@new_resource.content)
223
+ description << diff_current_from_content(@new_resource.content)
251
224
 
252
225
  converge_by(description) do
253
226
  Chef::Log.info("entered create")
@@ -264,7 +237,7 @@ class Chef
264
237
 
265
238
  def set_all_access_controls
266
239
  if access_controls.requires_changes?
267
- converge_by(access_controls.describe_changes) do
240
+ converge_by(access_controls.describe_changes) do
268
241
  access_controls.set_all
269
242
  #Update file state with new access values
270
243
  update_new_file_state
@@ -282,7 +255,7 @@ class Chef
282
255
 
283
256
  def action_delete
284
257
  if ::File.exists?(@new_resource.path)
285
- converge_by("delete file #{@new_resource.path}") do
258
+ converge_by("delete file #{@new_resource.path}") do
286
259
  backup unless ::File.symlink?(@new_resource.path)
287
260
  ::File.delete(@new_resource.path)
288
261
  Chef::Log.info("#{@new_resource} deleted file at #{@new_resource.path}")
@@ -342,12 +315,6 @@ class Chef
342
315
 
343
316
  private
344
317
 
345
- def managing_content?
346
- return true if @new_resource.checksum
347
- return true if !@new_resource.content.nil? && @action != :create_if_missing
348
- false
349
- end
350
-
351
318
  def short_cksum(checksum)
352
319
  return "none" if checksum.nil?
353
320
  checksum.slice(0,6)