chef 12.18.31 → 13.0.118

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 (611) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -11
  3. data/README.md +13 -13
  4. data/Rakefile +1 -19
  5. data/VERSION +1 -1
  6. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
  7. data/acceptance/Gemfile +8 -5
  8. data/acceptance/Gemfile.lock +90 -81
  9. data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
  10. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
  11. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
  12. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
  13. data/chef-universal-mingw32.gemspec +2 -3
  14. data/chef.gemspec +8 -7
  15. data/lib/chef/api_client.rb +8 -15
  16. data/lib/chef/api_client_v1.rb +9 -11
  17. data/lib/chef/application/apply.rb +8 -10
  18. data/lib/chef/application/client.rb +1 -1
  19. data/lib/chef/application/exit_code.rb +11 -82
  20. data/lib/chef/application/knife.rb +2 -2
  21. data/lib/chef/application/solo.rb +0 -1
  22. data/lib/chef/application/windows_service.rb +36 -37
  23. data/lib/chef/application/windows_service_manager.rb +1 -1
  24. data/lib/chef/application.rb +15 -25
  25. data/lib/chef/audit/audit_event_proxy.rb +2 -2
  26. data/lib/chef/audit/control_group_data.rb +1 -1
  27. data/lib/chef/blacklist.rb +81 -0
  28. data/lib/chef/chef_class.rb +1 -0
  29. data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
  30. data/lib/chef/chef_fs/command_line.rb +15 -16
  31. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
  32. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
  33. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
  34. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  35. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
  36. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
  37. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
  38. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
  39. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
  40. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
  41. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  42. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
  43. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
  44. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
  45. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
  46. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
  47. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
  48. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
  49. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
  50. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
  51. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
  52. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
  53. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
  54. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
  55. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
  56. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
  57. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
  58. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
  59. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
  60. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
  61. data/lib/chef/chef_fs/file_system.rb +1 -1
  62. data/lib/chef/chef_fs/parallelizer.rb +9 -11
  63. data/lib/chef/client.rb +47 -11
  64. data/lib/chef/config_fetcher.rb +4 -4
  65. data/lib/chef/constants.rb +1 -1
  66. data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
  67. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  68. data/lib/chef/cookbook/gem_installer.rb +10 -6
  69. data/lib/chef/cookbook/manifest_v0.rb +68 -0
  70. data/lib/chef/cookbook/manifest_v2.rb +41 -0
  71. data/lib/chef/cookbook/metadata.rb +25 -134
  72. data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
  73. data/lib/chef/cookbook/synchronizer.rb +24 -21
  74. data/lib/chef/cookbook/syntax_check.rb +1 -1
  75. data/lib/chef/cookbook_manifest.rb +91 -65
  76. data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
  77. data/lib/chef/cookbook_uploader.rb +1 -1
  78. data/lib/chef/cookbook_version.rb +69 -157
  79. data/lib/chef/data_bag.rb +1 -7
  80. data/lib/chef/data_bag_item.rb +5 -10
  81. data/lib/chef/data_collector/messages.rb +2 -0
  82. data/lib/chef/data_collector/resource_report.rb +32 -4
  83. data/lib/chef/data_collector.rb +3 -4
  84. data/lib/chef/decorator/unchain.rb +0 -16
  85. data/lib/chef/decorator.rb +1 -1
  86. data/lib/chef/deprecated.rb +53 -19
  87. data/lib/chef/dsl/audit.rb +2 -2
  88. data/lib/chef/dsl/declare_resource.rb +11 -17
  89. data/lib/chef/dsl/platform_introspection.rb +29 -31
  90. data/lib/chef/dsl/reboot_pending.rb +1 -1
  91. data/lib/chef/dsl/recipe.rb +1 -4
  92. data/lib/chef/dsl/resources.rb +4 -13
  93. data/lib/chef/encrypted_data_bag_item.rb +2 -2
  94. data/lib/chef/environment.rb +9 -16
  95. data/lib/chef/event_dispatch/base.rb +16 -0
  96. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  97. data/lib/chef/exceptions.rb +6 -10
  98. data/lib/chef/file_access_control/unix.rb +14 -14
  99. data/lib/chef/file_access_control/windows.rb +1 -1
  100. data/lib/chef/formatters/error_description.rb +18 -1
  101. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
  102. data/lib/chef/formatters/error_mapper.rb +6 -6
  103. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
  104. data/lib/chef/http/api_versions.rb +54 -0
  105. data/lib/chef/http/authenticator.rb +15 -6
  106. data/lib/chef/http/json_output.rb +4 -1
  107. data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
  108. data/lib/chef/http/validate_content_length.rb +2 -2
  109. data/lib/chef/http.rb +39 -0
  110. data/lib/chef/json_compat.rb +7 -103
  111. data/lib/chef/key.rb +5 -10
  112. data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
  113. data/lib/chef/knife/bootstrap.rb +6 -0
  114. data/lib/chef/knife/configure.rb +1 -3
  115. data/lib/chef/knife/configure_client.rb +1 -3
  116. data/lib/chef/knife/cookbook_create.rb +1 -434
  117. data/lib/chef/knife/cookbook_download.rb +3 -4
  118. data/lib/chef/knife/cookbook_show.rb +7 -3
  119. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  120. data/lib/chef/knife/core/bootstrap_context.rb +8 -7
  121. data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
  122. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  123. data/lib/chef/knife/core/status_presenter.rb +1 -1
  124. data/lib/chef/knife/core/subcommand_loader.rb +2 -32
  125. data/lib/chef/knife/core/ui.rb +20 -27
  126. data/lib/chef/knife/data_bag_create.rb +6 -4
  127. data/lib/chef/knife/data_bag_secret_options.rb +1 -1
  128. data/lib/chef/knife/deps.rb +32 -34
  129. data/lib/chef/knife/edit.rb +1 -1
  130. data/lib/chef/knife/help.rb +1 -1
  131. data/lib/chef/knife/list.rb +1 -1
  132. data/lib/chef/knife/search.rb +9 -20
  133. data/lib/chef/knife/ssh.rb +62 -36
  134. data/lib/chef/knife/ssl_check.rb +1 -1
  135. data/lib/chef/knife/user_delete.rb +1 -1
  136. data/lib/chef/knife/xargs.rb +1 -1
  137. data/lib/chef/knife.rb +6 -7
  138. data/lib/chef/mash.rb +1 -1
  139. data/lib/chef/mixin/create_path.rb +3 -5
  140. data/lib/chef/mixin/from_file.rb +2 -2
  141. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  142. data/lib/chef/mixin/notifying_block.rb +7 -9
  143. data/lib/chef/mixin/params_validate.rb +9 -8
  144. data/lib/chef/mixin/path_sanity.rb +17 -19
  145. data/lib/chef/mixin/securable.rb +1 -1
  146. data/lib/chef/mixin/shell_out.rb +33 -29
  147. data/lib/chef/mixin/unformatter.rb +2 -2
  148. data/lib/chef/mixin/uris.rb +4 -6
  149. data/lib/chef/mixin/versioned_api.rb +84 -0
  150. data/lib/chef/mixin/which.rb +25 -8
  151. data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
  152. data/lib/chef/mixin/xml_escape.rb +3 -5
  153. data/lib/chef/mixins.rb +0 -1
  154. data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
  155. data/lib/chef/node/attribute.rb +9 -32
  156. data/lib/chef/node/attribute_collections.rb +1 -19
  157. data/lib/chef/node/common_api.rb +5 -7
  158. data/lib/chef/node/immutable_collections.rb +42 -38
  159. data/lib/chef/node/mixin/immutablize_array.rb +1 -1
  160. data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
  161. data/lib/chef/node.rb +21 -20
  162. data/lib/chef/node_map.rb +2 -5
  163. data/lib/chef/org.rb +10 -17
  164. data/lib/chef/platform/provider_mapping.rb +2 -169
  165. data/lib/chef/platform/query_helpers.rb +1 -1
  166. data/lib/chef/platform/rebooter.rb +1 -2
  167. data/lib/chef/policy_builder/expand_node_object.rb +3 -29
  168. data/lib/chef/policy_builder/policyfile.rb +8 -6
  169. data/lib/chef/property.rb +66 -80
  170. data/lib/chef/provider/apt_repository.rb +6 -10
  171. data/lib/chef/provider/apt_update.rb +1 -7
  172. data/lib/chef/provider/batch.rb +1 -1
  173. data/lib/chef/provider/breakpoint.rb +2 -2
  174. data/lib/chef/provider/cookbook_file.rb +3 -9
  175. data/lib/chef/provider/cron.rb +42 -60
  176. data/lib/chef/provider/deploy/revision.rb +3 -5
  177. data/lib/chef/provider/deploy.rb +82 -88
  178. data/lib/chef/provider/directory.rb +33 -37
  179. data/lib/chef/provider/dsc_resource.rb +23 -11
  180. data/lib/chef/provider/dsc_script.rb +1 -5
  181. data/lib/chef/provider/env/windows.rb +5 -1
  182. data/lib/chef/provider/env.rb +32 -30
  183. data/lib/chef/provider/erl_call.rb +15 -47
  184. data/lib/chef/provider/execute.rb +7 -8
  185. data/lib/chef/provider/file.rb +49 -61
  186. data/lib/chef/provider/git.rb +56 -60
  187. data/lib/chef/provider/group.rb +1 -7
  188. data/lib/chef/provider/http_request.rb +37 -41
  189. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  190. data/lib/chef/provider/ifconfig.rb +0 -6
  191. data/lib/chef/provider/launchd.rb +6 -2
  192. data/lib/chef/provider/link.rb +51 -55
  193. data/lib/chef/provider/log.rb +3 -7
  194. data/lib/chef/provider/lwrp_base.rb +0 -9
  195. data/lib/chef/provider/mdadm.rb +25 -33
  196. data/lib/chef/provider/mount/aix.rb +2 -2
  197. data/lib/chef/provider/mount/mount.rb +2 -2
  198. data/lib/chef/provider/mount.rb +1 -5
  199. data/lib/chef/provider/noop.rb +1 -1
  200. data/lib/chef/provider/ohai.rb +1 -7
  201. data/lib/chef/provider/osx_profile.rb +24 -29
  202. data/lib/chef/provider/package/aix.rb +55 -53
  203. data/lib/chef/provider/package/apt.rb +15 -13
  204. data/lib/chef/provider/package/cab.rb +48 -20
  205. data/lib/chef/provider/package/chocolatey.rb +9 -10
  206. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  207. data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
  208. data/lib/chef/provider/package/dnf/version.rb +1 -1
  209. data/lib/chef/provider/package/dnf.rb +21 -19
  210. data/lib/chef/provider/package/dpkg.rb +8 -9
  211. data/lib/chef/provider/package/freebsd/base.rb +10 -10
  212. data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
  213. data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
  214. data/lib/chef/provider/package/freebsd/port.rb +7 -7
  215. data/lib/chef/provider/package/homebrew.rb +11 -10
  216. data/lib/chef/provider/package/ips.rb +18 -24
  217. data/lib/chef/provider/package/macports.rb +23 -23
  218. data/lib/chef/provider/package/msu.rb +11 -12
  219. data/lib/chef/provider/package/openbsd.rb +25 -22
  220. data/lib/chef/provider/package/pacman.rb +16 -17
  221. data/lib/chef/provider/package/paludis.rb +26 -27
  222. data/lib/chef/provider/package/portage.rb +22 -23
  223. data/lib/chef/provider/package/powershell.rb +17 -17
  224. data/lib/chef/provider/package/rpm.rb +25 -26
  225. data/lib/chef/provider/package/rubygems.rb +64 -62
  226. data/lib/chef/provider/package/smartos.rb +16 -16
  227. data/lib/chef/provider/package/solaris.rb +44 -45
  228. data/lib/chef/provider/package/windows/exe.rb +6 -6
  229. data/lib/chef/provider/package/windows/msi.rb +7 -7
  230. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
  231. data/lib/chef/provider/package/windows.rb +3 -3
  232. data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
  233. data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
  234. data/lib/chef/provider/package/yum.rb +319 -269
  235. data/lib/chef/provider/package/zypper.rb +10 -20
  236. data/lib/chef/provider/package.rb +71 -63
  237. data/lib/chef/provider/powershell_script.rb +15 -7
  238. data/lib/chef/provider/reboot.rb +10 -14
  239. data/lib/chef/provider/registry_key.rb +39 -43
  240. data/lib/chef/provider/remote_directory.rb +3 -15
  241. data/lib/chef/provider/remote_file.rb +3 -9
  242. data/lib/chef/provider/route.rb +1 -7
  243. data/lib/chef/provider/ruby_block.rb +4 -8
  244. data/lib/chef/provider/script.rb +42 -6
  245. data/lib/chef/provider/service/aix.rb +1 -5
  246. data/lib/chef/provider/service/debian.rb +15 -21
  247. data/lib/chef/provider/service/freebsd.rb +0 -1
  248. data/lib/chef/provider/service/gentoo.rb +0 -1
  249. data/lib/chef/provider/service/init.rb +0 -1
  250. data/lib/chef/provider/service/insserv.rb +2 -2
  251. data/lib/chef/provider/service/openbsd.rb +0 -1
  252. data/lib/chef/provider/service/redhat.rb +2 -2
  253. data/lib/chef/provider/service/simple.rb +0 -5
  254. data/lib/chef/provider/service/solaris.rb +5 -4
  255. data/lib/chef/provider/service/systemd.rb +1 -1
  256. data/lib/chef/provider/service/upstart.rb +10 -12
  257. data/lib/chef/provider/service/windows.rb +1 -5
  258. data/lib/chef/provider/service.rb +51 -58
  259. data/lib/chef/provider/subversion.rb +40 -46
  260. data/lib/chef/provider/systemd_unit.rb +2 -0
  261. data/lib/chef/provider/template/content.rb +24 -1
  262. data/lib/chef/provider/template.rb +3 -9
  263. data/lib/chef/provider/user/dscl.rb +3 -3
  264. data/lib/chef/provider/user/linux.rb +6 -5
  265. data/lib/chef/provider/user/pw.rb +4 -10
  266. data/lib/chef/provider/user/solaris.rb +2 -2
  267. data/lib/chef/provider/user/useradd.rb +5 -5
  268. data/lib/chef/provider/user.rb +43 -59
  269. data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
  270. data/lib/chef/provider/windows_task.rb +418 -0
  271. data/lib/chef/provider/yum_repository.rb +3 -6
  272. data/lib/chef/provider.rb +63 -115
  273. data/lib/chef/provider_resolver.rb +8 -34
  274. data/lib/chef/providers.rb +1 -1
  275. data/lib/chef/recipe.rb +9 -1
  276. data/lib/chef/resource/action_class.rb +13 -17
  277. data/lib/chef/resource/apt_repository.rb +0 -1
  278. data/lib/chef/resource/apt_update.rb +3 -1
  279. data/lib/chef/resource/chef_gem.rb +4 -11
  280. data/lib/chef/resource/chocolatey_package.rb +4 -1
  281. data/lib/chef/resource/dnf_package.rb +6 -3
  282. data/lib/chef/resource/dsc_resource.rb +9 -1
  283. data/lib/chef/resource/execute.rb +66 -19
  284. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
  285. data/lib/chef/resource/file/verification.rb +2 -7
  286. data/lib/chef/resource/freebsd_package.rb +1 -1
  287. data/lib/chef/resource/gem_package.rb +16 -2
  288. data/lib/chef/resource/launchd.rb +3 -3
  289. data/lib/chef/resource/lwrp_base.rb +0 -2
  290. data/lib/chef/resource/mount.rb +5 -12
  291. data/lib/chef/resource/package.rb +2 -2
  292. data/lib/chef/resource/powershell_script.rb +1 -1
  293. data/lib/chef/resource/registry_key.rb +1 -1
  294. data/lib/chef/resource/script.rb +8 -34
  295. data/lib/chef/resource/service.rb +15 -13
  296. data/lib/chef/resource/systemd_unit.rb +5 -0
  297. data/lib/chef/resource/user/aix_user.rb +1 -1
  298. data/lib/chef/resource/user/dscl_user.rb +1 -1
  299. data/lib/chef/resource/user/linux_user.rb +1 -10
  300. data/lib/chef/resource/user/pw_user.rb +1 -1
  301. data/lib/chef/resource/user/solaris_user.rb +1 -1
  302. data/lib/chef/resource/user/windows_user.rb +1 -1
  303. data/lib/chef/resource/user.rb +1 -19
  304. data/lib/chef/resource/windows_package.rb +4 -1
  305. data/lib/chef/resource/windows_task.rb +237 -0
  306. data/lib/chef/resource/yum_package.rb +13 -4
  307. data/lib/chef/resource/yum_repository.rb +0 -1
  308. data/lib/chef/resource/zypper_package.rb +2 -0
  309. data/lib/chef/resource.rb +90 -202
  310. data/lib/chef/resource_builder.rb +1 -65
  311. data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
  312. data/lib/chef/resource_collection/resource_list.rb +6 -0
  313. data/lib/chef/resource_collection/resource_set.rb +44 -17
  314. data/lib/chef/resource_collection.rb +10 -0
  315. data/lib/chef/resource_reporter.rb +1 -1
  316. data/lib/chef/resource_resolver.rb +1 -25
  317. data/lib/chef/resources.rb +1 -1
  318. data/lib/chef/role.rb +0 -6
  319. data/lib/chef/run_context/cookbook_compiler.rb +49 -5
  320. data/lib/chef/run_context.rb +4 -25
  321. data/lib/chef/run_list/run_list_item.rb +1 -1
  322. data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
  323. data/lib/chef/search/query.rb +26 -31
  324. data/lib/chef/server_api.rb +2 -0
  325. data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
  326. data/lib/chef/shell/ext.rb +3 -3
  327. data/lib/chef/shell/shell_session.rb +14 -4
  328. data/lib/chef/shell.rb +32 -7
  329. data/lib/chef/user.rb +9 -16
  330. data/lib/chef/user_v1.rb +9 -16
  331. data/lib/chef/util/diff.rb +1 -1
  332. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
  333. data/lib/chef/util/selinux.rb +1 -1
  334. data/lib/chef/util/windows/net_group.rb +18 -30
  335. data/lib/chef/util/windows/net_use.rb +7 -11
  336. data/lib/chef/util/windows/net_user.rb +12 -18
  337. data/lib/chef/util/windows/volume.rb +9 -15
  338. data/lib/chef/version.rb +1 -1
  339. data/lib/chef/version_class.rb +1 -1
  340. data/lib/chef/win32/api/file.rb +25 -31
  341. data/lib/chef/win32/api/installer.rb +2 -2
  342. data/lib/chef/win32/api.rb +4 -6
  343. data/lib/chef/win32/file.rb +4 -6
  344. data/lib/chef/win32/registry.rb +9 -9
  345. data/lib/chef/win32/security/acl.rb +2 -2
  346. data/lib/chef/win32/security/sid.rb +5 -0
  347. data/lib/chef/win32/security.rb +2 -2
  348. data/lib/chef/win32/unicode.rb +2 -2
  349. data/lib/chef/win32/version.rb +1 -1
  350. data/lib/chef.rb +1 -2
  351. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
  352. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  353. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  354. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  355. data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
  356. data/spec/data/lwrp/resources/buck_passer.rb +5 -0
  357. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
  358. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
  359. data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
  360. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
  361. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
  362. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
  363. data/spec/data/prefer_metadata_json/metadata.json +51 -0
  364. data/spec/data/prefer_metadata_json/metadata.rb +6 -0
  365. data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
  366. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
  367. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
  368. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
  369. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
  370. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
  371. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
  372. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
  373. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
  374. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
  375. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
  376. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
  377. data/spec/data/shef-config.rb +11 -10
  378. data/spec/functional/knife/ssh_spec.rb +34 -6
  379. data/spec/functional/rebooter_spec.rb +1 -0
  380. data/spec/functional/resource/bash_spec.rb +11 -45
  381. data/spec/functional/resource/batch_spec.rb +5 -1
  382. data/spec/functional/resource/cron_spec.rb +2 -2
  383. data/spec/functional/resource/dsc_script_spec.rb +2 -4
  384. data/spec/functional/resource/execute_spec.rb +17 -0
  385. data/spec/functional/resource/link_spec.rb +3 -3
  386. data/spec/functional/resource/template_spec.rb +33 -0
  387. data/spec/functional/resource/user/dscl_spec.rb +2 -4
  388. data/spec/functional/root_alias_spec.rb +78 -0
  389. data/spec/functional/shell_spec.rb +38 -40
  390. data/spec/integration/client/client_spec.rb +109 -16
  391. data/spec/integration/client/exit_code_spec.rb +1 -105
  392. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
  393. data/spec/integration/knife/cookbook_download_spec.rb +0 -24
  394. data/spec/integration/knife/cookbook_show_spec.rb +12 -23
  395. data/spec/integration/knife/deps_spec.rb +5 -9
  396. data/spec/integration/knife/search_node_spec.rb +39 -0
  397. data/spec/integration/knife/serve_spec.rb +58 -22
  398. data/spec/integration/knife/upload_spec.rb +3 -11
  399. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
  400. data/spec/integration/recipes/notifies_spec.rb +60 -0
  401. data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
  402. data/spec/integration/recipes/resource_action_spec.rb +37 -30
  403. data/spec/spec_helper.rb +7 -0
  404. data/spec/support/chef_helpers.rb +5 -7
  405. data/spec/support/platform_helpers.rb +10 -3
  406. data/spec/support/platforms/prof/gc.rb +4 -6
  407. data/spec/support/shared/context/client.rb +9 -2
  408. data/spec/support/shared/functional/execute_resource.rb +150 -0
  409. data/spec/support/shared/functional/windows_script.rb +74 -4
  410. data/spec/support/shared/integration/knife_support.rb +1 -1
  411. data/spec/support/shared/unit/execute_resource.rb +37 -9
  412. data/spec/support/shared/unit/provider/file.rb +10 -0
  413. data/spec/support/shared/unit/script_resource.rb +1 -9
  414. data/spec/unit/application/exit_code_spec.rb +4 -89
  415. data/spec/unit/application_spec.rb +39 -29
  416. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
  417. data/spec/unit/client_spec.rb +72 -31
  418. data/spec/unit/config_fetcher_spec.rb +2 -2
  419. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
  420. data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
  421. data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
  422. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
  423. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
  424. data/spec/unit/cookbook/metadata_spec.rb +29 -108
  425. data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
  426. data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
  427. data/spec/unit/cookbook_loader_spec.rb +17 -19
  428. data/spec/unit/cookbook_manifest_spec.rb +12 -44
  429. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
  430. data/spec/unit/cookbook_spec.rb +10 -14
  431. data/spec/unit/cookbook_uploader_spec.rb +1 -1
  432. data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
  433. data/spec/unit/cookbook_version_spec.rb +19 -128
  434. data/spec/unit/data_bag_item_spec.rb +4 -0
  435. data/spec/unit/data_collector/messages_spec.rb +137 -0
  436. data/spec/unit/data_collector/resource_report_spec.rb +145 -0
  437. data/spec/unit/deprecation_spec.rb +0 -14
  438. data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
  439. data/spec/unit/formatters/error_description_spec.rb +52 -7
  440. data/spec/unit/http/api_versions_spec.rb +79 -0
  441. data/spec/unit/http/authenticator_spec.rb +20 -0
  442. data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
  443. data/spec/unit/json_compat_spec.rb +0 -32
  444. data/spec/unit/knife/bootstrap_spec.rb +34 -0
  445. data/spec/unit/knife/configure_client_spec.rb +0 -2
  446. data/spec/unit/knife/cookbook_create_spec.rb +1 -220
  447. data/spec/unit/knife/cookbook_download_spec.rb +46 -28
  448. data/spec/unit/knife/cookbook_show_spec.rb +42 -9
  449. data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
  450. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
  451. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
  452. data/spec/unit/knife/core/ui_spec.rb +21 -11
  453. data/spec/unit/knife/data_bag_create_spec.rb +65 -45
  454. data/spec/unit/knife/ssh_spec.rb +34 -36
  455. data/spec/unit/knife_spec.rb +2 -2
  456. data/spec/unit/lwrp_spec.rb +38 -127
  457. data/spec/unit/mixin/path_sanity_spec.rb +7 -7
  458. data/spec/unit/mixin/shell_out_spec.rb +18 -84
  459. data/spec/unit/mixin/versioned_api_spec.rb +128 -0
  460. data/spec/unit/mixin/which.rb +160 -0
  461. data/spec/unit/node/attribute_spec.rb +65 -33
  462. data/spec/unit/node/immutable_collections_spec.rb +104 -1
  463. data/spec/unit/node_map_spec.rb +1 -23
  464. data/spec/unit/node_spec.rb +81 -98
  465. data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
  466. data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
  467. data/spec/unit/property/validation_spec.rb +51 -69
  468. data/spec/unit/property_spec.rb +105 -125
  469. data/spec/unit/provider/apt_repository_spec.rb +33 -27
  470. data/spec/unit/provider/cron_spec.rb +15 -39
  471. data/spec/unit/provider/deploy_spec.rb +1 -1
  472. data/spec/unit/provider/directory_spec.rb +10 -0
  473. data/spec/unit/provider/dsc_resource_spec.rb +175 -0
  474. data/spec/unit/provider/erl_call_spec.rb +5 -13
  475. data/spec/unit/provider/execute_spec.rb +3 -14
  476. data/spec/unit/provider/launchd_spec.rb +2 -2
  477. data/spec/unit/provider/package/aix_spec.rb +22 -22
  478. data/spec/unit/provider/package/apt_spec.rb +37 -27
  479. data/spec/unit/provider/package/cab_spec.rb +59 -5
  480. data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
  481. data/spec/unit/provider/package/dpkg_spec.rb +16 -16
  482. data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
  483. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
  484. data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
  485. data/spec/unit/provider/package/homebrew_spec.rb +9 -9
  486. data/spec/unit/provider/package/ips_spec.rb +37 -31
  487. data/spec/unit/provider/package/macports_spec.rb +10 -10
  488. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  489. data/spec/unit/provider/package/pacman_spec.rb +6 -6
  490. data/spec/unit/provider/package/paludis_spec.rb +7 -7
  491. data/spec/unit/provider/package/portage_spec.rb +6 -7
  492. data/spec/unit/provider/package/rpm_spec.rb +23 -23
  493. data/spec/unit/provider/package/rubygems_spec.rb +135 -46
  494. data/spec/unit/provider/package/solaris_spec.rb +15 -15
  495. data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
  496. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
  497. data/spec/unit/provider/package/windows_spec.rb +2 -1
  498. data/spec/unit/provider/package/yum_spec.rb +58 -50
  499. data/spec/unit/provider/package/zypper_spec.rb +54 -97
  500. data/spec/unit/provider/package_spec.rb +8 -0
  501. data/spec/unit/provider/powershell_script_spec.rb +14 -4
  502. data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
  503. data/spec/unit/provider/route_spec.rb +7 -1
  504. data/spec/unit/provider/script_spec.rb +49 -6
  505. data/spec/unit/provider/service/debian_service_spec.rb +14 -20
  506. data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
  507. data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
  508. data/spec/unit/provider/subversion_spec.rb +2 -2
  509. data/spec/unit/provider/user/linux_spec.rb +5 -43
  510. data/spec/unit/provider/user/pw_spec.rb +7 -27
  511. data/spec/unit/provider/windows_task_spec.rb +392 -0
  512. data/spec/unit/provider_resolver_spec.rb +0 -1
  513. data/spec/unit/provider_spec.rb +10 -3
  514. data/spec/unit/recipe_spec.rb +3 -172
  515. data/spec/unit/resource/chef_gem_spec.rb +16 -62
  516. data/spec/unit/resource/conditional_spec.rb +4 -4
  517. data/spec/unit/resource/cookbook_file_spec.rb +2 -2
  518. data/spec/unit/resource/cron_spec.rb +1 -1
  519. data/spec/unit/resource/deploy_spec.rb +4 -4
  520. data/spec/unit/resource/directory_spec.rb +2 -2
  521. data/spec/unit/resource/dsc_resource_spec.rb +6 -0
  522. data/spec/unit/resource/env_spec.rb +1 -1
  523. data/spec/unit/resource/execute_spec.rb +215 -1
  524. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
  525. data/spec/unit/resource/file/verification_spec.rb +8 -14
  526. data/spec/unit/resource/file_spec.rb +3 -3
  527. data/spec/unit/resource/freebsd_package_spec.rb +2 -2
  528. data/spec/unit/resource/group_spec.rb +2 -2
  529. data/spec/unit/resource/ifconfig_spec.rb +1 -1
  530. data/spec/unit/resource/link_spec.rb +2 -2
  531. data/spec/unit/resource/mdadm_spec.rb +1 -1
  532. data/spec/unit/resource/mount_spec.rb +3 -3
  533. data/spec/unit/resource/ohai_spec.rb +1 -1
  534. data/spec/unit/resource/package_spec.rb +14 -4
  535. data/spec/unit/resource/registry_key_spec.rb +2 -2
  536. data/spec/unit/resource/remote_directory_spec.rb +2 -2
  537. data/spec/unit/resource/remote_file_spec.rb +2 -2
  538. data/spec/unit/resource/route_spec.rb +1 -1
  539. data/spec/unit/resource/scm_spec.rb +2 -2
  540. data/spec/unit/resource/script_spec.rb +1 -1
  541. data/spec/unit/resource/service_spec.rb +25 -5
  542. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  543. data/spec/unit/resource/template_spec.rb +2 -2
  544. data/spec/unit/resource/user_spec.rb +6 -6
  545. data/spec/unit/resource/windows_task_spec.rb +213 -0
  546. data/spec/unit/resource/yum_package_spec.rb +42 -1
  547. data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
  548. data/spec/unit/resource_collection_spec.rb +4 -3
  549. data/spec/unit/resource_reporter_spec.rb +6 -6
  550. data/spec/unit/resource_spec.rb +55 -71
  551. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
  552. data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
  553. data/spec/unit/runner_spec.rb +10 -28
  554. data/spec/unit/search/query_spec.rb +32 -34
  555. data/spec/unit/server_api_versions_spec.rb +44 -0
  556. data/spec/unit/shell/shell_session_spec.rb +33 -2
  557. data/spec/unit/util/selinux_spec.rb +3 -14
  558. data/spec/unit/win32/error_spec.rb +67 -0
  559. data/spec/unit/win32/security_spec.rb +66 -0
  560. data/tasks/bundle.rb +36 -52
  561. data/tasks/changelog.rb +1 -1
  562. data/tasks/dependencies.rb +54 -52
  563. data/tasks/version.rb +41 -0
  564. metadata +91 -76
  565. data/lib/chef/deprecation/mixin/template.rb +0 -48
  566. data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
  567. data/lib/chef/deprecation/provider/file.rb +0 -198
  568. data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
  569. data/lib/chef/deprecation/provider/remote_file.rb +0 -85
  570. data/lib/chef/deprecation/provider/template.rb +0 -63
  571. data/lib/chef/dsl/method_missing.rb +0 -75
  572. data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
  573. data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
  574. data/lib/chef/mixin/command/unix.rb +0 -220
  575. data/lib/chef/mixin/command/windows.rb +0 -71
  576. data/lib/chef/mixin/command.rb +0 -194
  577. data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
  578. data/lib/chef/provider/package/easy_install.rb +0 -135
  579. data/lib/chef/rest.rb +0 -210
  580. data/lib/chef/shell_out.rb +0 -13
  581. data/lib/chef/tasks/chef_repo.rake +0 -200
  582. data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
  583. data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
  584. data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
  585. data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
  586. data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
  587. data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
  588. data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
  589. data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
  590. data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
  591. data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
  592. data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
  593. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
  594. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
  595. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
  596. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
  597. data/spec/functional/rest_spec.rb +0 -95
  598. data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
  599. data/spec/unit/lib_backcompat_spec.rb +0 -34
  600. data/spec/unit/mixin/command_spec.rb +0 -107
  601. data/spec/unit/platform_spec.rb +0 -242
  602. data/spec/unit/provider/package/easy_install_spec.rb +0 -114
  603. data/spec/unit/resource/easy_install_package_spec.rb +0 -39
  604. data/spec/unit/rest/auth_credentials_spec.rb +0 -292
  605. data/spec/unit/rest_spec.rb +0 -753
  606. data/spec/unit/shell_out_spec.rb +0 -18
  607. data/tasks/bin/bundle-platform +0 -20
  608. data/tasks/bin/bundle-platform.bat +0 -2
  609. data/tasks/bin/bundler_patch.rb +0 -27
  610. data/tasks/bin/gem-version-diff +0 -37
  611. data/tasks/bundle_util.rb +0 -110
