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
@@ -17,6 +17,7 @@
17
17
  #
18
18
 
19
19
  require 'chef/chef_fs'
20
+ require 'pathname'
20
21
 
21
22
  class Chef
22
23
  module ChefFS
@@ -24,13 +25,13 @@ class Chef
24
25
 
25
26
  # If you are in 'source', this is what you would have to type to reach 'dest'
26
27
  # relative_to('/a/b/c/d/e', '/a/b/x/y') == '../../c/d/e'
27
- # relative_to('/a/b', '/a/b') == ''
28
+ # relative_to('/a/b', '/a/b') == '.'
28
29
  def self.relative_to(dest, source)
29
30
  # Skip past the common parts
30
31
  source_parts = Chef::ChefFS::PathUtils.split(source)
31
32
  dest_parts = Chef::ChefFS::PathUtils.split(dest)
32
33
  i = 0
33
- until i >= source_parts.length || i >= dest_parts.length || source_parts[i] != source_parts[i]
34
+ until i >= source_parts.length || i >= dest_parts.length || source_parts[i] != dest_parts[i]
34
35
  i+=1
35
36
  end
36
37
  # dot-dot up from 'source' to the common ancestor, then
@@ -56,9 +57,34 @@ class Chef
56
57
  end
57
58
 
58
59
  def self.regexp_path_separator
59
- Chef::ChefFS::windows? ? '[/\\]' : '/'
60
+ Chef::ChefFS::windows? ? '[\/\\\\]' : '/'
60
61
  end
61
62
 
63
+ # Given a path which may only be partly real (i.e. /x/y/z when only /x exists,
64
+ # or /x/y/*/blah when /x/y/z/blah exists), call File.realpath on the biggest
65
+ # part that actually exists.
66
+ #
67
+ # If /x is a symlink to /blarghle, and has no subdirectories, then:
68
+ # PathUtils.realest_path('/x/y/z') == '/blarghle/y/z'
69
+ # PathUtils.realest_path('/x/*/z') == '/blarghle/*/z'
70
+ # PathUtils.realest_path('/*/y/z') == '/*/y/z'
71
+ def self.realest_path(path)
72
+ path = Pathname.new(path)
73
+ begin
74
+ path.realpath.to_s
75
+ rescue Errno::ENOENT
76
+ dirname = path.dirname
77
+ if dirname
78
+ PathUtils.join(realest_path(dirname), path.basename.to_s)
79
+ else
80
+ path.to_s
81
+ end
82
+ end
83
+ end
84
+
85
+ def self.is_absolute?(path)
86
+ path =~ /^#{regexp_path_separator}/
87
+ end
62
88
  end
63
89
  end
64
90
  end
