chef 11.4.4 → 11.6.0.hotfix.1

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 (504) hide show
  1. data/README.md +1 -1
  2. data/Rakefile +18 -1
  3. data/bin/chef-service-manager +37 -0
  4. data/distro/common/html/chef-client.8.html +4 -4
  5. data/distro/common/html/chef-expander.8.html +4 -4
  6. data/distro/common/html/chef-expanderctl.8.html +4 -4
  7. data/distro/common/html/chef-server-webui.8.html +4 -4
  8. data/distro/common/html/chef-server.8.html +4 -4
  9. data/distro/common/html/chef-shell.1.html +4 -4
  10. data/distro/common/html/chef-solo.8.html +12 -18
  11. data/distro/common/html/chef-solr.8.html +4 -4
  12. data/distro/common/html/knife-bootstrap.1.html +4 -4
  13. data/distro/common/html/knife-client.1.html +4 -4
  14. data/distro/common/html/knife-configure.1.html +4 -4
  15. data/distro/common/html/knife-cookbook-site.1.html +4 -4
  16. data/distro/common/html/knife-cookbook.1.html +7 -10
  17. data/distro/common/html/knife-data-bag.1.html +7 -10
  18. data/distro/common/html/knife-environment.1.html +6 -8
  19. data/distro/common/html/knife-exec.1.html +4 -4
  20. data/distro/common/html/knife-index.1.html +4 -4
  21. data/distro/common/html/knife-node.1.html +4 -4
  22. data/distro/common/html/knife-role.1.html +4 -4
  23. data/distro/common/html/knife-search.1.html +4 -4
  24. data/distro/common/html/knife-ssh.1.html +4 -4
  25. data/distro/common/html/knife-status.1.html +4 -4
  26. data/distro/common/html/knife-tag.1.html +4 -4
  27. data/distro/common/html/knife.1.html +4 -4
  28. data/distro/common/man/man1/chef-shell.1 +1 -1
  29. data/distro/common/man/man1/knife-bootstrap.1 +1 -1
  30. data/distro/common/man/man1/knife-client.1 +1 -1
  31. data/distro/common/man/man1/knife-configure.1 +1 -1
  32. data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
  33. data/distro/common/man/man1/knife-cookbook.1 +2 -15
  34. data/distro/common/man/man1/knife-data-bag.1 +2 -15
  35. data/distro/common/man/man1/knife-environment.1 +2 -12
  36. data/distro/common/man/man1/knife-exec.1 +1 -1
  37. data/distro/common/man/man1/knife-index.1 +1 -1
  38. data/distro/common/man/man1/knife-node.1 +1 -1
  39. data/distro/common/man/man1/knife-role.1 +1 -1
  40. data/distro/common/man/man1/knife-search.1 +1 -1
  41. data/distro/common/man/man1/knife-ssh.1 +1 -1
  42. data/distro/common/man/man1/knife-status.1 +1 -1
  43. data/distro/common/man/man1/knife-tag.1 +1 -1
  44. data/distro/common/man/man1/knife.1 +1 -1
  45. data/distro/common/man/man8/chef-client.8 +1 -1
  46. data/distro/common/man/man8/chef-expander.8 +1 -1
  47. data/distro/common/man/man8/chef-expanderctl.8 +1 -1
  48. data/distro/common/man/man8/chef-server-webui.8 +1 -1
  49. data/distro/common/man/man8/chef-server.8 +1 -1
  50. data/distro/common/man/man8/chef-solo.8 +4 -36
  51. data/distro/common/man/man8/chef-solr.8 +1 -1
  52. data/distro/debian/etc/init.d/chef-client +4 -2
  53. data/distro/windows/service_manager.rb +2 -146
  54. data/lib/chef.rb +1 -1
  55. data/lib/chef/application.rb +5 -12
  56. data/lib/chef/application/apply.rb +2 -0
  57. data/lib/chef/application/client.rb +12 -12
  58. data/lib/chef/application/knife.rb +2 -2
  59. data/lib/chef/application/solo.rb +4 -5
  60. data/lib/chef/application/windows_service.rb +113 -56
  61. data/lib/chef/application/windows_service_manager.rb +179 -0
  62. data/lib/chef/chef_fs.rb +2 -4
  63. data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
  64. data/lib/chef/chef_fs/command_line.rb +145 -93
  65. data/lib/chef/chef_fs/config.rb +205 -0
  66. data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -0
  67. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +38 -0
  68. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +29 -0
  69. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -0
  70. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +56 -0
  71. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +128 -0
  72. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -0
  73. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +51 -0
  74. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -0
  75. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -0
  76. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +27 -0
  77. data/lib/chef/chef_fs/file_system.rb +195 -127
  78. data/lib/chef/chef_fs/file_system/acl_dir.rb +64 -0
  79. data/lib/chef/chef_fs/file_system/acl_entry.rb +58 -0
  80. data/lib/chef/chef_fs/file_system/acls_dir.rb +68 -0
  81. data/lib/chef/chef_fs/file_system/already_exists_error.rb +31 -0
  82. data/lib/chef/chef_fs/file_system/base_fs_object.rb +98 -39
  83. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +85 -0
  84. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +71 -0
  85. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +55 -0
  86. data/lib/chef/chef_fs/file_system/chef_repository_file_system_data_bags_dir.rb +36 -0
  87. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +14 -63
  88. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +93 -3
  89. data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +35 -9
  90. data/lib/chef/chef_fs/file_system/cookbook_dir.rb +67 -32
  91. data/lib/chef/chef_fs/file_system/cookbook_file.rb +13 -6
  92. data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
  93. data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
  94. data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +102 -21
  95. data/lib/chef/chef_fs/file_system/data_bag_dir.rb +12 -21
  96. data/lib/chef/chef_fs/file_system/data_bags_dir.rb +14 -8
  97. data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +36 -0
  98. data/lib/chef/chef_fs/file_system/environments_dir.rb +60 -0
  99. data/lib/chef/chef_fs/file_system/file_system_entry.rb +8 -8
  100. data/lib/chef/chef_fs/file_system/file_system_error.rb +3 -1
  101. data/lib/chef/chef_fs/file_system/memory_dir.rb +52 -0
  102. data/lib/chef/chef_fs/file_system/memory_file.rb +17 -0
  103. data/lib/chef/chef_fs/file_system/memory_root.rb +21 -0
  104. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +48 -0
  105. data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +2 -2
  106. data/lib/chef/chef_fs/file_system/nodes_dir.rb +17 -9
  107. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
  108. data/lib/chef/chef_fs/file_system/not_found_error.rb +2 -2
  109. data/lib/chef/chef_fs/file_system/operation_failed_error.rb +34 -0
  110. data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +48 -0
  111. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +42 -13
  112. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +81 -27
  113. data/lib/chef/chef_fs/knife.rb +68 -29
  114. data/lib/chef/chef_fs/parallelizer.rb +129 -0
  115. data/lib/chef/chef_fs/path_utils.rb +29 -3
  116. data/lib/chef/chef_fs/raw_request.rb +79 -0
  117. data/lib/chef/client.rb +46 -20
  118. data/lib/chef/config.rb +59 -61
  119. data/lib/chef/cookbook/chefignore.rb +2 -1
  120. data/lib/chef/cookbook/synchronizer.rb +8 -6
  121. data/lib/chef/cookbook/syntax_check.rb +17 -2
  122. data/lib/chef/cookbook_uploader.rb +10 -1
  123. data/lib/chef/cookbook_version.rb +0 -109
  124. data/lib/chef/data_bag.rb +15 -6
  125. data/lib/chef/deprecation/mixin/template.rb +49 -0
  126. data/lib/chef/deprecation/provider/cookbook_file.rb +55 -0
  127. data/lib/chef/deprecation/provider/file.rb +197 -0
  128. data/lib/chef/deprecation/provider/remote_file.rb +86 -0
  129. data/lib/chef/deprecation/provider/template.rb +63 -0
  130. data/lib/chef/deprecation/warnings.rb +38 -0
  131. data/lib/chef/encrypted_data_bag_item.rb +153 -61
  132. data/lib/chef/environment.rb +34 -3
  133. data/lib/chef/event_dispatch/base.rb +3 -0
  134. data/lib/chef/exceptions.rb +27 -2
  135. data/lib/chef/file_access_control/unix.rb +64 -7
  136. data/lib/chef/file_access_control/windows.rb +22 -11
  137. data/lib/chef/file_content_management/content_base.rb +56 -0
  138. data/lib/chef/file_content_management/deploy.rb +38 -0
  139. data/lib/chef/file_content_management/deploy/cp.rb +48 -0
  140. data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -0
  141. data/lib/chef/file_content_management/deploy/mv_windows.rb +95 -0
  142. data/lib/chef/file_content_management/tempfile.rb +61 -0
  143. data/lib/chef/formatters/doc.rb +1 -1
  144. data/lib/chef/formatters/error_descriptor.rb +5 -4
  145. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +23 -3
  146. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +4 -0
  147. data/lib/chef/json_compat.rb +3 -0
  148. data/lib/chef/knife.rb +12 -3
  149. data/lib/chef/knife/bootstrap.rb +46 -2
  150. data/lib/chef/knife/bootstrap/archlinux-gems.erb +3 -3
  151. data/lib/chef/knife/bootstrap/centos5-gems.erb +3 -3
  152. data/lib/chef/knife/bootstrap/chef-full.erb +4 -4
  153. data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -3
  154. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +3 -3
  155. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +3 -3
  156. data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +3 -3
  157. data/lib/chef/knife/client_show.rb +2 -5
  158. data/lib/chef/knife/configure.rb +3 -3
  159. data/lib/chef/knife/cookbook_create.rb +6 -5
  160. data/lib/chef/knife/cookbook_download.rb +13 -5
  161. data/lib/chef/knife/cookbook_site_share.rb +1 -0
  162. data/lib/chef/knife/cookbook_test.rb +1 -0
  163. data/lib/chef/knife/cookbook_upload.rb +4 -9
  164. data/lib/chef/knife/core/bootstrap_context.rb +10 -4
  165. data/lib/chef/knife/core/generic_presenter.rb +16 -0
  166. data/lib/chef/knife/core/node_editor.rb +1 -1
  167. data/lib/chef/knife/core/subcommand_loader.rb +43 -12
  168. data/lib/chef/knife/core/ui.rb +19 -4
  169. data/lib/chef/knife/delete.rb +76 -9
  170. data/lib/chef/knife/deps.rb +139 -0
  171. data/lib/chef/knife/diff.rb +22 -5
  172. data/lib/chef/knife/download.rb +16 -3
  173. data/lib/chef/knife/edit.rb +76 -0
  174. data/lib/chef/knife/environment_show.rb +2 -7
  175. data/lib/chef/knife/list.rb +91 -47
  176. data/lib/chef/knife/node_run_list_set.rb +66 -0
  177. data/lib/chef/knife/node_show.rb +1 -7
  178. data/lib/chef/knife/raw.rb +20 -64
  179. data/lib/chef/knife/role_show.rb +2 -4
  180. data/lib/chef/knife/search.rb +5 -6
  181. data/lib/chef/knife/show.rb +34 -11
  182. data/lib/chef/knife/ssh.rb +8 -0
  183. data/lib/chef/knife/upload.rb +23 -4
  184. data/lib/chef/knife/user_show.rb +2 -5
  185. data/lib/chef/knife/xargs.rb +265 -0
  186. data/lib/chef/log.rb +2 -2
  187. data/lib/chef/mixin/file_class.rb +0 -9
  188. data/lib/chef/mixin/language_include_recipe.rb +1 -1
  189. data/lib/chef/mixin/params_validate.rb +19 -9
  190. data/lib/chef/mixin/template.rb +126 -36
  191. data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
  192. data/lib/chef/monkey_patches/file.rb +26 -0
  193. data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
  194. data/lib/chef/monkey_patches/securerandom.rb +44 -0
  195. data/lib/chef/monologger.rb +93 -0
  196. data/lib/chef/node.rb +4 -0
  197. data/lib/chef/platform.rb +4 -490
  198. data/lib/chef/platform/provider_mapping.rb +529 -0
  199. data/lib/chef/{monkey_patches/dir.rb → platform/query_helpers.rb} +25 -19
  200. data/lib/chef/provider.rb +12 -9
  201. data/lib/chef/provider/batch.rb +35 -0
  202. data/lib/chef/provider/cookbook_file.rb +9 -78
  203. data/lib/chef/provider/cookbook_file/content.rb +49 -0
  204. data/lib/chef/provider/deploy.rb +24 -20
  205. data/lib/chef/provider/deploy/revision.rb +27 -0
  206. data/lib/chef/provider/directory.rb +19 -22
  207. data/lib/chef/provider/execute.rb +22 -5
  208. data/lib/chef/provider/file.rb +299 -217
  209. data/lib/chef/provider/file/content.rb +39 -0
  210. data/lib/chef/provider/git.rb +76 -43
  211. data/lib/chef/provider/group/usermod.rb +2 -2
  212. data/lib/chef/provider/ifconfig.rb +25 -35
  213. data/lib/chef/provider/ifconfig/debian.rb +71 -0
  214. data/lib/chef/provider/ifconfig/redhat.rb +47 -0
  215. data/lib/chef/provider/link.rb +10 -3
  216. data/lib/chef/provider/mount.rb +1 -1
  217. data/lib/chef/provider/mount/mount.rb +8 -3
  218. data/lib/chef/provider/mount/windows.rb +4 -1
  219. data/lib/chef/provider/package/portage.rb +9 -4
  220. data/lib/chef/provider/package/rubygems.rb +45 -10
  221. data/lib/chef/provider/package/smartos.rb +47 -36
  222. data/lib/chef/provider/package/yum.rb +19 -12
  223. data/lib/chef/provider/package/zypper.rb +45 -55
  224. data/lib/chef/provider/powershell_script.rb +77 -0
  225. data/lib/chef/provider/remote_directory.rb +5 -6
  226. data/lib/chef/provider/remote_file.rb +12 -108
  227. data/lib/chef/provider/remote_file/cache_control_data.rb +165 -0
  228. data/lib/chef/provider/remote_file/content.rb +75 -0
  229. data/lib/chef/provider/remote_file/fetcher.rb +43 -0
  230. data/lib/chef/provider/remote_file/ftp.rb +183 -0
  231. data/lib/chef/provider/remote_file/http.rb +124 -0
  232. data/lib/chef/provider/remote_file/local_file.rb +47 -0
  233. data/lib/chef/provider/route.rb +6 -2
  234. data/lib/chef/provider/script.rb +14 -2
  235. data/lib/chef/provider/service/macosx.rb +16 -10
  236. data/lib/chef/provider/service/solaris.rb +6 -5
  237. data/lib/chef/provider/template.rb +16 -78
  238. data/lib/chef/provider/template/content.rb +61 -0
  239. data/lib/chef/provider/user/solaris.rb +90 -0
  240. data/lib/chef/provider/user/useradd.rb +76 -63
  241. data/lib/chef/provider/windows_script.rb +73 -0
  242. data/lib/chef/providers.rb +16 -0
  243. data/lib/chef/resource.rb +23 -2
  244. data/lib/chef/resource/batch.rb +31 -0
  245. data/lib/chef/resource/conditional.rb +4 -0
  246. data/lib/chef/resource/conditional_action_not_nothing.rb +48 -0
  247. data/lib/chef/resource/file.rb +31 -3
  248. data/lib/chef/resource/link.rb +17 -0
  249. data/lib/chef/resource/lwrp_base.rb +1 -1
  250. data/lib/chef/resource/mount.rb +29 -2
  251. data/lib/chef/resource/powershell_script.rb +31 -0
  252. data/lib/chef/resource/remote_file.rb +47 -1
  253. data/lib/chef/resource/route.rb +1 -1
  254. data/lib/chef/resource/template.rb +145 -0
  255. data/lib/chef/resource/windows_script.rb +62 -0
  256. data/lib/chef/resource_collection.rb +45 -11
  257. data/lib/chef/resource_reporter.rb +81 -52
  258. data/lib/chef/resources.rb +2 -0
  259. data/lib/chef/rest.rb +13 -4
  260. data/lib/chef/rest/rest_request.rb +5 -1
  261. data/lib/chef/run_context/cookbook_compiler.rb +3 -3
  262. data/lib/chef/run_list/run_list_expansion.rb +1 -1
  263. data/lib/chef/run_lock.rb +7 -1
  264. data/lib/chef/runner.rb +0 -1
  265. data/lib/chef/scan_access_control.rb +6 -1
  266. data/lib/chef/search/query.rb +2 -2
  267. data/lib/chef/shell/shell_session.rb +2 -2
  268. data/lib/chef/util/backup.rb +84 -0
  269. data/lib/chef/util/diff.rb +145 -0
  270. data/lib/chef/util/file_edit.rb +1 -1
  271. data/lib/chef/util/selinux.rb +100 -0
  272. data/lib/chef/util/windows/net_user.rb +14 -1
  273. data/lib/chef/util/windows/volume.rb +2 -2
  274. data/lib/chef/version.rb +1 -1
  275. data/lib/chef/version/platform.rb +42 -0
  276. data/lib/chef/version_class.rb +1 -1
  277. data/lib/chef/version_constraint.rb +6 -5
  278. data/lib/chef/version_constraint/platform.rb +26 -0
  279. data/lib/chef/win32/api/file.rb +8 -2
  280. data/lib/chef/win32/version.rb +25 -8
  281. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
  282. data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -0
  283. data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -0
  284. data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
  285. data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -0
  286. data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -0
  287. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
  288. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
  289. data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -0
  290. data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -0
  291. data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
  292. data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -0
  293. data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -0
  294. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
  295. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
  296. data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
  297. data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
  298. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
  299. data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
  300. data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
  301. data/spec/data/apt/var/www/apt/conf/distributions +7 -0
  302. data/spec/data/apt/var/www/apt/conf/incoming +4 -0
  303. data/spec/data/apt/var/www/apt/conf/pulls +3 -0
  304. data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
  305. data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
  306. data/spec/data/apt/var/www/apt/db/packages.db +0 -0
  307. data/spec/data/apt/var/www/apt/db/references.db +0 -0
  308. data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
  309. data/spec/data/apt/var/www/apt/db/version +4 -0
  310. data/spec/data/apt/var/www/apt/dists/sid/Release +19 -0
  311. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
  312. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
  313. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
  314. data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
  315. data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
  316. data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
  317. data/spec/data/bootstrap/encrypted_data_bag_secret +1 -0
  318. data/spec/data/bootstrap/secret.erb +9 -0
  319. data/spec/data/cookbooks/ignorken/recipes/default.rb +1 -0
  320. data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +2 -0
  321. data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -0
  322. data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +1 -0
  323. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -0
  324. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -0
  325. data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +4 -0
  326. data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -0
  327. data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -0
  328. data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -0
  329. data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +4 -0
  330. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -0
  331. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -0
  332. data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -0
  333. data/spec/data/git_bundles/example-repo.gitbundle +0 -0
  334. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  335. data/spec/data/knife_subcommand/test_yourself.rb +8 -0
  336. data/spec/data/null_config.rb +1 -0
  337. data/spec/data/partial_one.erb +1 -1
  338. data/spec/data/remote_file/nyan_cat.png.gz +0 -0
  339. data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
  340. data/spec/functional/knife/exec_spec.rb +2 -2
  341. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +101 -0
  342. data/spec/functional/resource/batch_spec.rb +64 -0
  343. data/spec/functional/resource/cookbook_file_spec.rb +2 -3
  344. data/spec/functional/resource/deploy_revision_spec.rb +180 -0
  345. data/spec/functional/resource/directory_spec.rb +2 -2
  346. data/spec/functional/resource/file_spec.rb +17 -1
  347. data/spec/functional/resource/git_spec.rb +259 -0
  348. data/spec/functional/resource/link_spec.rb +422 -388
  349. data/spec/functional/resource/package_spec.rb +297 -0
  350. data/spec/functional/resource/powershell_spec.rb +188 -0
  351. data/spec/functional/resource/registry_spec.rb +8 -4
  352. data/spec/functional/resource/remote_directory_spec.rb +2 -2
  353. data/spec/functional/resource/remote_file_spec.rb +97 -29
  354. data/spec/functional/resource/template_spec.rb +173 -17
  355. data/spec/functional/resource/user_spec.rb +547 -0
  356. data/spec/functional/run_lock_spec.rb +5 -0
  357. data/spec/functional/shell_spec.rb +2 -1
  358. data/spec/functional/win32/service_manager_spec.rb +269 -0
  359. data/spec/functional/win32/versions_spec.rb +78 -0
  360. data/spec/integration/knife/chef_repo_path_spec.rb +805 -0
  361. data/spec/integration/knife/chef_repository_file_system_spec.rb +276 -0
  362. data/spec/integration/knife/chefignore_spec.rb +271 -0
  363. data/spec/integration/knife/delete_spec.rb +944 -0
  364. data/spec/integration/knife/deps_spec.rb +648 -0
  365. data/spec/integration/knife/diff_spec.rb +536 -0
  366. data/spec/integration/knife/download_spec.rb +962 -0
  367. data/spec/integration/knife/list_spec.rb +633 -0
  368. data/spec/integration/knife/raw_spec.rb +166 -0
  369. data/spec/integration/knife/redirection_spec.rb +57 -0
  370. data/spec/integration/knife/show_spec.rb +158 -0
  371. data/spec/integration/knife/upload_spec.rb +1060 -0
  372. data/spec/integration/solo/solo_spec.rb +41 -0
  373. data/spec/spec_helper.rb +55 -1
  374. data/spec/support/chef_helpers.rb +32 -0
  375. data/spec/support/platform_helpers.rb +40 -0
  376. data/spec/support/platforms/win32/spec_service.rb +59 -0
  377. data/spec/support/shared/functional/directory_resource.rb +43 -16
  378. data/spec/support/shared/functional/file_resource.rb +661 -20
  379. data/spec/support/shared/functional/securable_resource.rb +109 -8
  380. data/spec/support/shared/functional/securable_resource_with_reporting.rb +39 -31
  381. data/spec/support/shared/integration/integration_helper.rb +166 -0
  382. data/spec/support/shared/integration/knife_support.rb +171 -0
  383. data/spec/support/shared/unit/execute_resource.rb +125 -0
  384. data/spec/support/shared/unit/file_system_support.rb +8 -48
  385. data/spec/support/shared/unit/provider/file.rb +609 -0
  386. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +407 -0
  387. data/spec/support/shared/unit/script_resource.rb +52 -0
  388. data/spec/support/shared/unit/windows_script_resource.rb +48 -0
  389. data/spec/tiny_server.rb +13 -11
  390. data/spec/unit/application/client_spec.rb +39 -1
  391. data/spec/unit/application/knife_spec.rb +12 -0
  392. data/spec/unit/application/solo_spec.rb +1 -1
  393. data/spec/unit/application_spec.rb +57 -2
  394. data/spec/unit/chef_fs/diff_spec.rb +30 -31
  395. data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
  396. data/spec/unit/chef_fs/file_system_spec.rb +2 -3
  397. data/spec/unit/client_spec.rb +20 -1
  398. data/spec/unit/config_spec.rb +70 -52
  399. data/spec/unit/cookbook/synchronizer_spec.rb +49 -1
  400. data/spec/unit/cookbook/syntax_check_spec.rb +28 -3
  401. data/spec/unit/cookbook_loader_spec.rb +3 -2
  402. data/spec/unit/daemon_spec.rb +7 -7
  403. data/spec/unit/data_bag_spec.rb +7 -0
  404. data/spec/unit/deprecation_spec.rb +86 -0
  405. data/spec/unit/encrypted_data_bag_item_spec.rb +183 -88
  406. data/spec/unit/environment_spec.rb +98 -0
  407. data/spec/unit/exceptions_spec.rb +6 -1
  408. data/spec/unit/file_access_control_spec.rb +21 -1
  409. data/spec/unit/file_content_management/deploy/cp_spec.rb +46 -0
  410. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +103 -0
  411. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +179 -0
  412. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +38 -2
  413. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -2
  414. data/spec/unit/knife/bootstrap_spec.rb +128 -29
  415. data/spec/unit/knife/configure_spec.rb +42 -26
  416. data/spec/unit/knife/cookbook_download_spec.rb +24 -3
  417. data/spec/unit/knife/cookbook_upload_spec.rb +8 -4
  418. data/spec/unit/knife/core/bootstrap_context_spec.rb +78 -61
  419. data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
  420. data/spec/unit/knife/core/ui_spec.rb +41 -0
  421. data/spec/unit/knife/node_run_list_set_spec.rb +140 -0
  422. data/spec/unit/knife_spec.rb +21 -0
  423. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +1 -0
  424. data/spec/unit/mixin/params_validate_spec.rb +35 -0
  425. data/spec/unit/mixin/template_spec.rb +69 -57
  426. data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
  427. data/spec/unit/node_spec.rb +7 -0
  428. data/spec/unit/platform_spec.rb +15 -1
  429. data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
  430. data/spec/unit/provider/cookbook_file_spec.rb +26 -183
  431. data/spec/unit/provider/cron/solaris_spec.rb +1 -1
  432. data/spec/unit/provider/deploy/revision_spec.rb +19 -11
  433. data/spec/unit/provider/deploy_spec.rb +2 -2
  434. data/spec/unit/provider/directory_spec.rb +23 -23
  435. data/spec/unit/provider/execute_spec.rb +27 -1
  436. data/spec/unit/provider/file/content_spec.rb +101 -0
  437. data/spec/unit/provider/file_spec.rb +25 -484
  438. data/spec/unit/provider/git_spec.rb +224 -28
  439. data/spec/unit/provider/group/usermod_spec.rb +3 -1
  440. data/spec/unit/provider/ifconfig/debian_spec.rb +89 -0
  441. data/spec/unit/provider/ifconfig/redhat_spec.rb +71 -0
  442. data/spec/unit/provider/ifconfig_spec.rb +0 -33
  443. data/spec/unit/provider/mount/mount_spec.rb +33 -2
  444. data/spec/unit/provider/mount/windows_spec.rb +4 -1
  445. data/spec/unit/provider/mount_spec.rb +16 -6
  446. data/spec/unit/provider/package/portage_spec.rb +44 -0
  447. data/spec/unit/provider/package/rubygems_spec.rb +44 -1
  448. data/spec/unit/provider/package/smartos_spec.rb +3 -2
  449. data/spec/unit/provider/package/yum_spec.rb +36 -39
  450. data/spec/unit/provider/package/zypper_spec.rb +84 -22
  451. data/spec/unit/provider/package_spec.rb +0 -4
  452. data/spec/unit/provider/powershell_spec.rb +38 -0
  453. data/spec/unit/provider/remote_directory_spec.rb +0 -4
  454. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +211 -0
  455. data/spec/unit/provider/remote_file/content_spec.rb +230 -0
  456. data/spec/unit/provider/remote_file/fetcher_spec.rb +75 -0
  457. data/spec/unit/provider/remote_file/ftp_spec.rb +224 -0
  458. data/spec/unit/provider/remote_file/http_spec.rb +319 -0
  459. data/spec/unit/provider/remote_file/local_file_spec.rb +60 -0
  460. data/spec/unit/provider/remote_file_spec.rb +33 -295
  461. data/spec/unit/provider/route_spec.rb +25 -9
  462. data/spec/unit/provider/service/macosx_spec.rb +176 -152
  463. data/spec/unit/provider/service/solaris_smf_service_spec.rb +21 -18
  464. data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
  465. data/spec/unit/provider/service/upstart_service_spec.rb +2 -2
  466. data/spec/unit/provider/service_spec.rb +3 -3
  467. data/spec/unit/provider/template/content_spec.rb +78 -0
  468. data/spec/unit/provider/template_spec.rb +52 -184
  469. data/spec/unit/provider/user/solaris_spec.rb +80 -0
  470. data/spec/unit/provider/user/useradd_spec.rb +12 -358
  471. data/spec/unit/resource/batch_spec.rb +48 -0
  472. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -0
  473. data/spec/unit/resource/execute_spec.rb +3 -101
  474. data/spec/unit/resource/file_spec.rb +0 -5
  475. data/spec/unit/resource/group_spec.rb +9 -0
  476. data/spec/unit/resource/ifconfig_spec.rb +60 -1
  477. data/spec/unit/resource/link_spec.rb +1 -0
  478. data/spec/unit/resource/mount_spec.rb +37 -0
  479. data/spec/unit/resource/powershell_spec.rb +48 -0
  480. data/spec/unit/resource/remote_file_spec.rb +44 -4
  481. data/spec/unit/resource/route_spec.rb +1 -1
  482. data/spec/unit/resource/script_spec.rb +13 -36
  483. data/spec/unit/resource/template_spec.rb +111 -8
  484. data/spec/unit/resource/user_spec.rb +7 -0
  485. data/spec/unit/resource_collection_spec.rb +61 -32
  486. data/spec/unit/resource_reporter_spec.rb +115 -102
  487. data/spec/unit/resource_spec.rb +170 -1
  488. data/spec/unit/rest/auth_credentials_spec.rb +2 -2
  489. data/spec/unit/rest_spec.rb +6 -2
  490. data/spec/unit/run_context/cookbook_compiler_spec.rb +9 -0
  491. data/spec/unit/runner_spec.rb +1 -1
  492. data/spec/unit/scan_access_control_spec.rb +4 -2
  493. data/spec/unit/shell/shell_session_spec.rb +15 -2
  494. data/spec/unit/util/backup_spec.rb +149 -0
  495. data/spec/unit/util/diff_spec.rb +596 -0
  496. data/spec/unit/util/selinux_spec.rb +172 -0
  497. data/spec/unit/version/platform_spec.rb +61 -0
  498. data/spec/unit/version_constraint/platform_spec.rb +46 -0
  499. data/spec/unit/version_constraint_spec.rb +5 -0
  500. metadata +233 -10
  501. data/lib/chef/chef_fs/file_system/data_bag_item.rb +0 -59
  502. data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +0 -237
  503. data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +0 -568
  504. data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +0 -220