@@ -21,442 +21,9 @@ require "chef/knife"
21
21
  class Chef
22
22
  class Knife
23
23
  class CookbookCreate < Knife
24
-
25
- deps do
26
- require "chef/json_compat"
27
- require "uri"
28
- require "fileutils"
29
- end
30
-
31
- banner "knife cookbook create COOKBOOK (options)"
32
-
33
- option :cookbook_path,
34
- :short => "-o PATH",
35
- :long => "--cookbook-path PATH",
36
- :description => "The directory where the cookbook will be created"
37
-
38
- option :readme_format,
39
- :short => "-r FORMAT",
40
- :long => "--readme-format FORMAT",
41
- :description => "Format of the README file, supported formats are 'md' (markdown) and 'rdoc' (rdoc)"
42
-
43
- option :cookbook_license,
44
- :short => "-I LICENSE",
45
- :long => "--license LICENSE",
46
- :description => "License for cookbook, apachev2, gplv2, gplv3, mit or none"
47
-
48
- option :cookbook_copyright,
49
- :short => "-C COPYRIGHT",
50
- :long => "--copyright COPYRIGHT",
51
- :description => "Name of copyright holder"
52
-
53
- option :cookbook_email,
54
- :short => "-m EMAIL",
55
- :long => "--email EMAIL",
56
- :description => "Email address of cookbook maintainer"
57
-
58
24
  def run