@@ -0,0 +1,79 @@
1
+ class Chef
2
+ module ChefFS
3
+ module RawRequest
4
+ def self.raw_json(chef_rest, api_path)
5
+ JSON.parse(raw_request(chef_rest, api_path), :create_additions => false)
6
+ end
7
+
8
+ def self.raw_request(chef_rest, api_path)
9
+ api_request(chef_rest, :GET, chef_rest.create_url(api_path), {}, false)
10
+ end
11
+
12
+ def self.api_request(chef_rest, method, url, headers={}, data=false)
13
+ json_body = data
14
+ # json_body = data ? Chef::JSONCompat.to_json(data) : nil
15
+ # Force encoding to binary to fix SSL related EOFErrors
16
+ # cf. http://tickets.opscode.com/browse/CHEF-2363
17
+ # http://redmine.ruby-lang.org/issues/5233
18
+ # json_body.force_encoding(Encoding::BINARY) if json_body.respond_to?(:force_encoding)
19
+ headers = build_headers(chef_rest, method, url, headers, json_body)
20
+
21
+ chef_rest.retriable_rest_request(method, url, json_body, headers) do |rest_request|
22
+ response = rest_request.call {|r| r.read_body}
23
+
24
+ response_body = chef_rest.decompress_body(response)
25
+
26
+ if response.kind_of?(Net::HTTPSuccess)
27
+ response_body
28
+ elsif redirect_location = redirected_to(response)
29
+ if [:GET, :HEAD].include?(method)
30
+ chef_rest.follow_redirect do
31
+ api_request(chef_rest, method, chef_rest.create_url(redirect_location))
32
+ end
33
+ else
34
+ raise Exceptions::InvalidRedirect, "#{method} request was redirected from #{url} to #{redirect_location}. Only GET and HEAD support redirects."
35
+ end
36
+ else
37
+ # have to decompress the body before making an exception for it. But the body could be nil.
38
+ response.body.replace(chef_rest.decompress_body(response)) if response.body.respond_to?(:replace)
39
+
40
+ if response['content-type'] =~ /json/
41
+ exception = response_body
42
+ msg = "HTTP Request Returned #{response.code} #{response.message}: "
43
+ msg << (exception["error"].respond_to?(:join) ? exception["error"].join(", ") : exception["error"].to_s)
44
+ Chef::Log.info(msg)
45
+ end
46
+ response.error!
47
+ end
48
+ end
49
+ end
50
+
51
+ private
52
+
53
+ # Copied so that it does not automatically inflate an object
54
+ # This is also used by knife raw_essentials
55
+
56
+ ACCEPT_ENCODING = "Accept-Encoding".freeze
57
+ ENCODING_GZIP_DEFLATE = "gzip;q=1.0,deflate;q=0.6,identity;q=0.3".freeze
58
+
59
+ def self.redirected_to(response)
60
+ return nil unless response.kind_of?(Net::HTTPRedirection)
61
+ # Net::HTTPNotModified is undesired subclass of Net::HTTPRedirection so test for this
62
+ return nil if response.kind_of?(Net::HTTPNotModified)
63
+ response['location']
64
+ end
65
+
66
+ def self.build_headers(chef_rest, method, url, headers={}, json_body=false, raw=false)
67
+ # headers = @default_headers.merge(headers)
68
+ #headers['Accept'] = "application/json" unless raw
69
+ headers['Accept'] = "application/json" unless raw
70
+ headers["Content-Type"] = 'application/json' if json_body
71
+ headers['Content-Length'] = json_body.bytesize.to_s if json_body
72
+ headers[Chef::REST::RESTRequest::ACCEPT_ENCODING] = Chef::REST::RESTRequest::ENCODING_GZIP_DEFLATE
73
+ headers.merge!(chef_rest.authentication_headers(method, url, json_body)) if chef_rest.sign_requests?
74
+ headers.merge!(Chef::Config[:custom_http_headers]) if Chef::Config[:custom_http_headers]
75
+ headers
76
+ end
77
+ end
78
+ end
79
+ end
@@ -25,7 +25,7 @@ require 'chef/log'
25
25
  require 'chef/rest'
26
26
  require 'chef/api_client'
27
27
  require 'chef/api_client/registration'
28
- require 'chef/platform'
28
+ require 'chef/platform/query_helpers'
29
29
  require 'chef/node'
30
30
  require 'chef/role'
31
31
  require 'chef/file_cache'
@@ -103,6 +103,7 @@ class Chef
103
103
  self.class.run_start_notifications.each do |notification|
104
104
  notification.call(run_status)
105
105
  end
106
+ @events.run_started(run_status)
106
107
  end
107
108
 
108
109
  # Callback to fire notifications that the run completed successfully
@@ -131,7 +132,7 @@ class Chef
131
132
  attr_reader :json_attribs
132
133
  attr_reader :run_status
133
134
  attr_reader :events
134
-
135
+
135
136
  # Creates a new Chef::Client.
136
137
  def initialize(json_attribs=nil, args={})
137
138
  @json_attribs = json_attribs
@@ -179,28 +180,52 @@ class Chef
179
180
  # Do a full run for this Chef::Client. Calls:
180
181
  # * do_run
181
182
  #
182
- # This provides a wrapper around #do_run allowing the
183
+ # This provides a wrapper around #do_run allowing the
183
184
  # run to be optionally forked.
184
185
  # === Returns
185
186
  # boolean:: Return value from #do_run. Should always returns true.
186
187
  def run
187
- if(Chef::Config[:client_fork] && Process.respond_to?(:fork))
188
+ # win32-process gem exposes some form of :fork for Process
189
+ # class. So we are seperately ensuring that the platform we're
190
+ # running on is not windows before forking.
191
+ if(Chef::Config[:client_fork] && Process.respond_to?(:fork) && !Chef::Platform.windows?)
188
192
  Chef::Log.info "Forking chef instance to converge..."
189
193
  pid = fork do