@@ -11,13 +11,13 @@ fi
11
11
 
12
12
  mkdir -p /etc/chef
13
13
 
14
- awk NF > /etc/chef/validation.pem <<'EOP'
14
+ cat > /etc/chef/validation.pem <<'EOP'
15
15
  <%= validation_key %>
16
16
  EOP
17
17
  chmod 0600 /etc/chef/validation.pem
18
18
 
19
- <% if @chef_config[:encrypted_data_bag_secret] -%>
20
- awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP'
19
+ <% if encrypted_data_bag_secret -%>
20
+ cat > /etc/chef/encrypted_data_bag_secret <<'EOP'
21
21
  <%= encrypted_data_bag_secret %>
22
22
  EOP
23
23
  chmod 0600 /etc/chef/encrypted_data_bag_secret
@@ -28,13 +28,13 @@ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %>
28
28
 
29
29
  mkdir -p /etc/chef
30
30
 
31
- awk NF > /etc/chef/validation.pem <<'EOP'
31
+ cat > /etc/chef/validation.pem <<'EOP'
32
32
  <%= validation_key %>
33
33
  EOP
34
34
  chmod 0600 /etc/chef/validation.pem
35
35
 
36
- <% if @chef_config[:encrypted_data_bag_secret] -%>
37
- awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP'
36
+ <% if encrypted_data_bag_secret -%>
37
+ cat > /etc/chef/encrypted_data_bag_secret <<'EOP'
38
38
  <%= encrypted_data_bag_secret %>