59
- Chef::Log.deprecation <<EOF
60
- This command is being deprecated in favor of `chef generate cookbook` and will soon return an error.
61
- Please use `chef generate cookbook` instead of this command.
62
- EOF
63
- self.config = Chef::Config.merge!(config)
64
- if @name_args.length < 1
65
- show_usage
66
- ui.fatal("You must specify a cookbook name")
67
- exit 1
68
- end
69
-
70
- if default_cookbook_path_empty? && parameter_empty?(config[:cookbook_path])
71
- raise ArgumentError, "Default cookbook_path is not specified in the knife.rb config file, and a value to -o is not provided. Nowhere to write the new cookbook to."
72
- end
73
-
74
- cookbook_path = File.expand_path(Array(config[:cookbook_path]).first)
75
- cookbook_name = @name_args.first
76
- copyright = config[:cookbook_copyright] || "YOUR_COMPANY_NAME"
77
- email = config[:cookbook_email] || "YOUR_EMAIL"
78
- license = ((config[:cookbook_license] != "false") && config[:cookbook_license]) || "none"
79
- readme_format = ((config[:readme_format] != "false") && config[:readme_format]) || "md"
80
- create_cookbook(cookbook_path, cookbook_name, copyright, license)
81
- create_readme(cookbook_path, cookbook_name, readme_format)
82
- create_changelog(cookbook_path, cookbook_name)
83
- create_metadata(cookbook_path, cookbook_name, copyright, email, license, readme_format)
84
- end
85
-
86
- def create_cookbook(dir, cookbook_name, copyright, license)
87
- msg("** Creating cookbook #{cookbook_name} in #{dir}")
88
- FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "attributes")}"
89
- FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "recipes")}"
90
- FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "definitions")}"
91
- FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "libraries")}"
92
- FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "resources")}"
93
- FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "providers")}"
94
- FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "files", "default")}"
95
- FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "templates", "default")}"
96
- unless File.exists?(File.join(dir, cookbook_name, "recipes", "default.rb"))
97
- open(File.join(dir, cookbook_name, "recipes", "default.rb"), "w") do |file|
98
- file.puts <<-EOH
99
- #
100
- # Cookbook Name:: #{cookbook_name}
101
- # Recipe:: default
102
- #
103
- # Copyright #{Time.now.year}, #{copyright}
104
- #
105
- EOH
106
- case license
107
- when "apachev2"
108
- file.puts <<-EOH
109
- # Licensed under the Apache License, Version 2.0 (the "License");
110
- # you may not use this file except in compliance with the License.
111
- # You may obtain a copy of the License at
112
- #
113
- # http://www.apache.org/licenses/LICENSE-2.0
114
- #
115
- # Unless required by applicable law or agreed to in writing, software
116
- # distributed under the License is distributed on an "AS IS" BASIS,
117
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
118
- # See the License for the specific language governing permissions and
119
- # limitations under the License.
120
- #
121
- EOH
122
- when "gplv2"
123
- file.puts <<-EOH
124
- # This program is free software; you can redistribute it and/or modify
125
- # it under the terms of the GNU General Public License as published by
126
- # the Free Software Foundation; either version 2 of the License, or
127
- # (at your option) any later version.
128
- #
129
- # This program is distributed in the hope that it will be useful,
130
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
131
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
132
- # GNU General Public License for more details.
133
- #
134
- # You should have received a copy of the GNU General Public License along
135
- # with this program; if not, write to the Free Software Foundation, Inc.,
136
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
137
- #
138
- EOH
139
- when "gplv3"
140
- file.puts <<-EOH
141
- # This program is free software: you can redistribute it and/or modify
142
- # it under the terms of the GNU General Public License as published by
143
- # the Free Software Foundation, either version 3 of the License, or
144
- # (at your option) any later version.
145
- #
146
- # This program is distributed in the hope that it will be useful,
147
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
148
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
149
- # GNU General Public License for more details.
150
- #
151
- # You should have received a copy of the GNU General Public License
152
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
153
- #
154
- EOH
155
- when "mit"
156
- file.puts <<-EOH
157
- # Permission is hereby granted, free of charge, to any person obtaining
158
- # a copy of this software and associated documentation files (the
159
- # "Software"), to deal in the Software without restriction, including
160
- # without limitation the rights to use, copy, modify, merge, publish,
161
- # distribute, sublicense, and/or sell copies of the Software, and to
162
- # permit persons to whom the Software is furnished to do so, subject to
163
- # the following conditions:
164
- #
165
- # The above copyright notice and this permission notice shall be
166
- # included in all copies or substantial portions of the Software.
167
- #
168
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
169
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
170
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
171
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
172
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
173
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
174
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
175
- #
176
- EOH
177
- when "none"
178
- file.puts <<-EOH
179
- # All rights reserved - Do Not Redistribute
180
- #
181
- EOH
182
- end
183
- end
184
- end
185
- end
186
-
187
- def create_changelog(dir, cookbook_name)
188
- msg("** Creating CHANGELOG for cookbook: #{cookbook_name}")
189
- unless File.exists?(File.join(dir, cookbook_name, "CHANGELOG.md"))
190
- open(File.join(dir, cookbook_name, "CHANGELOG.md"), "w") do |file|
191
- file.puts <<-EOH
192
- # #{cookbook_name} CHANGELOG
193
-
194
- This file is used to list changes made in each version of the #{cookbook_name} cookbook.
195
-
196
- ## 0.1.0
197
- - [your_name] - Initial release of #{cookbook_name}
198
-
199
- - - -
200
- Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
201
-
202
- The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown.
203
- EOH
204
- end
205
- end
25
+ Chef::Log.fatal("knife cookbook create has been removed. Please use `chef generate cookbook` from the ChefDK")
206
26
  end
