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
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MmEwNTA4ZmEzNWQ4ZmVmZDUwMTRhYjk4YzBhNDdlY2NjOWE4MDhiYg==
5
- data.tar.gz: !binary |-
6
- MDdkMzgwZjA0ZWVhNzYyMDY2YTc4MTBjZjJhMzFiOGU2MTM0ZDY1Mw==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- OWZmYjVlMWZjMjYxMjkzMmNjMDIwNmRmNTI0MjEyZmU0MTU5YzQ0NzJjYWM1
10
- YWQyZWM3YzRhZjllZjFhNjQ4ODhlM2I5M2I2MTE2ZWUwYWNhODU3YTNlM2Q1
11
- NjMyNGVkZWRhY2VjNmExYmVmNWRmYjBhYjUxYzNlOTg0NjcxMzg=
12
- data.tar.gz: !binary |-
13
- NGZlY2E2ZmQyY2VkNGIzOWFiNDZlZTZhZmMyNjI3YmQ0MjY3NmNjODI2ZTMw
14
- ZjZlMzk2MTU0Y2JlMDk3YjZkODMzMmFlZjllOTdhMWFmMzM5YzM0MWRiZWQ3
15
- ZjczNjI0YWE2YWY5Nzc4YzRiNDgzZjA5MzMzZjA1NjhiYzY5YWE=
@@ -1,177 +0,0 @@
1
- = Chef
2
-
3
- == DESCRIPTION:
4
-
5
- Chef is a configuration management tool designed to bring automation to your entire infrastructure.
6
-
7
- The Chef Wiki is the definitive source of user documentation.
8
-
9
- * http://wiki.opscode.com/display/chef/Home
10
-
11
- This README focuses on developers who want to modify Chef source code. For users who just want to run the latest and greatest Chef development version in their environment, see:
12
-
13
- * http://wiki.opscode.com/display/chef/Installing+Chef+from+HEAD
14
-
15
- == DEVELOPMENT:
16
-
17
- Before working on the code, if you plan to contribute your changes, you need to read the Opscode Contributing document.
18
-
19
- * http://wiki.opscode.com/display/opscode/Contributing
20
-
21
- You will also need to set up the repository with the appropriate branches. We document the process on the Chef Wiki.
22
-
23
- * http://wiki.opscode.com/display/opscode/Working+with+Git
24
-
25
- Once your repository is set up, you can start working on the code. We do use BDD/TDD with RSpec and Cucumber, so you'll need to get a development environment running.
26
-
27
- == REQUIREMENTS:
28
-
29
- Ruby 1.8.7+ [1]
30
-
31
- [1] As of 2012-05-25 Ruby 1.8.6 should still work, except for CHEF-2329.
32
-
33
- == ENVIRONMENT:
34
-
35
- In order to have a development environment where changes to the Chef code can be tested, we'll need to install a few things after setting up the Git repository.
36
-
37
- === Non-Gem Dependencies
38
-
39
- Install these via your platform's preferred method; for example apt, yum, ports, emerge, etc.
40
-
41
- * Git[http://git-scm.com/]
42
- * Erlang/OTP[http://www.erlang.org/]
43
- * CouchDB[http://couchdb.apache.org/]
44
- * RabbitMQ[http://www.rabbitmq.com/]
45
- * GCC and C Standard Libraries, header files, etc. (i.e., build-essential on debian/ubuntu)
46
- * Ruby development package
47
-
48
- === Runtime Rubygem Dependencies
49
- ==== Chef Client and Solo
50
- * ohai
51
- * bunny
52
- * erubis
53
- * highline
54
- * json (1.4.4 - 1.4.6)
55
- * mixlib-authentication
56
- * mixlib-cli
57
- * mixlib-config
58
- * mixlib-log
59
- * moneta
60
- * rest-client
61
- * uuidtools
62
- * merb-core
63
- * net-ssh
64
- * fog
65
-
66
- ==== Chef Server, WebUI and Solr
67
- All of the above, plus the following:
68
- * coderay
69
- * haml
70
- * merb-assets
71
- * merb-core
72
- * merb-haml
73
- * merb-helpers
74
- * merb-param-protection
75
- * ruby-openid
76
- * thin
77
-
78
- === Development Rubygem Dependencies
79
- * rake[http://rake.rubyforge.org/]
80
- * rspec[http://rspec.info/]
81
- * cucumber[http://cukes.info/]
82
-
83
- Ohai is also by Opscode and available on GitHub, http://github.com/opscode/ohai/tree/master.
84
-
85
- == Starting the Environment:
86
-
87
- === On Mac OS X:
88
- For ease of debugging, Chef includes a script to start each of the required
89
- daemons in a separate Terminal.app tab via applescript:
90
-
91
- scripts/mac-dev-start features
92
-
93
- === On Linux and BSD
94
-
95
- run the dev:features rake task. You may need to run it as root depending on how
96
- your system is configured.
97
-
98
- rake dev:features
99
-
100
- === Daemons
101
- After starting the environment, you should have the following processes running:
102
- * couchdb listening on port 5984
103
- * rabbitmq listening on port 5672
104
- * solr listening on port 8983
105
- * chef-solr-indexer connected as a client to rabbitmq
106
- * chef-server listening on port 4000
107
- * chef-server-webui listening on port 4040
108
-
109
- You'll know its running when you see:
110
-
111
- merb : chef-server (api) : worker (port 4000) ~ Starting Thin at port 4000
112
- merb : chef-server (api) : worker (port 4000) ~ Using Thin adapter on host 0.0.0.0 and port 4000.
113
- merb : chef-server (api) : worker (port 4000) ~ Successfully bound to port 4000
114
-
115
- You'll want to leave this terminal running the dev environment.
116
-
117
- === Web Interface:
118
-
119
- With the dev environment running, you can now access the web interface via http://localhost:4040/.
120
-
121
- == Spec testing:
122
-
123
- We use RSpec for unit/spec tests. It is not necessary to start the development
124
- environment to run the specs--they are completely standalone.
125
-
126
- rake spec
127
-
128
- == Integration testing:
129
-
130
- We test integration with Cucumber. To run the full suite, run the rake task:
131
-
132
- rake features
133
-
134
- Subsets of the integration tests can be run with the various tasks in the
135
- features namespace. To see the full list, run
136
-
137
- rake -T
138
-
139
- To run individual feature tests, you can take advantage of cucumber's tagging
140
- support. Tag the feature you wish to run (tags are denoted with a leading `@'
141
- sign), then use the cucumber command:
142
-
143
- cucumber -t @my_tag
144
-
145
- == LINKS:
146
-
147
- Source:
148
-
149
- * http://github.com/opscode/chef/tree/master
150
-
151
- Tickets/Issues:
152
-
153
- * http://tickets.opscode.com/
154
-
155
- Documentation:
156
-
157
- * http://wiki.opscode.com/display/chef/Home/
158
-
159
- = LICENSE:
160
-
161
- Chef - A configuration management system
162
-
163
- Author:: Adam Jacob (<adam@opscode.com>)
164
- Copyright:: Copyright (c) 2008-2012 Opscode, Inc.
165
- License:: Apache License, Version 2.0
166
-
167
- Licensed under the Apache License, Version 2.0 (the "License");
168
- you may not use this file except in compliance with the License.
169
- You may obtain a copy of the License at
170
-
171
- http://www.apache.org/licenses/LICENSE-2.0
172
-
173
- Unless required by applicable law or agreed to in writing, software
174
- distributed under the License is distributed on an "AS IS" BASIS,
175
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
176
- See the License for the specific language governing permissions and
177
- limitations under the License.
@@ -1,92 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv='content-type' value='text/html;charset=utf8'>
5
- <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
6
- <title>knife-recipe(1) - List the recipes available on a Chef Server</title>
7
- <style type='text/css' media='all'>
8
- /* style: man */
9
- body#manpage {margin:0}
10
- .mp {max-width:100ex;padding:0 9ex 1ex 4ex}
11
- .mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
12
- .mp h2 {margin:10px 0 0 0}
13
- .mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
14
- .mp h3 {margin:0 0 0 4ex}
15
- .mp dt {margin:0;clear:left}
16
- .mp dt.flush {float:left;width:8ex}
17
- .mp dd {margin:0 0 0 9ex}
18
- .mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
19
- .mp pre {margin-bottom:20px}
20
- .mp pre+h2,.mp pre+h3 {margin-top:22px}
21
- .mp h2+pre,.mp h3+pre {margin-top:5px}
22
- .mp img {display:block;margin:auto}
23
- .mp h1.man-title {display:none}
24
- .mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
25
- .mp h2 {font-size:16px;line-height:1.25}
26
- .mp h1 {font-size:20px;line-height:2}
27
- .mp {text-align:justify;background:#fff}
28
- .mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
29
- .mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
30
- .mp u {text-decoration:underline}
31
- .mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
32
- .mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
33
- .mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
34
- .mp b.man-ref {font-weight:normal;color:#434241}
35
- .mp pre {padding:0 4ex}
36
- .mp pre code {font-weight:normal;color:#434241}
37
- .mp h2+pre,h3+pre {padding-left:0}
38
- ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
39
- ol.man-decor {width:100%}
40
- ol.man-decor li.tl {text-align:left}
41
- ol.man-decor li.tc {text-align:center;letter-spacing:4px}
42
- ol.man-decor li.tr {text-align:right;float:right}
43
- </style>
44
- <style type='text/css' media='all'>
45
- /* style: toc */
46
- .man-navigation {display:block !important;position:fixed;top:0;left:113ex;height:100%;width:100%;padding:48px 0 0 0;border-left:1px solid #dbdbdb;background:#eee}
47
- .man-navigation a,.man-navigation a:hover,.man-navigation a:link,.man-navigation a:visited {display:block;margin:0;padding:5px 2px 5px 30px;color:#999;text-decoration:none}
48
- .man-navigation a:hover {color:#111;text-decoration:underline}
49
- </style>
50
- </head>
51
- <!--
52
- The following styles are deprecated and will be removed at some point:
53
- div#man, div#man ol.man, div#man ol.head, div#man ol.man.
54
-
55
- The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
56
- .man-navigation should be used instead.
57
- -->
58
- <body id='manpage'>
59
- <div class='mp' id='man'>
60
-
61
- <div class='man-navigation' style='display:none'>
62
- <a href="#NAME">NAME</a>
63
- <a href="#SYNOPSIS">SYNOPSIS</a>
64
- </div>
65
-
66
- <ol class='man-decor man-head man head'>
67
- <li class='tl'>knife-recipe(1)</li>
68
- <li class='tc'>Chef Manual</li>
69
- <li class='tr'>knife-recipe(1)</li>
70
- </ol>
71
-
72
- <h2 id="NAME">NAME</h2>
73
- <p class="man-name">
74
- <code>knife-recipe</code> - <span class="man-whatis">List the recipes available on a Chef Server</span>
75
- </p>
76
-
77
- <h2 id="SYNOPSIS">SYNOPSIS</h2>
78
-
79
- <p><strong>knife</strong> <strong>recipe list [PATTERN]</strong></p>
80
-
81
- <p>List the recipes available on the server. The results shown can be limited with the optional PATTERN, which is a regular expression. PATTERN should be given in quotes, without slashes.</p>
82
-
83
-
84
- <ol class='man-decor man-foot man foot'>
85
- <li class='tl'>Chef 0.10.0</li>
86
- <li class='tc'>April 2011</li>
87
- <li class='tr'>knife-recipe(1)</li>
88
- </ol>
89
-
90
- </div>
91
- </body>
92
- </html>
@@ -1,161 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@opscode.com>)
3
- # Author:: Christopher Brown (<cb@opscode.com>)
4
- # Copyright:: Copyright (c) 2009 Opscode, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require 'chef/log'
21
- require 'chef/config'
22
- require 'chef/api_client'
23
- require 'openssl'
24
- require 'fileutils'
25
-
26
- class Chef
27
- class Certificate
28
- class << self
29
-
30
- # Generates a new CA Certificate and Key, and writes them out to
31
- # Chef::Config[:signing_ca_cert] and Chef::Config[:signing_ca_key].
32
- def generate_signing_ca
33
- ca_cert_file = Chef::Config[:signing_ca_cert]
34
- ca_keypair_file = Chef::Config[:signing_ca_key]
35
-
36
- unless File.exists?(ca_cert_file) && File.exists?(ca_keypair_file)
37
- Chef::Log.info("Creating new signing certificate")
38
-
39
- [ ca_cert_file, ca_keypair_file ].each do |f|
40
- ca_basedir = File.dirname(f)
41
- FileUtils.mkdir_p ca_basedir
42
- end
43
-
44
- keypair = OpenSSL::PKey::RSA.generate(1024)
45
-
46
- ca_cert = OpenSSL::X509::Certificate.new
47
- ca_cert.version = 3
48
- ca_cert.serial = 1
49
- info = [
50
- ["C", Chef::Config[:signing_ca_country]],
51
- ["ST", Chef::Config[:signing_ca_state]],
52
- ["L", Chef::Config[:signing_ca_location]],
53
- ["O", Chef::Config[:signing_ca_org]],
54
- ["OU", "Certificate Service"],
55
- ["CN", "#{Chef::Config[:signing_ca_domain]}/emailAddress=#{Chef::Config[:signing_ca_email]}"]
56
- ]
57
- ca_cert.subject = ca_cert.issuer = OpenSSL::X509::Name.new(info)
58
- ca_cert.not_before = Time.now
59
- ca_cert.not_after = Time.now + 10 * 365 * 24 * 60 * 60 # 10 years
60
- ca_cert.public_key = keypair.public_key
61
-
62
- ef = OpenSSL::X509::ExtensionFactory.new
63
- ef.subject_certificate = ca_cert
64
- ef.issuer_certificate = ca_cert
65
- ca_cert.extensions = [
66
- ef.create_extension("basicConstraints", "CA:TRUE", true),
67
- ef.create_extension("subjectKeyIdentifier", "hash"),
68
- ef.create_extension("keyUsage", "cRLSign,keyCertSign", true),
69
- ]
70
- ca_cert.add_extension ef.create_extension("authorityKeyIdentifier", "keyid:always,issuer:always")
71
- ca_cert.sign keypair, OpenSSL::Digest::SHA1.new
72
-
73
- File.open(ca_cert_file, "w") { |f| f.write ca_cert.to_pem }
74
- File.open(ca_keypair_file, File::WRONLY|File::EXCL|File::CREAT, 0600) { |f| f.write keypair.to_pem }
75
- if (Chef::Config[:signing_ca_user] && Chef::Config[:signing_ca_group])
76
- FileUtils.chown(Chef::Config[:signing_ca_user], Chef::Config[:signing_ca_group], ca_keypair_file)
77
- end
78
- end
79
- self
80
- end
81
-
82
- # Creates a new key pair, and signs them with the signing certificate
83
- # and key generated from generate_signing_ca above.
84
- #
85
- # All arguments are unused, though two arguments are accepted for compatibility.
86
- #
87
- # returns an array of [public_key, private_key]
88
- def gen_keypair(common_name=nil, subject_alternative_name = nil)
89
-
90
- Chef::Log.info("Creating new key pair for #{common_name}")
91
-
92
- # generate client keypair
93
- client_keypair = OpenSSL::PKey::RSA.generate(2048)
94
-
95
- return client_keypair.public_key, client_keypair
96
- end
97
-
98
- def gen_validation_key(name=Chef::Config[:validation_client_name], key_file=Chef::Config[:validation_key], admin=false)
99
- # Create the validation key
100
- api_client = Chef::ApiClient.new
101
- api_client.name(name)
102
- api_client.admin(admin)
103
-
104
- begin
105
- # If both the couch record and file exist, don't do anything. Otherwise,
106
- # re-generate the validation key.
107
- Chef::ApiClient.cdb_load(name)
108
-
109
- # The couch document was loaded successfully if we got to here; if we
110
- # can't also load the file on the filesystem, we'll regenerate it all.
111
- File.open(key_file, "r") do |file|
112
- end
113
- rescue Chef::Exceptions::CouchDBNotFound
114
- create_validation_key(api_client, key_file)
115
- rescue
116
- if $!.class.name =~ /Errno::/
117
- Chef::Log.error("Error opening validation key: #{$!} -- destroying and regenerating")
118
- begin
119
- api_client.cdb_destroy
120
- rescue Bunny::ServerDownError => e
121
- # create_validation_key is gonna fail anyway, so let's just bail out.
122
- Chef::Log.fatal("Could not de-index (to rabbitmq) previous validation key - rabbitmq is down! Start rabbitmq then restart chef-server to re-generate it")
123
- raise
124
- end
125
-
126
- create_validation_key(api_client, key_file)
127
- else
128
- raise
129
- end
130
- end
131
- end
132
-
133
- private
134
- def create_validation_key(api_client, key_file)
135
- Chef::Log.info("Creating validation key...")
136
-
137
- api_client.create_keys
138
- begin
139
- api_client.cdb_save
140
- rescue Bunny::ServerDownError => e
141
- # If rabbitmq is down, the client will have been saved in CouchDB,
142
- # but not in the index.
143
- Chef::Log.fatal("Could not index (to rabbitmq) validation key - rabbitmq is down! Start rabbitmq then restart chef-server to re-generate it")
144
-
145
- # re-raise so the error bubbles out and nukes chef-server
146
- raise e
147
- end
148
-
149
- key_dir = File.dirname(key_file)
150
- FileUtils.mkdir_p(key_dir) unless File.directory?(key_dir)
151
- File.open(key_file, File::WRONLY|File::CREAT, 0600) do |f|
152
- f.print(api_client.private_key)
153
- end
154
- if (Chef::Config[:signing_ca_user] && Chef::Config[:signing_ca_group])
155
- FileUtils.chown(Chef::Config[:signing_ca_user], Chef::Config[:signing_ca_group], key_file)
156
- end
157
- end
158
-
159
- end
160
- end
161
- end
@@ -1,167 +0,0 @@
1
- #
2
- # Author:: Tim Hinderliter (<tim@opscode.com>)
3
- # Copyright:: Copyright (c) 2010 Opscode, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- require 'chef/log'
19
- require 'chef/checksum/storage'
20
- require 'uuidtools'
21
-
22
- class Chef
23
- # == Chef::Checksum
24
- # Checksum for an individual file; e.g., used for sandbox/cookbook uploading
25
- # to track which files the system already manages.
26
- class Checksum
27
- attr_accessor :checksum, :create_time
28
- attr_accessor :couchdb_id, :couchdb_rev
29
-
30
- attr_reader :storage
31
-
32
- # When a Checksum commits a sandboxed file to its final home in the checksum
33
- # repo, this attribute will have the original on-disk path where the file
34
- # was stored; it will be used if the commit is reverted to restore the sandbox
35
- # to the pre-commit state.
36
- attr_reader :original_committed_file_location
37
-
38
- DESIGN_DOCUMENT = {
39
- "version" => 1,
40
- "language" => "javascript",
41
- "views" => {
42
- "all" => {
43
- "map" => <<-EOJS
44
- function(doc) {
45
- if (doc.chef_type == "checksum") {
46
- emit(doc.checksum, doc);
47
- }
48
- }
49
- EOJS
50
- },
51
- }
52
- }
53
-
54
- # Creates a new Chef::Checksum object.
55
- # === Arguments
56
- # checksum::: the MD5 content hash of the file
57
- # couchdb::: An instance of Chef::CouchDB
58
- #
59
- # === Returns
60
- # object<Chef::Checksum>:: Duh. :)
61
- def initialize(checksum=nil, couchdb=nil)
62
- @create_time = Time.now.iso8601
63
- @checksum = checksum
64
- @original_committed_file_location = nil
65
- @storage = Storage::Filesystem.new(Chef::Config.checksum_path, checksum)
66
- end
67
-
68
- def to_json(*a)
69
- result = {
70
- :checksum => checksum,
71
- :create_time => create_time,
72
- :json_class => self.class.name,
73
- :chef_type => 'checksum',
74
-
75
- # For Chef::CouchDB (id_to_name, name_to_id)
76
- :name => checksum
77
- }
78
- result.to_json(*a)
79
- end
80
-
81
- def self.json_create(o)
82
- checksum = new(o['checksum'])
83
- checksum.create_time = o['create_time']
84
-
85
- if o.has_key?('_rev')
86
- checksum.couchdb_rev = o["_rev"]
87
- o.delete("_rev")
88
- end
89
- if o.has_key?("_id")
90
- checksum.couchdb_id = o["_id"]
91
- o.delete("_id")
92
- end
93
- checksum
94
- end
95
-
96
- # Moves the given +sandbox_file+ into the checksum repo using the path
97
- # given by +file_location+ and saves the Checksum to the database
98
- def commit_sandbox_file(sandbox_file)
99
- @original_committed_file_location = sandbox_file
100
- Chef::Log.info("Commiting sandbox file: move #{sandbox_file} to #{@storage}")
101
- @storage.commit(sandbox_file)
102
- cdb_save
103
- end
104
-
105
- # Moves the checksum file back to its pre-commit location and deletes
106
- # the checksum object from the database, effectively undoing +commit_sandbox_file+.
107
- # Raises Chef::Exceptions::IllegalChecksumRevert if the original file location
108
- # is unknown, which is will be the case if commit_sandbox_file was not
109
- # previously called
110
- def revert_sandbox_file_commit
111
- unless original_committed_file_location
112
- raise Chef::Exceptions::IllegalChecksumRevert, "Checksum #{self.inspect} cannot be reverted because the original sandbox file location is not known"
113
- end
114
-
115
- Chef::Log.warn("Reverting sandbox file commit: moving #{@storage} back to #{original_committed_file_location}")
116
- @storage.revert(original_committed_file_location)
117
- cdb_destroy
118
- end
119
-
120
- # Removes the on-disk file backing this checksum object, then removes it
121
- # from the database
122
- def purge
123
- purge_file
124
- cdb_destroy
125
- end
126
-
127
- ##
128
- # Couchdb
129
- ##
130
-
131
- def self.create_design_document(couchdb=nil)
132
- (couchdb || Chef::CouchDB.new).create_design_document("checksums", DESIGN_DOCUMENT)
133
- end
134
-
135
- def self.cdb_list(inflate=false, couchdb=nil)
136
- rs = (couchdb || Chef::CouchDB.new).list("checksums", inflate)
137
- lookup = (inflate ? "value" : "key")
138
- rs["rows"].collect { |r| r[lookup] }
139
- end
140
-
141
- def self.cdb_all_checksums(couchdb = nil)
142
- rs = (couchdb || Chef::CouchDB.new).list("checksums", true)
143
- rs["rows"].inject({}) { |hash_result, r| hash_result[r['key']] = 1; hash_result }
144
- end
145
-
146
- def self.cdb_load(checksum, couchdb=nil)
147
- # Probably want to look for a view here at some point
148
- (couchdb || Chef::CouchDB.new).load("checksum", checksum)
149
- end
150
-
151
- def cdb_destroy(couchdb=nil)
152
- (couchdb || Chef::CouchDB.new).delete("checksum", checksum, @couchdb_rev)
153
- end
154
-
155
- def cdb_save(couchdb=nil)
156
- @couchdb_rev = (couchdb || Chef::CouchDB.new).store("checksum", checksum, self)["rev"]
157
- end
158
-
159
-
160
- private
161
-
162
- def purge_file
163
- @storage.purge
164
- end
165
-
166
- end
167
- end