39
39
  EOP
40
40
  chmod 0600 /etc/chef/encrypted_data_bag_secret
@@ -10,7 +10,7 @@ exists() {
10
10
  fi
11
11
  }
12
12
 
13
- install_sh="http://opscode.com/chef/install.sh"
13
+ install_sh="https://www.opscode.com/chef/install.sh"
14
14
  version_string="-v <%= chef_version %>"
15
15
 
16
16
  if ! exists /usr/bin/chef-client; then
@@ -26,13 +26,13 @@ fi
26
26
 
27
27
  mkdir -p /etc/chef
28
28
 
29
- awk NF > /etc/chef/validation.pem <<'EOP'
29
+ cat > /etc/chef/validation.pem <<'EOP'
30
30
  <%= validation_key %>
31
31
  EOP
32
32
  chmod 0600 /etc/chef/validation.pem
33
33
 
34
- <% if @chef_config[:encrypted_data_bag_secret] -%>
35
- awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP'
34
+ <% if encrypted_data_bag_secret -%>
35
+ cat > /etc/chef/encrypted_data_bag_secret <<'EOP'
36
36
  <%= encrypted_data_bag_secret %>
37
37
  EOP
38
38
  chmod 0600 /etc/chef/encrypted_data_bag_secret
@@ -10,13 +10,13 @@ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %>
10
10
 