207
-
208
- def create_readme(dir, cookbook_name, readme_format)
209
- msg("** Creating README for cookbook: #{cookbook_name}")
210
- unless File.exist?(File.join(dir, cookbook_name, "README.#{readme_format}"))
211
- open(File.join(dir, cookbook_name, "README.#{readme_format}"), "w") do |file|
212
- case readme_format
213
- when "rdoc"
214
- file.puts <<-EOH
215
- = #{cookbook_name} Cookbook
216
- TODO: Enter the cookbook description here.
217
-
218
- e.g.
219
- This cookbook makes your favorite breakfast sandwich.
220
-
221
- == Requirements
222
- TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
223
-
224
- e.g.
225
- ==== packages
226
- - +toaster+ - #{cookbook_name} needs toaster to brown your bagel.
227
-
228
- == Attributes
229
- TODO: List your cookbook attributes here.
230
-
231
- e.g.
232
- ==== #{cookbook_name}::default
233
- <table>
234
- <tr>
235
- <th>Key</th>
236
- <th>Type</th>
237
- <th>Description</th>
238
- <th>Default</th>
239
- </tr>
240
- <tr>
241
- <td><tt>['#{cookbook_name}']['bacon']</tt></td>
242
- <td>Boolean</td>
243
- <td>whether to include bacon</td>
244
- <td><tt>true</tt></td>
245
- </tr>
246
- </table>
247
-
248
- == Usage
249
- ==== #{cookbook_name}::default
250
- TODO: Write usage instructions for each cookbook.
251
-
252
- e.g.
253
- Just include +#{cookbook_name}+ in your node's +run_list+:
254
-
255
- {
256
- "name":"my_node",
257
- "run_list": [
258
- "recipe[#{cookbook_name}]"
259
- ]
260
- }
261
-
262
- == Contributing
263
- TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
264
-
265
- e.g.
266
- 1. Fork the repository on Github
267
- 2. Create a named feature branch (like `add_component_x`)
268
- 3. Write your change
269
- 4. Write tests for your change (if applicable)
270
- 5. Run the tests, ensuring they all pass
271
- 6. Submit a Pull Request using Github
272
-
273
- == License and Authors
274
- Authors: TODO: List authors
275
- EOH
276
- when "md", "mkd", "txt"
277
- file.puts <<-EOH
278
- # #{cookbook_name} Cookbook
279
-
280
- TODO: Enter the cookbook description here.
281
-
282
- e.g.
283
- This cookbook makes your favorite breakfast sandwich.
284
-
285
- ## Requirements
286
-
287
- TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
288
-
289
- e.g.
290
- ### Platforms
291
-
292
- - SandwichOS
293
-
294
- ### Chef
295
-
296
- - Chef 12.0 or later
297
-
298
- ### Cookbooks
299
-
300
- - `toaster` - #{cookbook_name} needs toaster to brown your bagel.
301
-
302
- ## Attributes
303
-
304
- TODO: List your cookbook attributes here.
305
-
306
- e.g.
307
- ### #{cookbook_name}::default
308
-
309
- <table>
310
- <tr>
311
- <th>Key</th>
312
- <th>Type</th>
313
- <th>Description</th>
314
- <th>Default</th>
315
- </tr>
316
- <tr>
317
- <td><tt>['#{cookbook_name}']['bacon']</tt></td>
318
- <td>Boolean</td>
319
- <td>whether to include bacon</td>
320
- <td><tt>true</tt></td>
321
- </tr>
322
- </table>
323
-
324
- ## Usage
325
-
326
- ### #{cookbook_name}::default
327
-
328
- TODO: Write usage instructions for each cookbook.
329
-
330
- e.g.
331
- Just include `#{cookbook_name}` in your node's `run_list`:
332
-
333
- ```json
334
- {
335
- "name":"my_node",
336
- "run_list": [
337
- "recipe[#{cookbook_name}]"
338
- ]
339
- }
340
- ```
341
-
342
- ## Contributing
343
-
344
- TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
345
-
346
- e.g.
347
- 1. Fork the repository on Github
348
- 2. Create a named feature branch (like `add_component_x`)
349
- 3. Write your change
350
- 4. Write tests for your change (if applicable)
351
- 5. Run the tests, ensuring they all pass
352
- 6. Submit a Pull Request using Github
353
-
354
- ## License and Authors
355
-
356
- Authors: TODO: List authors
357
-
358
- EOH
359
- else
360
- file.puts <<-EOH
361
- #{cookbook_name} Cookbook
362
- #{'=' * "#{cookbook_name} Cookbook".length}
363
- TODO: Enter the cookbook description here.
364
-
365
- e.g.
366
- This cookbook makes your favorite breakfast sandwich.
367
-
368
- Requirements
369
- TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
370
-
371
- e.g.
372
- toaster #{cookbook_name} needs toaster to brown your bagel.
373
-
374
- Attributes
375
- TODO: List your cookbook attributes here.
376
-
377
- #{cookbook_name}
378
- Key Type Description Default
379
- ['#{cookbook_name}']['bacon'] Boolean whether to include bacon true
380
-
381
- Usage
382
- #{cookbook_name}
383
- TODO: Write usage instructions for each cookbook.
384
-
385
- e.g.
386
- Just include `#{cookbook_name}` in your node's `run_list`:
387
-
388
- [code]
389
- {
390
- "name":"my_node",
391
- "run_list": [
392
- "recipe[#{cookbook_name}]"
393
- ]
394
- }
395
- [/code]
396
-
397
- Contributing
398
- TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
399
-
400
- e.g.
401
- 1. Fork the repository on Github
402
- 2. Create a named feature branch (like `add_component_x`)
403
- 3. Write your change
404
- 4. Write tests for your change (if applicable)
405
- 5. Run the tests, ensuring they all pass
406
- 6. Submit a Pull Request using Github
407
-
408
- License and Authors
409
- Authors: TODO: List authors
410
- EOH
411
- end
412
- end
413
- end
414
- end
415
-
416
- def create_metadata(dir, cookbook_name, copyright, email, license, readme_format)
417
- msg("** Creating metadata for cookbook: #{cookbook_name}")
418
-
419
- license_name = case license
420
- when "apachev2"
421
- "Apache 2.0"
422
- when "gplv2"
423
- "GNU Public License 2.0"
424
- when "gplv3"
425
- "GNU Public License 3.0"
426
- when "mit"
427
- "MIT"
428
- when "none"
429
- "All rights reserved"
430
- end
431
-
432
- unless File.exist?(File.join(dir, cookbook_name, "metadata.rb"))
433
- open(File.join(dir, cookbook_name, "metadata.rb"), "w") do |file|
434
- if File.exist?(File.join(dir, cookbook_name, "README.#{readme_format}"))
435
- long_description = "long_description IO.read(File.join(File.dirname(__FILE__), 'README.#{readme_format}'))"
436
- end
437
- file.puts <<-EOH
438
- name '#{cookbook_name}'
439
- maintainer '#{copyright}'
440
- maintainer_email '#{email}'
441
- license '#{license_name}'
442
- description 'Installs/Configures #{cookbook_name}'
443
- #{long_description}
444
- version '0.1.0'
445
- EOH
446
- end
447
- end
448
- end
449
-
450
- private
451
-
452
- def default_cookbook_path_empty?
453
- Chef::Config[:cookbook_path].nil? || Chef::Config[:cookbook_path].empty?
454
- end
455
-
456
- def parameter_empty?(parameter)
457
- parameter.nil? || parameter.empty?
458
- end
459
-
460
27
  end