190
- Chef::Log.info "Forked instance now converging"
191
- do_run
192
- exit
194
+ [:INT, :TERM].each {|s| trap(s, "EXIT") }
195
+ client_solo = Chef::Config[:solo] ? "chef-solo" : "chef-client"
196
+ $0 = "#{client_solo} worker: ppid=#{Process.ppid};start=#{Time.new.strftime("%R:%S")};"
197
+ begin
198
+ Chef::Log.debug "Forked instance now converging"
199
+ do_run
200
+ rescue Exception
201
+ exit 1
202
+ else
203
+ exit 0
204
+ end
193
205
  end
194
- Chef::Log.info "Fork successful. Waiting for new chef pid: #{pid}"
206
+ Chef::Log.debug "Fork successful. Waiting for new chef pid: #{pid}"
195
207
  result = Process.waitpid2(pid)
196
- raise "Forked convergence run failed" unless result.last.success?
197
- Chef::Log.info "Forked child successfully reaped (pid: #{pid})"
208
+ handle_child_exit(result)
209
+ Chef::Log.debug "Forked child successfully reaped (pid: #{pid})"
198
210
  true
199
211
  else
200
212
  do_run
201
213
  end
202
214
  end
203
215
 
216
+ def handle_child_exit(pid_and_status)
217
+ status = pid_and_status[1]
218
+ return true if status.success?
219
+ message = if status.signaled?
220
+ "Chef run process terminated by signal #{status.termsig} (#{Signal.list.invert[status.termsig]})"
221
+ else
222
+ "Chef run process exited unsuccessfully (exit code #{status.exitstatus})"
223
+ end
224
+ raise Exceptions::ChildConvergeError, message
225
+ end
226
+
227
+
228
+
204
229
  # Configures the Chef::Cookbook::FileVendor class to fetch file from the
205
230
  # server or disk as appropriate, creates the run context for this run, and
206
231
  # sanity checks the cookbook collection.
@@ -444,18 +469,18 @@ class Chef
444
469
  def do_run
445
470
  runlock = RunLock.new(Chef::Config)
446
471
  runlock.acquire
472
+ # don't add code that may fail before entering this section to be sure to release lock
473
+ begin
474
+ run_context = nil
475
+ @events.run_start(Chef::VERSION)
476
+ Chef::Log.info("*** Chef #{Chef::VERSION} ***")
477
+ enforce_path_sanity
478
+ run_ohai
479
+ @events.ohai_completed(node)
480
+ register unless Chef::Config[:solo]
447
481
 
448
- run_context = nil
449
- @events.run_start(Chef::VERSION)
450
- Chef::Log.info("*** Chef #{Chef::VERSION} ***")
451
- enforce_path_sanity
452
- run_ohai
453
- @events.ohai_completed(node)
454
- register unless Chef::Config[:solo]
455
-
456
- load_node
482
+ load_node
457
483
 
458
- begin
459
484
  build_node
460
485
 
461
486
  run_status.start_clock
@@ -484,6 +509,7 @@ class Chef
484
509
  run_status.exception = e
485
510
  run_failed
486
511
  end
512
+ Chef::Application.debug_stacktrace(e)
487
513
  @events.run_failed(e)
488
514
  raise
489
515
  ensure
@@ -2,7 +2,8 @@
2
2
  # Author:: Adam Jacob (<adam@opscode.com>)
3
3
  # Author:: Christopher Brown (<cb@opscode.com>)
4
4
  # Author:: AJ Christensen (<aj@opscode.com>)
5
- # Author:: Mark Mzyk (mmzyk@opscode.com)
5
+ # Author:: Mark Mzyk (<mmzyk@opscode.com>)
6
+ # Author:: Kyle Goodwin (<kgoodwin@primerevenue.com>)
6
7
  # Copyright:: Copyright (c) 2008 Opscode, Inc.
7
8
  # License:: Apache License, Version 2.0
8
9
  #
@@ -19,7 +20,9 @@
19
20
  # limitations under the License.
20
21
 
21
22
  require 'chef/log'
23
+ require 'chef/exceptions'
22
24
  require 'mixlib/config'
25
+ require 'chef/util/selinux'
23
26
 
24
27
  class Chef
25
28
  class Config
@@ -74,14 +77,7 @@ class Chef
74
77
  config_attr_writer :chef_server_url do |url|
75
78
  url = url.strip
76
79
  configure do |c|
77
- [ :registration_url,
78
- :template_url,
79
- :remotefile_url,
80
- :search_url,
81
- :chef_server_url,
82
- :role_url ].each do |u|
83
- c[u] = url
84
- end
80
+ c[:chef_server_url] = url
85
81
  end