11
11
  mkdir -p /etc/chef
12
12
 
13
- awk NF > /etc/chef/validation.pem <<'EOP'
13
+ cat > /etc/chef/validation.pem <<'EOP'
14
14
  <%= validation_key %>
15
15
  EOP
16
16
  chmod 0600 /etc/chef/validation.pem
17
17
 
18
- <% if @chef_config[:encrypted_data_bag_secret] -%>
19
- awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP'
18
+ <% if encrypted_data_bag_secret -%>
19
+ cat > /etc/chef/encrypted_data_bag_secret <<'EOP'
20
20
  <%= encrypted_data_bag_secret %>
21
21
  EOP
22
22
  chmod 0600 /etc/chef/encrypted_data_bag_secret
@@ -10,13 +10,13 @@ fi
10
10
  apt-get update
11
11
  apt-get install -y chef
12
12
 
13
- awk NF > /etc/chef/validation.pem <<'EOP'
13
+ cat > /etc/chef/validation.pem <<'EOP'
14
14
  <%= validation_key %>
15
15
  EOP
16
16
  chmod 0600 /etc/chef/validation.pem
17
17
 
18
- <% if @chef_config[:encrypted_data_bag_secret] -%>
19
- awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP'
18
+ <% if encrypted_data_bag_secret -%>
19
+ cat > /etc/chef/encrypted_data_bag_secret <<'EOP'
20
20
  <%= encrypted_data_bag_secret %>