461
28
  end
462
29
  end
@@ -70,7 +70,7 @@ class Chef
70
70
  ui.info("Downloading #{@cookbook_name} cookbook version #{@version}")
71
71
 
72
72
  cookbook = Chef::CookbookVersion.load(@cookbook_name, @version)
73
- manifest = cookbook.manifest
73
+ manifest = cookbook.cookbook_manifest
74
74
 
75
75
  basedir = File.join(config[:download_directory], "#{@cookbook_name}-#{cookbook.version}")
76
76
  if File.exists?(basedir)
@@ -83,10 +83,9 @@ class Chef
83
83
  end
84
84
  end
85
85
 
86
- Chef::CookbookVersion::COOKBOOK_SEGMENTS.each do |segment|
87
- next unless manifest.has_key?(segment)
86
+ manifest.by_parent_directory.each do |segment, files|
88
87
  ui.info("Downloading #{segment}")
89
- manifest[segment].each do |segment_file|
88
+ files.each do |segment_file|
90
89
  dest = File.join(basedir, segment_file["path"].gsub("/", File::SEPARATOR))
91
90
  Chef::Log.debug("Downloading #{segment_file['path']} to #{dest}")
92
91
  FileUtils.mkdir_p(File.dirname(dest))
@@ -76,9 +76,13 @@ class Chef
76
76
  pretty_print(temp_file.read)