86
82
  url
87
83
  end
@@ -110,32 +106,18 @@ class Chef
110
106
  f = File.new(location.to_str, "a")
111
107
  f.sync = true
112
108
  rescue Errno::ENOENT
113
- raise Chef::Exceptions::ConfigurationError("Failed to open or create log file at #{location.to_str}")
109
+ raise Chef::Exceptions::ConfigurationError, "Failed to open or create log file at #{location.to_str}"
114
110
  end
115
111
  f
116
112
  end
117
113
  end
118
114
 
119
- # Override the config dispatch to set the value of authorized_openid_providers when openid_providers (deprecated) is used
120
- #
121
- # === Parameters
122
- # providers<Array>:: An array of openid providers that are authorized to login to the chef server
123
- #
124
- config_attr_writer :openid_providers do |providers|
125
- configure { |c| c[:authorized_openid_providers] = providers }
126
- providers
127
- end
128
-
129
115
  # Turn on "path sanity" by default. See also: http://wiki.opscode.com/display/chef/User+Environment+PATH+Sanity
130
116
  enforce_path_sanity(true)
131
117
 
132
118
  # Formatted Chef Client output is a beta feature, disabled by default:
133
119
  formatter "null"
134
120
 
135
- # Used when OpenID authentication is enabled in the Web UI
136
- authorized_openid_identifiers nil
137
- authorized_openid_providers nil
138
-
139
121
  # The number of times the client should retry when registering with the server
140
122
  client_registration_retries 5
141
123
 
@@ -147,9 +129,6 @@ class Chef
147
129
  # An array of paths to search for knife exec scripts if they aren't in the current directory
148
130
  script_path []
149
131
 
150
- # Where files are stored temporarily during uploads
151
- sandbox_path "/var/chef/sandboxes"
152
-
153
132
  # Where cookbook files are stored on the server (by content checksum)
154
133
  checksum_path "/var/chef/checksums"
155
134
 
@@ -174,7 +153,6 @@ class Chef
174
153
  group nil
175
154
  umask 0022
176
155
 
177
-
178
156
  # Valid log_levels are:
179
157
  # * :debug
180
158
  # * :info
@@ -202,30 +180,21 @@ class Chef
202
180
  # toggle info level log items that can create a lot of output
203
181
  verbose_logging true
204
182
  node_name nil
205
- node_path "/var/chef/node"
206
- diff_disable false
183
+ diff_disabled false
207
184
  diff_filesize_threshold 10000000
208
185
  diff_output_threshold 1000000
209
186
 
210
187
  pid_file nil
211
188
 
212
- chef_server_url "http://localhost:4000"
213
- registration_url "http://localhost:4000"
214
- template_url "http://localhost:4000"
215
- role_url "http://localhost:4000"
216
- remotefile_url "http://localhost:4000"
217
- search_url "http://localhost:4000"
218
-
219
- client_url "http://localhost:4042"
189
+ chef_server_url "https://localhost:443"
220
190
 
221
191
  rest_timeout 300
222
- run_command_stderr_timeout 120
223
- run_command_stdout_timeout 120
192
+ yum_timeout 900
224
193
  solo false
225
194
  splay nil
226
195
  why_run false
227
196
  color false
228
- client_fork false
197
+ client_fork true
229
198
  enable_reporting true
230
199
  enable_reporting_url_fatals false
231
200
 
@@ -237,12 +206,13 @@ class Chef
237
206
  ssl_ca_path nil
238
207
  ssl_ca_file nil
239
208
 
240
-
241
209
  # Where should chef-solo look for role files?
242
210
  role_path platform_specific_path("/var/chef/roles")
243
211
 
244
212
  data_bag_path platform_specific_path("/var/chef/data_bags")
245
213
 
214
+ environment_path platform_specific_path("/var/chef/environments")
215
+
246
216
  # Where should chef-solo download recipes from?
247
217
  recipe_url nil
248
218
 
@@ -270,6 +240,32 @@ class Chef
270
240
  # `node_name` of the client.
271
241
  client_key platform_specific_path("/etc/chef/client.pem")
272
242
 