21
21
  EOP
22
22
  chmod 0600 /etc/chef/encrypted_data_bag_secret
@@ -14,13 +14,13 @@ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %>
14
14
 
15
15
  mkdir -p /etc/chef
16
16
 
17
- awk NF > /etc/chef/validation.pem <<'EOP'
17
+ cat > /etc/chef/validation.pem <<'EOP'
18
18
  <%= validation_key %>
19
19
  EOP
20
20
  chmod 0600 /etc/chef/validation.pem
21
21
 
22
- <% if @chef_config[:encrypted_data_bag_secret] -%>
23
- awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP'
22
+ <% if encrypted_data_bag_secret -%>
23
+ cat > /etc/chef/encrypted_data_bag_secret <<'EOP'
24
24
  <%= encrypted_data_bag_secret %>
25
25
  EOP
26
26
  chmod 0600 /etc/chef/encrypted_data_bag_secret
@@ -12,13 +12,13 @@ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %>
12
12
 
13
13
  mkdir -p /etc/chef
14
14
 
15
- awk NF > /etc/chef/validation.pem <<'EOP'
15
+ cat > /etc/chef/validation.pem <<'EOP'
16
16
  <%= validation_key %>
17
17
  EOP
18
18
  chmod 0600 /etc/chef/validation.pem