77
77
 
78
78
  when 3 # We are showing a specific part of the cookbook
79
- output(cookbook.manifest[segment])
80
- when 2 # We are showing the whole cookbook data
81
- output(cookbook)
79
+ if segment == "metadata"
80
+ output(cookbook.metadata)
81
+ else
82
+ output(cookbook.files_for(segment))
83
+ end
84
+ when 2 # We are showing the whole cookbook
85
+ output(cookbook.display)
82
86
  when 1 # We are showing the cookbook versions (all of them)
83
87
  env = config[:environment]
84
88
  api_endpoint = env ? "environments/#{env}/cookbooks/#{cookbook_name}" : "cookbooks/#{cookbook_name}"
@@ -161,9 +161,9 @@ class Chef
161
161
  def convert_path(upstream_file)
162
162
  # converts a Windows path (C:\foo) to a mingw path (/c/foo)
163
163
  if ENV["MSYSTEM"] == "MINGW32"
164
- return upstream_file.sub(/^([[:alpha:]]):/, '/\1')
164
+ upstream_file.sub(/^([[:alpha:]]):/, '/\1')
165
165
  else
166
- return Shellwords.escape upstream_file
166
+ Shellwords.escape upstream_file
167
167
  end
168
168
  end
169
169
 
@@ -161,13 +161,14 @@ validation_client_name "#{@chef_config[:validation_client_name]}"
161
161
  end