243
+ # This secret is used to decrypt encrypted data bag items.
244
+ encrypted_data_bag_secret platform_specific_path("/etc/chef/encrypted_data_bag_secret")
245
+
246
+ # We have to check for the existence of the default file before setting it
247
+ # since +Chef::Config[:encrypted_data_bag_secret]+ is read by older
248
+ # bootstrap templates to determine if the local secret should be uploaded to
249
+ # node being bootstrapped. This should be removed in Chef 12.
250
+ unless File.exist?(platform_specific_path("/etc/chef/encrypted_data_bag_secret"))
251
+ encrypted_data_bag_secret(nil)
252
+ end
253
+
254
+ # As of Chef 11.0, version "1" is the default encrypted data bag item
255
+ # format. Version "2" is available which adds encrypt-then-mac protection.
256
+ # To maintain compatibility, versions other than 1 must be opt-in.
257
+ #
258
+ # Set this to `2` if you have chef-client 11.6.0+ in your infrastructure:
259
+ data_bag_encrypt_version 1
260
+
261
+ # When reading data bag items, any supported version is accepted. However,
262
+ # if all encrypted data bags have been generated with the version 2 format,
263
+ # it is recommended to disable support for earlier formats to improve
264
+ # security. For example, the version 2 format is identical to version 1
265
+ # except for the addition of an HMAC, so an attacker with MITM capability
266
+ # could downgrade an encrypted data bag to version 1 as part of an attack.
267
+ data_bag_decrypt_minimum_version 0
268
+
273
269
  # If there is no file in the location given by `client_key`, chef-client
274
270
  # will temporarily use the "validator" identity to generate one. If the
275
271
  # `client_key` is not present and the `validation_key` is also not present,
@@ -278,24 +274,12 @@ class Chef
278
274
  # The `validation_key` is never used if the `client_key` exists.
279
275
  validation_key platform_specific_path("/etc/chef/validation.pem")
280
276
  validation_client_name "chef-validator"
281
- web_ui_client_name "chef-webui"
282
- web_ui_key "/etc/chef/webui.pem"
283
- web_ui_admin_user_name "admin"
284
- web_ui_admin_default_password "p@ssw0rd1"
285
277
 
286
- # Server Signing CA
287
- #
288
- # In truth, these don't even have to change
289
- signing_ca_cert "/var/chef/ca/cert.pem"
290
- signing_ca_key "/var/chef/ca/key.pem"
291
- signing_ca_user nil
292
- signing_ca_group nil
293
- signing_ca_country "US"
294
- signing_ca_state "Washington"
295
- signing_ca_location "Seattle"
296
- signing_ca_org "Chef User"
297
- signing_ca_domain "opensource.opscode.com"
298
- signing_ca_email "opensource-cert@opscode.com"
278
+ # Zypper package provider gpg checks. Set to true to enable package
279
+ # gpg signature checking. This will be default in the
280
+ # future. Setting to false disables the warnings.
281
+ # Leaving this set to nil or false is a security hazard!
282
+ zypper_check_gpg nil
299
283
 
300
284
  # Report Handlers
301
285
  report_handlers []
@@ -337,12 +321,26 @@ class Chef
337
321
 
338
322
  fatal_windows_admin_check false
339
323
  else
340
- user_valid_regex [ /^([-a-zA-Z0-9_.]+)$/, /^\d+$/ ]
341
- group_valid_regex [ /^([-a-zA-Z0-9_.\\ ]+)$/, /^\d+$/ ]
324
+ user_valid_regex [ /^([-a-zA-Z0-9_.]+[\\@]?[-a-zA-Z0-9_.]+)$/, /^\d+$/ ]
325
+ group_valid_regex [ /^([-a-zA-Z0-9_.\\@^ ]+)$/, /^\d+$/ ]
342
326
  end
343
327
 
344
328
  # returns a platform specific path to the user home dir
345
329
  windows_home_path = ENV['SYSTEMDRIVE'] + ENV['HOMEPATH'] if ENV['SYSTEMDRIVE'] && ENV['HOMEPATH']
346
330
  user_home(ENV['HOME'] || windows_home_path || ENV['USERPROFILE'])
331
+
332
+ # Enable file permission fixup for selinux. Fixup will be done
333
+ # only if selinux is enabled in the system.
334
+ enable_selinux_file_permission_fixup true
335
+
336
+ # Use atomic updates (i.e. move operation) while updating contents
337
+ # of the files resources. When set to false copy operation is
338
+ # used to update files.
339
+ file_atomic_update true
340
+
341
+ # If false file staging is will be done via tempfiles that are
342
+ # created under ENV['TMP'] otherwise tempfiles will be created in
343
+ # the directory that files are going to reside.
344
+ file_staging_uses_destdir false
347
345
  end
348
346
  end