19
19
 
20
- <% if @chef_config[:encrypted_data_bag_secret] -%>
21
- awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP'
20
+ <% if encrypted_data_bag_secret -%>
21
+ cat > /etc/chef/encrypted_data_bag_secret <<'EOP'
22
22
  <%= encrypted_data_bag_secret %>
23
23
  EOP
24
24
  chmod 0600 /etc/chef/encrypted_data_bag_secret
@@ -22,6 +22,8 @@ class Chef
22
22
  class Knife
23
23
  class ClientShow < Knife
24
24
 
25
+ include Knife::Core::MultiAttributeReturnOption
26
+
25
27
  deps do
26
28
  require 'chef/api_client'
27
29
  require 'chef/json_compat'
@@ -29,11 +31,6 @@ class Chef
29
31
 
30
32
  banner "knife client show CLIENT (options)"
31
33
 
32
- option :attribute,
33
- :short => "-a ATTR",
34
- :long => "--attribute ATTR",
35
- :description => "Show only one attribute"
36
-
37
34
  def run
38
35
  @client_name = @name_args[0]
39
36
 
@@ -133,17 +133,17 @@ EOH
133
133
 
134
134
  def ask_user_for_config
135
135
  server_name = guess_servername
136
- @chef_server = config[:chef_server_url] || ask_question("Please enter the chef server URL: ", :default => "http://#{server_name}:4000")
136
+ @chef_server = config[:chef_server_url] || ask_question("Please enter the chef server URL: ", :default => "https://#{server_name}:443")
137
137
  if config[:initial]
138
138
  @new_client_name = config[:node_name] || ask_question("Please enter a name for the new user: ", :default => Etc.getlogin)
139
139
  @admin_client_name = config[:admin_client_name] || ask_question("Please enter the existing admin name: ", :default => 'admin')
140
- @admin_client_key = config[:admin_client_key] || ask_question("Please enter the location of the existing admin's private key: ", :default => '/etc/chef/admin.pem')
140
+ @admin_client_key = config[:admin_client_key] || ask_question("Please enter the location of the existing admin's private key: ", :default => '/etc/chef-server/admin.pem')
141
141
  @admin_client_key = File.expand_path(@admin_client_key)
142
142
  else