162
162
 
163
163
  if Chef::Config[:fips]
164
- client_rb << <<-CONFIG
165
- fips true
166
- chef_version = ::Chef::VERSION.split(".")
167
- unless chef_version[0].to_i > 12 || (chef_version[0].to_i == 12 && chef_version[1].to_i >= 8)
168
- raise "FIPS Mode requested but not supported by this client"
169
- end
170
- CONFIG
164
+ client_rb << <<-CONFIG.gsub(/^ {14}/, "")
165
+ fips true
166
+ require "chef/version"
167
+ chef_version = ::Chef::VERSION.split(".")
168
+ unless chef_version[0].to_i > 12 || (chef_version[0].to_i == 12 && chef_version[1].to_i >= 8)
169
+ raise "FIPS Mode requested but not supported by this client"
170
+ end
171
+ CONFIG
171
172
  end
172
173
 
173
174
  client_rb
@@ -131,9 +131,9 @@ class Chef
131
131
 
132
132
  def git_repo?(directory)
133
133
  if File.directory?(File.join(directory, ".git"))
134
- return true
134
+ true
135
135
  elsif File.dirname(directory) == directory
136
- return false
136
+ false
137
137
  else
138
138
  git_repo?(File.dirname(directory))
139
139
  end
@@ -98,7 +98,7 @@ class Chef
98
98
  files.concat gem_files