143
143
  @new_client_name = config[:node_name] || ask_question("Please enter an existing username or clientname for the API: ", :default => Etc.getlogin)
144
144
  end
145
145
  @validation_client_name = config[:validation_client_name] || ask_question("Please enter the validation clientname: ", :default => 'chef-validator')
146
- @validation_key = config[:validation_key] || ask_question("Please enter the location of the validation key: ", :default => '/etc/chef/validation.pem')
146
+ @validation_key = config[:validation_key] || ask_question("Please enter the location of the validation key: ", :default => '/etc/chef-server/chef-validator.pem')
147
147
  @validation_key = File.expand_path(@validation_key)
148
148
  @chef_repo = config[:repository] || ask_question("Please enter the path to a chef repository (or leave blank): ")
149
149
 
@@ -185,13 +185,14 @@ EOH
185
185
  unless File.exists?(File.join(dir,cookbook_name,'CHANGELOG.md'))
186
186
  open(File.join(dir, cookbook_name, 'CHANGELOG.md'),'w') do |file|
187
187
  file.puts <<-EOH
188
- # CHANGELOG for #{cookbook_name}
188
+ #{cookbook_name} CHANGELOG
189
+ #{'='*"#{cookbook_name} CHANGELOG".length}
189
190
 
190
- This file is used to list changes made in each version of #{cookbook_name}.
191
+ This file is used to list changes made in each version of the #{cookbook_name} cookbook.
191
192
 
192
- ## 0.1.0:
193
-
194
- * Initial release of #{cookbook_name}
193
+ 0.1.0
194
+ -----
195
+ - [your_name] - Initial release of #{cookbook_name}
195
196
 
196
197
  - - -
197
198
  Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
@@ -61,6 +61,10 @@ class Chef
61
61
  exit 1
62
62
  elsif @version.nil?
63
63
  @version = determine_version
64
+ if @version.nil?
65
+ ui.fatal("No such cookbook found")
66
+ exit 1
67
+ end
64
68
  end
65
69
 
66
70
  ui.info("Downloading #{@cookbook_name} cookbook version #{@version}")
@@ -95,10 +99,13 @@ class Chef
95
99
  end
96
100
 
97
101
  def determine_version
98
- if available_versions.size == 1
102
+
103
+ if available_versions.nil?
104
+ nil
105
+ elsif available_versions.size == 1
99
106
  @version = available_versions.first
100
107
  elsif config[:latest]
101
- @version = available_versions.map { |v| Chef::Version.new(v) }.sort.last
108
+ @version = available_versions.last
102
109
  else
103
110
  ask_which_version
104
111
  end
@@ -106,10 +113,11 @@ class Chef
106
113
 
107
114
  def available_versions
108
115
  @available_versions ||= begin
109
- versions = Chef::CookbookVersion.available_versions(@cookbook_name).map do |version|
110
- Chef::Version.new(version)
116
+ versions = Chef::CookbookVersion.available_versions(@cookbook_name)
117
+ unless versions.nil?
118
+ versions.map! { |version| Chef::Version.new(version) }
119
+ versions.sort!
111
120
  end
112
- versions.sort!
113
121
  versions
114
122
  end
115
123
  @available_versions
@@ -23,6 +23,7 @@ class Chef
23
23
  class CookbookSiteShare < Knife
24
24
 
25
25
  deps do
26
+ require 'chef/cookbook_loader'
26
27
  require 'chef/cookbook_uploader'
27
28
  require 'chef/cookbook_site_streaming_uploader'
28
29
  end
@@ -25,6 +25,7 @@ class Chef
25
25
  class CookbookTest < Knife
26
26
 
27
27
  deps do
28
+ require 'chef/cookbook_loader'
28
29
  require 'chef/cookbook/syntax_check'
29
30
  end
30
31
 
@@ -19,6 +19,7 @@
19
19
  #
20
20
 
21
21
  require 'chef/knife'
22
+ require 'chef/cookbook_uploader'
22
23
 
23
24
  class Chef
24
25
  class Knife
@@ -228,15 +229,9 @@ WARNING
228
229
  check_for_dependencies!(cb)
229
230
  end
230
231
  Chef::CookbookUploader.new(cookbooks, config[:cookbook_path], :force => config[:force]).upload_cookbooks
231
- rescue Net::HTTPServerException => e
232
- case e.response.code
233
- when "409"
234
- ui.error "Version #{cookbook.version} of cookbook #{cookbook.name} is frozen. Use --force to override."
235
- Log.debug(e)
236
- raise Exceptions::CookbookFrozen
237
- else
238
- raise
239
- end
232
+ rescue Chef::Exceptions::CookbookFrozen => e
233
+ ui.error e
234
+ raise
240
235
  end
241
236
 
242
237
  def check_for_broken_links!(cookbook)
@@ -25,7 +25,7 @@ class Chef
25
25
  # following instance variables:
26
26
  # * @config - a hash of knife's config values
27
27
  # * @run_list - the run list for the node to boostrap
28
- #
28
+ #
29
29
  class BootstrapContext
30
30
 
31
31
  def initialize(config, run_list, chef_config)
@@ -51,7 +51,13 @@ class Chef
51
51
  end
52
52
 
53
53
  def encrypted_data_bag_secret
54
- IO.read(File.expand_path(@chef_config[:encrypted_data_bag_secret]))
54
+ @config[:secret] || begin
55
+ if @config[:secret_file] && File.exist?(@config[:secret_file])
56
+ IO.read(File.expand_path(@config[:secret_file]))
57
+ elsif @chef_config[:encrypted_data_bag_secret] && File.exist?(@chef_config[:encrypted_data_bag_secret])
58
+ IO.read(File.expand_path(@chef_config[:encrypted_data_bag_secret]))
59
+ end
60
+ end
55
61
  end
56
62
 
57
63
  def config_content
@@ -72,7 +78,7 @@ CONFIG
72
78
  client_rb << %Q{https_proxy "#{knife_config[:bootstrap_proxy]}"\n}
73
79
  end
74
80
 
75
- if @chef_config[:encrypted_data_bag_secret]
81
+ if encrypted_data_bag_secret
76
82
  client_rb << %Q{encrypted_data_bag_secret "/etc/chef/encrypted_data_bag_secret"\n}
77
83
  end
78
84
 
@@ -94,7 +100,7 @@ CONFIG
94
100
  def chef_version
95
101
  knife_config[:bootstrap_version] || Chef::VERSION