99
99
  files.uniq! if check_load_path
100
100
 
101
- return files
101
+ files
102
102
  end
103
103
 
104
104
  def latest_gem_specs
@@ -148,7 +148,7 @@ class Chef
148
148
  difference = difference % 3600
149
149
  minutes = (difference / 60).to_i
150
150
  seconds = (difference % 60)
151
- return [hours, minutes, seconds]
151
+ [hours, minutes, seconds]
152
152
  end
153
153
 
154
154
  end
@@ -1,6 +1,6 @@
1
1
  # Author:: Christopher Brown (<cb@chef.io>)
2
2
  # Author:: Daniel DeLeo (<dan@chef.io>)
3
- # Copyright:: Copyright 2009-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2009-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,6 @@ require "chef/version"
20
20
  require "chef/util/path_helper"
21
21
  require "chef/knife/core/gem_glob_loader"
22
22
  require "chef/knife/core/hashed_command_loader"
23
- require "chef/knife/core/custom_manifest_loader"
24
23
 
25
24
  class Chef
26
25
  class Knife
@@ -38,7 +37,6 @@ class Chef
38
37
  #
39
38
  class SubcommandLoader
40
39
  attr_reader :chef_config_dir
41
- attr_reader :env
42
40
 
43
41
  # A small factory method. Eventually, this is the only place
44
42
  # where SubcommandLoader should know about its subclasses, but
@@ -50,9 +48,6 @@ class Chef
50
48
  if autogenerated_manifest?
51
49
  Chef::Log.debug("Using autogenerated hashed command manifest #{plugin_manifest_path}")
52
50
  Knife::SubcommandLoader::HashedCommandLoader.new(chef_config_dir, plugin_manifest)
53
- elsif custom_manifest?
54
- Chef.deprecated(:internal_api, "Using custom manifest #{plugin_manifest_path} is deprecated. Please use a `knife rehash` autogenerated manifest instead.")
55
- Knife::SubcommandLoader::CustomManifestLoader.new(chef_config_dir, plugin_manifest)
56
51
  else
57
52
  Knife::SubcommandLoader::GemGlobLoader.new(chef_config_dir)
58
53
  end
@@ -72,10 +67,6 @@ class Chef
72
67
  plugin_manifest? && plugin_manifest.key?(HashedCommandLoader::KEY)
73
68
  end
74
69
 
75
- def self.custom_manifest?
76
- plugin_manifest? && plugin_manifest.key?("plugins")
77
- end
78
-
79
70
  def self.plugin_manifest
80
71
  Chef::JSONCompat.from_json(File.read(plugin_manifest_path))
81
72
  end
@@ -84,14 +75,8 @@ class Chef
84
75
  Chef::Util::PathHelper.home(".chef", "plugin_manifest.json")
85
76
  end
86
77
 
87
- def initialize(chef_config_dir, env = nil)
78
+ def initialize(chef_config_dir)
88
79
  @chef_config_dir = chef_config_dir
89
-
90
- # Deprecated and un-used instance variable.
91
- @env = env
92
- unless env.nil?
93
- Chef.deprecated(:internal_api, "The env argument to Chef::Knife::SubcommandLoader is deprecated. If you are using env to inject/mock HOME, consider mocking Chef::Util::PathHelper.home instead.")
94
- end
95
80
  end
96
81
 
97
82
  # Load all the sub-commands
@@ -148,21 +133,6 @@ class Chef
148
133
  subcommand_files
149
134
  end
150
135
 
151
- #
152
- # Subclassses should define this themselves. Eventually, this will raise a
153
- # NotImplemented error, but for now, we mimic the behavior the user was likely
154
- # to get in the past.
155
- #
156
- def subcommand_files
157
- Chef.deprecated :internal_api, "Using Chef::Knife::SubcommandLoader directly is deprecated.
158
- Please use Chef::Knife::SubcommandLoader.for_config(chef_config_dir, env)"
159
- @subcommand_files ||= if Chef::Knife::SubcommandLoader.plugin_manifest?
160
- Chef::Knife::SubcommandLoader::CustomManifestLoader.new(chef_config_dir, env).subcommand_files
161
- else
162
- Chef::Knife::SubcommandLoader::GemGlobLoader.new(chef_config_dir, env).subcommand_files
163
- end
164
- end
165
-
166
136
  #
167
137
  # Utility function for finding an element in a hash given an array
168
138
  # of words and a separator. We find the the longest key in the