96
102
  end
97
-
103
+
98
104
  def first_boot
99
105
  (@config[:first_boot_attributes] || {}).merge(:run_list => @run_list)
100
106
  end
@@ -22,6 +22,22 @@ class Chef
22
22
  class Knife
23
23
  module Core
24
24
 
25
+ # Allows includer knife commands to return multiple attributes
26
+ # @brief knife node show NAME -a ATTR1 -a ATTR2
27
+ module MultiAttributeReturnOption
28
+ # :nodoc:
29
+ def self.included(includer)
30
+ includer.class_eval do
31
+ @attrs_to_show = []
32
+ option :attribute,
33
+ :short => "-a ATTR1 [-a ATTR2]",
34
+ :long => "--attribute ATTR1 [--attribute ATTR2] ",
35
+ :proc => lambda {|val| @attrs_to_show << val},
36
+ :description => "Show one or more attributes"
37
+ end
38
+ end
39
+ end
40
+
25
41
  #==Chef::Knife::Core::GenericPresenter
26
42
  # The base presenter class for displaying structured data in knife commands.
27
43
  # This is not an abstract base class, and it is suitable for displaying
@@ -111,7 +111,7 @@ class Chef
111
111
  def tempfile_for(data)
112
112
  # TODO: include useful info like the node name in the temp file
113
113
  # name
114
- basename = "knife-edit-" << rand(1_000_000_000_000_000).to_s.rjust(15, '0') << '.js'
114
+ basename = "knife-edit-" << rand(1_000_000_000_000_000).to_s.rjust(15, '0') << '.json'
115
115
  filename = File.join(Dir.tmpdir, basename)
116
116
  File.open(filename, "w+") do |f|
117
117
  f.sync = true
@@ -21,9 +21,6 @@ class Chef
21
21
  class Knife
22
22
  class SubcommandLoader
23
23
 
24
- CHEF_FILE_IN_GEM = /chef-[\d]+\.[\d]+\.[\d]+/
25
- CURRENT_CHEF_GEM = /chef-#{Regexp.escape(Chef::VERSION)}/
26
-
27
24
  attr_reader :chef_config_dir
28
25
  attr_reader :env
29
26
 
@@ -86,8 +83,7 @@ class Chef
86
83
  end
87
84
 
88
85
  def find_subcommands_via_rubygems
89
- files = Gem.find_files 'chef/knife/*.rb'
90
- files.reject! {|f| from_old_gem?(f) }
86
+ files = find_files_latest_gems 'chef/knife/*.rb'
91
87
  subcommand_files = {}
92
88
  files.each do |file|
93
89
  rel_path = file[/(#{Regexp.escape File.join('chef', 'knife', '')}.*)\.rb/, 1]
@@ -99,13 +95,48 @@ class Chef
99
95
 
100
96
  private
101
97
 
102
- # wow, this is a sad hack :(
103
- # Gem.find_files finds files in all versions of a gem, which
104
- # means that if chef 0.10 and 0.9.x are installed, we'll try to
105
- # require, e.g., chef/knife/ec2_server_create, which will cause
106
- # a gem activation error. So remove files from older chef gems.
107
- def from_old_gem?(path)
108
- path =~ CHEF_FILE_IN_GEM && path !~ CURRENT_CHEF_GEM
98
+ def find_files_latest_gems(glob, check_load_path=true)
99
+ files = []
100
+
101
+ if check_load_path
102
+ files = $LOAD_PATH.map { |load_path|
103
+ Dir["#{File.expand_path glob, load_path}#{Gem.suffix_pattern}"]
104
+ }.flatten.select { |file| File.file? file.untaint }
105
+ end
106
+
107
+ gem_files = latest_gem_specs.map do |spec|
108
+ # Gem::Specification#matches_for_glob wasn't added until RubyGems 1.8
109
+ if spec.respond_to? :matches_for_glob
110
+ spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
111
+ else
112
+ check_spec_for_glob(spec, glob)
113
+ end
114
+ end.flatten
115
+
116
+ files.concat gem_files
117
+ files.uniq! if check_load_path
118
+
119
+ return files
120
+ end
121
+
122
+ def latest_gem_specs
123
+ @latest_gem_specs ||= if Gem::Specification.respond_to? :latest_specs
124
+ Gem::Specification.latest_specs
125
+ else
126
+ Gem.source_index.latest_specs
127
+ end
128
+ end
129
+
130
+ def check_spec_for_glob(spec, glob)
131
+ dirs = if spec.require_paths.size > 1 then
132
+ "{#{spec.require_paths.join(',')}}"
133
+ else
134
+ spec.require_paths.first
135
+ end
136
+
137
+ glob = File.join("#{spec.full_gem_path}/#{dirs}", glob)
138
+
139
+ Dir[glob].map { |f| f.untaint }
109
140
  end
110
141
  end
111
142
  end
@@ -19,7 +19,7 @@
19
19
  #
20
20
 
21
21
  require 'forwardable'
22
- require 'chef/platform'
22
+ require 'chef/platform/query_helpers'
23
23
  require 'chef/knife/core/generic_presenter'
24
24
 
25
25
  class Chef
@@ -64,14 +64,24 @@ class Chef
64
64
  # Prints a message to stdout. Aliased as +info+ for compatibility with
65
65
  # the logger API.
66
66
  def msg(message)
67
- stdout.puts message
67
+ begin
68
+ stdout.puts message
69
+ rescue Errno::EPIPE => e
70
+ raise e if @config[:verbosity] >= 2
71
+ exit 0
72
+ end
68
73
  end
69
74
 
70
75
  alias :info :msg
71
76
 
72
77
  # Prints a msg to stderr. Used for warn, error, and fatal.
73
78
  def err(message)
74
- stderr.puts message
79
+ begin
80
+ stderr.puts message
81
+ rescue Errno::EPIPE => e
82
+ raise e if @config[:verbosity] >= 2
83
+ exit 0
84
+ end
75
85
  end
76
86
 
77
87
  # Print a warning message
@@ -143,7 +153,12 @@ class Chef
143
153
  end
144
154
 
145
155
  def pretty_print(data)
146
- stdout.puts data
156
+ begin
157
+ stdout.puts data
158
+ rescue Errno::EPIPE => e
159
+ raise e if @config[:verbosity] >= 2
160
+ exit 0
161
+ end
147
162
  end
148
163
 
149
164
  def edit_data(data, parse_output=true)