chef 12.4.3-universal-mingw32 → 12.5.1-universal-mingw32

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 (320) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +21 -25
  3. data/Gemfile +46 -0
  4. data/README.md +4 -4
  5. data/Rakefile +4 -110
  6. data/bin/chef-service-manager +3 -1
  7. data/distro/common/html/knife_cookbook_site.html +18 -18
  8. data/distro/common/man/man1/knife-cookbook-site.1 +11 -11
  9. data/lib/chef.rb +1 -1
  10. data/lib/chef/application.rb +1 -1
  11. data/lib/chef/application/apply.rb +19 -1
  12. data/lib/chef/application/client.rb +11 -5
  13. data/lib/chef/application/knife.rb +2 -2
  14. data/lib/chef/application/solo.rb +1 -1
  15. data/lib/chef/application/windows_service_manager.rb +19 -12
  16. data/lib/chef/chef_class.rb +46 -0
  17. data/lib/chef/chef_fs/config.rb +22 -24
  18. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +3 -1
  19. data/lib/chef/chef_fs/file_pattern.rb +4 -15
  20. data/lib/chef/chef_fs/file_system/acl_dir.rb +3 -4
  21. data/lib/chef/chef_fs/file_system/acls_dir.rb +5 -1
  22. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +0 -5
  23. data/lib/chef/chef_fs/file_system/base_fs_object.rb +5 -2
  24. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +2 -9
  25. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +2 -9
  26. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +10 -17
  27. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +1 -12
  28. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +15 -11
  29. data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +8 -2
  30. data/lib/chef/chef_fs/file_system/cookbook_dir.rb +4 -4
  31. data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +1 -1
  32. data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +3 -11
  33. data/lib/chef/chef_fs/file_system/data_bags_dir.rb +3 -5
  34. data/lib/chef/chef_fs/file_system/environments_dir.rb +1 -1
  35. data/lib/chef/chef_fs/file_system/file_system_entry.rb +7 -4
  36. data/lib/chef/chef_fs/file_system/memory_dir.rb +2 -3
  37. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +15 -0
  38. data/lib/chef/chef_fs/file_system/nodes_dir.rb +1 -1
  39. data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -2
  40. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +4 -9
  41. data/lib/chef/chef_fs/knife.rb +35 -7
  42. data/lib/chef/chef_fs/path_utils.rb +65 -34
  43. data/lib/chef/client.rb +2 -3
  44. data/lib/chef/config.rb +34 -2
  45. data/lib/chef/{mixin/wstring.rb → constants.rb} +9 -13
  46. data/lib/chef/cookbook/metadata.rb +25 -3
  47. data/lib/chef/cookbook/synchronizer.rb +1 -1
  48. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  49. data/lib/chef/cookbook_version.rb +3 -3
  50. data/lib/chef/delayed_evaluator.rb +21 -0
  51. data/lib/chef/deprecation/mixin/template.rb +1 -2
  52. data/lib/chef/deprecation/provider/cookbook_file.rb +1 -1
  53. data/lib/chef/deprecation/provider/file.rb +1 -1
  54. data/lib/chef/deprecation/provider/remote_directory.rb +52 -0
  55. data/lib/chef/deprecation/provider/remote_file.rb +1 -2
  56. data/lib/chef/deprecation/provider/template.rb +1 -1
  57. data/lib/chef/deprecation/warnings.rb +3 -4
  58. data/lib/chef/dsl/reboot_pending.rb +3 -2
  59. data/lib/chef/dsl/recipe.rb +26 -7
  60. data/lib/chef/dsl/resources.rb +2 -2
  61. data/lib/chef/event_dispatch/base.rb +51 -22
  62. data/lib/chef/event_dispatch/dispatcher.rb +21 -6
  63. data/lib/chef/event_dispatch/dsl.rb +64 -0
  64. data/lib/chef/exceptions.rb +28 -1
  65. data/lib/chef/file_content_management/tempfile.rb +1 -1
  66. data/lib/chef/formatters/base.rb +3 -0
  67. data/lib/chef/formatters/doc.rb +56 -6
  68. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +36 -0
  69. data/lib/chef/formatters/minimal.rb +2 -2
  70. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -1
  71. data/lib/chef/http/http_request.rb +1 -1
  72. data/lib/chef/knife.rb +35 -55
  73. data/lib/chef/knife/bootstrap.rb +41 -0
  74. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -0
  75. data/lib/chef/knife/bootstrap/client_builder.rb +16 -0
  76. data/lib/chef/knife/bootstrap/templates/README.md +3 -4
  77. data/lib/chef/knife/bootstrap/templates/chef-full.erb +1 -1
  78. data/lib/chef/knife/cookbook_create.rb +1 -1
  79. data/lib/chef/knife/cookbook_site_download.rb +1 -1
  80. data/lib/chef/knife/cookbook_site_install.rb +1 -1
  81. data/lib/chef/knife/cookbook_site_share.rb +6 -6
  82. data/lib/chef/knife/cookbook_site_unshare.rb +2 -2
  83. data/lib/chef/knife/core/bootstrap_context.rb +12 -4
  84. data/lib/chef/knife/core/custom_manifest_loader.rb +69 -0
  85. data/lib/chef/knife/core/gem_glob_loader.rb +138 -0
  86. data/lib/chef/knife/core/hashed_command_loader.rb +80 -0
  87. data/lib/chef/knife/core/node_presenter.rb +24 -1
  88. data/lib/chef/knife/core/object_loader.rb +1 -0
  89. data/lib/chef/knife/core/subcommand_loader.rb +131 -146
  90. data/lib/chef/knife/node_run_list_remove.rb +12 -1
  91. data/lib/chef/knife/null.rb +10 -0
  92. data/lib/chef/knife/rehash.rb +62 -0
  93. data/lib/chef/knife/search.rb +3 -3
  94. data/lib/chef/knife/ssh.rb +52 -30
  95. data/lib/chef/knife/ssl_check.rb +3 -2
  96. data/lib/chef/knife/user_edit.rb +1 -2
  97. data/lib/chef/local_mode.rb +5 -0
  98. data/lib/chef/log.rb +5 -1
  99. data/lib/chef/mixin/deprecation.rb +8 -8
  100. data/lib/chef/mixin/params_validate.rb +362 -135
  101. data/lib/chef/mixin/template.rb +48 -0
  102. data/lib/chef/mixin/which.rb +1 -1
  103. data/lib/chef/mixin/wide_string.rb +72 -0
  104. data/lib/chef/mixin/windows_architecture_helper.rb +15 -39
  105. data/lib/chef/mixin/windows_env_helper.rb +4 -1
  106. data/lib/chef/monkey_patches/webrick-utils.rb +51 -0
  107. data/lib/chef/monkey_patches/win32/registry.rb +72 -0
  108. data/lib/chef/node.rb +116 -3
  109. data/lib/chef/node_map.rb +2 -2
  110. data/lib/chef/platform/handler_map.rb +0 -5
  111. data/lib/chef/platform/provider_mapping.rb +5 -6
  112. data/lib/chef/platform/query_helpers.rb +46 -4
  113. data/lib/chef/platform/rebooter.rb +1 -1
  114. data/lib/chef/platform/service_helpers.rb +30 -32
  115. data/lib/chef/policy_builder.rb +1 -8
  116. data/lib/chef/policy_builder/dynamic.rb +186 -0
  117. data/lib/chef/policy_builder/expand_node_object.rb +30 -15
  118. data/lib/chef/policy_builder/policyfile.rb +155 -18
  119. data/lib/chef/property.rb +568 -0
  120. data/lib/chef/provider.rb +222 -13
  121. data/lib/chef/provider/batch.rb +8 -0
  122. data/lib/chef/provider/deploy.rb +5 -7
  123. data/lib/chef/provider/directory.rb +14 -2
  124. data/lib/chef/provider/dsc_resource.rb +5 -9
  125. data/lib/chef/provider/group/pw.rb +1 -1
  126. data/lib/chef/provider/ifconfig.rb +2 -2
  127. data/lib/chef/provider/lwrp_base.rb +1 -75
  128. data/lib/chef/provider/mount.rb +7 -3
  129. data/lib/chef/provider/package.rb +1 -1
  130. data/lib/chef/provider/package/dpkg.rb +5 -11
  131. data/lib/chef/provider/package/rpm.rb +2 -2
  132. data/lib/chef/provider/package/rubygems.rb +1 -1
  133. data/lib/chef/provider/package/windows/msi.rb +2 -2
  134. data/lib/chef/provider/package/yum.rb +17 -5
  135. data/lib/chef/provider/powershell_script.rb +59 -23
  136. data/lib/chef/provider/registry_key.rb +5 -5
  137. data/lib/chef/provider/remote_directory.rb +190 -102
  138. data/lib/chef/provider/service.rb +12 -2
  139. data/lib/chef/provider/service/aix.rb +1 -1
  140. data/lib/chef/provider/service/debian.rb +3 -5
  141. data/lib/chef/provider/service/freebsd.rb +1 -1
  142. data/lib/chef/provider/service/gentoo.rb +3 -3
  143. data/lib/chef/provider/service/init.rb +3 -3
  144. data/lib/chef/provider/service/insserv.rb +2 -4
  145. data/lib/chef/provider/service/invokercd.rb +2 -4
  146. data/lib/chef/provider/service/macosx.rb +5 -1
  147. data/lib/chef/provider/service/openbsd.rb +2 -1
  148. data/lib/chef/provider/service/redhat.rb +52 -16
  149. data/lib/chef/provider/service/simple.rb +2 -2
  150. data/lib/chef/provider/service/systemd.rb +3 -5
  151. data/lib/chef/provider/service/upstart.rb +4 -6
  152. data/lib/chef/provider/subversion.rb +13 -7
  153. data/lib/chef/provider/template/content.rb +16 -6
  154. data/lib/chef/provider/user/solaris.rb +32 -4
  155. data/lib/chef/provider/windows_script.rb +3 -5
  156. data/lib/chef/provider_resolver.rb +2 -2
  157. data/lib/chef/recipe.rb +1 -8
  158. data/lib/chef/resource.rb +563 -90
  159. data/lib/chef/resource/action_class.rb +83 -0
  160. data/lib/chef/resource/chef_gem.rb +3 -3
  161. data/lib/chef/resource/deploy.rb +8 -2
  162. data/lib/chef/resource/dsc_script.rb +2 -0
  163. data/lib/chef/resource/file/verification.rb +7 -1
  164. data/lib/chef/resource/lwrp_base.rb +1 -7
  165. data/lib/chef/resource/registry_key.rb +1 -1
  166. data/lib/chef/resource/service.rb +10 -2
  167. data/lib/chef/resource/subversion.rb +5 -0
  168. data/lib/chef/resource/windows_script.rb +6 -2
  169. data/lib/chef/resource/yum_package.rb +10 -1
  170. data/lib/chef/resource_resolver.rb +3 -3
  171. data/lib/chef/run_context.rb +402 -83
  172. data/lib/chef/run_list/versioned_recipe_list.rb +15 -0
  173. data/lib/chef/run_lock.rb +30 -21
  174. data/lib/chef/util/powershell/ps_credential.rb +4 -0
  175. data/lib/chef/util/windows.rb +0 -32
  176. data/lib/chef/util/windows/net_group.rb +85 -106
  177. data/lib/chef/util/windows/net_use.rb +35 -71
  178. data/lib/chef/util/windows/net_user.rb +0 -1
  179. data/lib/chef/util/windows/volume.rb +19 -19
  180. data/lib/chef/version.rb +3 -3
  181. data/lib/chef/win32/api.rb +1 -0
  182. data/lib/chef/win32/api/file.rb +20 -0
  183. data/lib/chef/win32/api/net.rb +163 -43
  184. data/lib/chef/win32/api/registry.rb +51 -0
  185. data/lib/chef/win32/api/system.rb +23 -0
  186. data/lib/chef/win32/api/unicode.rb +0 -43
  187. data/lib/chef/win32/crypto.rb +2 -1
  188. data/lib/chef/win32/file.rb +28 -3
  189. data/lib/chef/win32/mutex.rb +1 -2
  190. data/lib/chef/win32/net.rb +162 -8
  191. data/lib/chef/win32/process.rb +13 -0
  192. data/lib/chef/win32/registry.rb +35 -30
  193. data/lib/chef/win32/security.rb +1 -1
  194. data/lib/chef/win32/security/token.rb +1 -1
  195. data/lib/chef/win32/system.rb +62 -0
  196. data/lib/chef/win32/unicode.rb +7 -2
  197. data/lib/chef/win32/version.rb +0 -4
  198. data/lib/chef/workstation_config_loader.rb +3 -158
  199. data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -0
  200. data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -0
  201. data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -0
  202. data/spec/data/dsc_lcm.pfx +0 -0
  203. data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -0
  204. data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -0
  205. data/spec/functional/dsl/reboot_pending_spec.rb +33 -43
  206. data/spec/functional/knife/cookbook_delete_spec.rb +17 -7
  207. data/spec/functional/knife/ssh_spec.rb +16 -0
  208. data/spec/functional/rebooter_spec.rb +1 -1
  209. data/spec/functional/resource/deploy_revision_spec.rb +1 -1
  210. data/spec/functional/resource/dsc_resource_spec.rb +2 -0
  211. data/spec/functional/resource/dsc_script_spec.rb +91 -2
  212. data/spec/functional/resource/group_spec.rb +67 -44
  213. data/spec/functional/resource/{powershell_spec.rb → powershell_script_spec.rb} +107 -18
  214. data/spec/functional/resource/windows_service_spec.rb +1 -1
  215. data/spec/functional/run_lock_spec.rb +368 -189
  216. data/spec/functional/win32/{registry_helper_spec.rb → registry_spec.rb} +16 -23
  217. data/spec/functional/win32/service_manager_spec.rb +2 -2
  218. data/spec/integration/client/client_spec.rb +51 -0
  219. data/spec/integration/knife/chef_repo_path_spec.rb +13 -11
  220. data/spec/integration/knife/download_spec.rb +4 -0
  221. data/spec/integration/knife/list_spec.rb +8 -0
  222. data/spec/integration/knife/upload_spec.rb +1 -1
  223. data/spec/integration/recipes/recipe_dsl_spec.rb +1 -16
  224. data/spec/integration/recipes/remote_directory.rb +74 -0
  225. data/spec/integration/recipes/resource_action_spec.rb +363 -0
  226. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +423 -0
  227. data/spec/integration/recipes/resource_load_spec.rb +206 -0
  228. data/spec/spec_helper.rb +9 -0
  229. data/spec/support/platform_helpers.rb +13 -0
  230. data/spec/support/shared/context/win32.rb +34 -0
  231. data/spec/support/shared/functional/win32_service.rb +2 -1
  232. data/spec/support/shared/functional/windows_script.rb +63 -26
  233. data/spec/support/shared/unit/mock_shellout.rb +46 -0
  234. data/spec/support/shared/unit/provider/file.rb +10 -4
  235. data/spec/unit/application/client_spec.rb +16 -3
  236. data/spec/unit/application/knife_spec.rb +2 -2
  237. data/spec/unit/application/solo_spec.rb +4 -3
  238. data/spec/unit/chef_class_spec.rb +23 -4
  239. data/spec/unit/chef_fs/path_util_spec.rb +108 -0
  240. data/spec/unit/client_spec.rb +6 -1
  241. data/spec/unit/config_spec.rb +31 -0
  242. data/spec/unit/cookbook/metadata_spec.rb +23 -3
  243. data/spec/unit/cookbook/syntax_check_spec.rb +3 -0
  244. data/spec/unit/deprecation_spec.rb +3 -6
  245. data/spec/unit/dsl/reboot_pending_spec.rb +12 -6
  246. data/spec/unit/event_dispatch/dispatcher_spec.rb +65 -3
  247. data/spec/unit/event_dispatch/dsl_spec.rb +83 -0
  248. data/spec/unit/formatters/doc_spec.rb +32 -0
  249. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +26 -0
  250. data/spec/unit/json_compat_spec.rb +4 -3
  251. data/spec/unit/knife/bootstrap/client_builder_spec.rb +27 -0
  252. data/spec/unit/knife/bootstrap_spec.rb +55 -3
  253. data/spec/unit/knife/cookbook_site_share_spec.rb +3 -3
  254. data/spec/unit/knife/core/bootstrap_context_spec.rb +21 -4
  255. data/spec/unit/knife/core/custom_manifest_loader_spec.rb +41 -0
  256. data/spec/unit/knife/core/gem_glob_loader_spec.rb +210 -0
  257. data/spec/unit/knife/core/hashed_command_loader_spec.rb +93 -0
  258. data/spec/unit/knife/core/subcommand_loader_spec.rb +16 -192
  259. data/spec/unit/knife/node_run_list_remove_spec.rb +17 -0
  260. data/spec/unit/knife/ssl_check_spec.rb +4 -0
  261. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +10 -10
  262. data/spec/unit/mixin/params_validate_spec.rb +4 -2
  263. data/spec/unit/mixin/template_spec.rb +5 -1
  264. data/spec/unit/mixin/windows_architecture_helper_spec.rb +13 -8
  265. data/spec/unit/node_spec.rb +220 -0
  266. data/spec/unit/platform/query_helpers_spec.rb +146 -3
  267. data/spec/unit/policy_builder/dynamic_spec.rb +275 -0
  268. data/spec/unit/policy_builder/expand_node_object_spec.rb +37 -38
  269. data/spec/unit/policy_builder/policyfile_spec.rb +260 -46
  270. data/spec/unit/property/state_spec.rb +506 -0
  271. data/spec/unit/property/validation_spec.rb +663 -0
  272. data/spec/unit/property_spec.rb +1094 -0
  273. data/spec/unit/provider/deploy_spec.rb +5 -5
  274. data/spec/unit/provider/directory_spec.rb +35 -0
  275. data/spec/unit/provider/dsc_resource_spec.rb +3 -10
  276. data/spec/unit/provider/ifconfig_spec.rb +22 -2
  277. data/spec/unit/provider/mount/aix_spec.rb +2 -1
  278. data/spec/unit/provider/mount/mount_spec.rb +6 -0
  279. data/spec/unit/provider/mount/windows_spec.rb +14 -0
  280. data/spec/unit/provider/mount_spec.rb +12 -1
  281. data/spec/unit/provider/package/dpkg_spec.rb +8 -1
  282. data/spec/unit/provider/package/rpm_spec.rb +18 -1
  283. data/spec/unit/provider/package/rubygems_spec.rb +18 -0
  284. data/spec/unit/provider/package/yum_spec.rb +97 -24
  285. data/spec/unit/provider/powershell_script_spec.rb +106 -0
  286. data/spec/unit/provider/registry_key_spec.rb +12 -0
  287. data/spec/unit/provider/remote_directory_spec.rb +1 -2
  288. data/spec/unit/provider/service/aix_service_spec.rb +3 -3
  289. data/spec/unit/provider/service/gentoo_service_spec.rb +4 -4
  290. data/spec/unit/provider/service/macosx_spec.rb +4 -4
  291. data/spec/unit/provider/service/openbsd_service_spec.rb +10 -8
  292. data/spec/unit/provider/service/redhat_spec.rb +88 -8
  293. data/spec/unit/provider/service/upstart_service_spec.rb +11 -7
  294. data/spec/unit/provider/service/windows_spec.rb +211 -200
  295. data/spec/unit/provider/subversion_spec.rb +50 -31
  296. data/spec/unit/provider/template/content_spec.rb +93 -2
  297. data/spec/unit/provider/user/solaris_spec.rb +66 -9
  298. data/spec/unit/provider_resolver_spec.rb +707 -650
  299. data/spec/unit/provider_spec.rb +1 -3
  300. data/spec/unit/recipe_spec.rb +0 -4
  301. data/spec/unit/resource/deploy_spec.rb +7 -1
  302. data/spec/unit/resource/dsc_script_spec.rb +4 -0
  303. data/spec/unit/resource/file/verification_spec.rb +33 -5
  304. data/spec/unit/resource/{powershell_spec.rb → powershell_script_spec.rb} +17 -13
  305. data/spec/unit/resource/service_spec.rb +4 -4
  306. data/spec/unit/resource/subversion_spec.rb +4 -0
  307. data/spec/unit/resource/yum_package_spec.rb +10 -1
  308. data/spec/unit/resource_spec.rb +2 -2
  309. data/spec/unit/run_context/child_run_context_spec.rb +133 -0
  310. data/spec/unit/run_context_spec.rb +7 -0
  311. data/spec/unit/run_list/versioned_recipe_list_spec.rb +5 -0
  312. data/spec/unit/win32/registry_spec.rb +394 -0
  313. data/tasks/external_tests.rb +47 -23
  314. data/tasks/maintainers.rb +155 -14
  315. metadata +64 -53
  316. data/lib/chef/knife/bootstrap/templates/archlinux-gems.erb +0 -76
  317. data/lib/chef/knife/bootstrap/templates/chef-aix.erb +0 -72
  318. data/spec/unit/provider/powershell_spec.rb +0 -80
  319. data/spec/unit/registry_helper_spec.rb +0 -376
  320. data/spec/unit/workstation_config_loader_spec.rb +0 -283
@@ -20,6 +20,7 @@ require 'chef/node'
20
20
  require 'chef/rest'
21
21
  require 'chef/api_client/registration'
22
22
  require 'chef/api_client'
23
+ require 'chef/knife/bootstrap'
23
24
  require 'tmpdir'
24
25
 
25
26
  class Chef
@@ -90,6 +91,16 @@ class Chef
90
91
  knife_config[:run_list]
91
92
  end
92
93
 
94
+ # @return [String] policy_name from the knife_config
95
+ def policy_name
96
+ knife_config[:policy_name]
97
+ end
98
+
99
+ # @return [String] policy_group from the knife_config
100
+ def policy_group
101
+ knife_config[:policy_group]
102
+ end
103
+
93
104
  # @return [Hash,Array] Object representation of json first-boot attributes from the knife_config
94
105
  def first_boot_attributes
95
106
  knife_config[:first_boot_attributes]
@@ -140,6 +151,11 @@ class Chef
140
151
  node.run_list(normalized_run_list)
141
152
  node.normal_attrs = first_boot_attributes if first_boot_attributes
142
153
  node.environment(environment) if environment
154
+ node.policy_name = policy_name if policy_name
155
+ node.policy_group = policy_group if policy_group
156
+ (knife_config[:tags] || []).each do |tag|
157
+ node.tags << tag
158
+ end
143
159
  node
144
160
  end
145
161
  end
@@ -1,12 +1,11 @@
1
1
  This directory contains bootstrap templates which can be used with the -d flag
2
2
  to 'knife bootstrap' to install Chef in different ways. To simplify installation,
3
3
  and reduce the matrix of common installation patterns to support, we have
4
- standardized on the [Omnibus](https://github.com/opscode/omnibus-ruby) built installation
4
+ standardized on the [Omnibus](https://github.com/chef/omnibus) built installation
5
5
  packages.
6
6
 
7
7
  The 'chef-full' template downloads a script which is used to determine the correct
8
- Omnibus package for this system from the [Omnitruck](https://github.com/opscode/opscode-omnitruck) API. All other templates in this directory are deprecated and will be removed
9
- in the future.
8
+ Omnibus package for this system from the [Omnitruck](https://docs.chef.io/api_omnitruck.html) API.
10
9
 
11
10
  You can still utilize custom bootstrap templates on your system if your installation
12
- needs are unique. Additional information can be found on the [docs site](http://docs.opscode.com/knife_bootstrap.html#custom-templates).
11
+ needs are unique. Additional information can be found on the [docs site](https://docs.chef.io/knife_bootstrap.html#custom-templates).
@@ -226,6 +226,6 @@ cat > /etc/chef/first-boot.json <<EOP
226
226
  <%= Chef::JSONCompat.to_json(first_boot) %>
227
227
  EOP
228
228
 
229
- echo "Starting first Chef Client run..."
229
+ echo "Starting the first Chef Client run..."
230
230
 
231
231
  <%= start_chef %>'
@@ -48,7 +48,7 @@ class Chef
48
48
  option :cookbook_copyright,
49
49
  :short => "-C COPYRIGHT",
50
50
  :long => "--copyright COPYRIGHT",
51
- :description => "Name of Copyright holder"
51
+ :description => "Name of copyright holder"
52
52
 
53
53
  option :cookbook_email,
54
54
  :short => "-m EMAIL",
@@ -84,7 +84,7 @@ class Chef
84
84
  end
85
85
 
86
86
  def download_cookbook
87
- ui.info "Downloading #{@name_args[0]} from the cookbooks site at version #{version} to #{download_location}"
87
+ ui.info "Downloading #{@name_args[0]} from Supermarket at version #{version} to #{download_location}"
88
88
  noauth_rest.sign_on_redirect = false
89
89
  tf = noauth_rest.get_rest desired_cookbook_data["file"], true
90
90
 
@@ -93,7 +93,7 @@ class Chef
93
93
 
94
94
  # TODO: it'd be better to store these outside the cookbook repo and
95
95
  # keep them around, e.g., in ~/Library/Caches on OS X.
96
- ui.info("removing downloaded tarball")
96
+ ui.info("Removing downloaded tarball")
97
97
  File.unlink(upstream_file)
98
98
 
99
99
  if @repo.finalize_updates_to(@cookbook_name, downloader.version)
@@ -48,7 +48,7 @@ class Chef
48
48
  :short => '-n',
49
49
  :boolean => true,
50
50
  :default => false,
51
- :description => "Don't take action, only print what files will be upload to SuperMarket."
51
+ :description => "Don't take action, only print what files will be uploaded to Supermarket."
52
52
 
53
53
  def run
54
54
  config[:cookbook_path] ||= Chef::Config[:cookbook_path]
@@ -94,7 +94,7 @@ class Chef
94
94
  Chef::Log.debug("Removing local staging directory at #{tmp_cookbook_dir}")
95
95
  FileUtils.rm_rf tmp_cookbook_dir
96
96
  rescue => e
97
- ui.error("Error uploading cookbook #{cookbook_name} to the Opscode Cookbook Site: #{e.message}. Increase log verbosity (-VV) for more information.")
97
+ ui.error("Error uploading cookbook #{cookbook_name} to Supermarket: #{e.message}. Increase log verbosity (-VV) for more information.")
98
98
  Chef::Log.debug("\n#{e.backtrace.join("\n")}")
99
99
  exit(1)
100
100
  end
@@ -108,15 +108,15 @@ class Chef
108
108
 
109
109
  def get_category(cookbook_name)
110
110
  begin
111
- data = noauth_rest.get_rest("http://cookbooks.opscode.com/api/v1/cookbooks/#{@name_args[0]}")
111
+ data = noauth_rest.get_rest("https://supermarket.chef.io/api/v1/cookbooks/#{@name_args[0]}")
112
112
  if !data["category"] && data["error_code"]
113
- ui.fatal("Received an error from the Opscode Cookbook site: #{data["error_code"]}. On the first time you upload it, you are required to specify the category you want to share this cookbook to.")
113
+ ui.fatal("Received an error from Supermarket: #{data["error_code"]}. On the first time you upload it, you are required to specify the category you want to share this cookbook to.")
114
114
  exit(1)
115
115
  else
116
116
  data['category']
117
117
  end
118
118
  rescue => e
119
- ui.fatal("Unable to reach Opscode Cookbook Site: #{e.message}. Increase log verbosity (-VV) for more information.")
119
+ ui.fatal("Unable to reach Supermarket: #{e.message}. Increase log verbosity (-VV) for more information.")
120
120
  Chef::Log.debug("\n#{e.backtrace.join("\n")}")
121
121
  exit(1)
122
122
  end
@@ -136,7 +136,7 @@ class Chef
136
136
  if http_resp.code.to_i != 201
137
137
  if res['error_messages']
138
138
  if res['error_messages'][0] =~ /Version already exists/
139
- ui.error "The same version of this cookbook already exists on the Opscode Cookbook Site."
139
+ ui.error "The same version of this cookbook already exists on Supermarket."
140
140
  exit(1)
141
141
  else
142
142
  ui.error "#{res['error_messages'][0]}"
@@ -38,7 +38,7 @@ class Chef
38
38
  exit 1
39
39
  end
40
40
 
41
- confirm "Do you really want to unshare the cookbook #{@cookbook_name}"
41
+ confirm "Do you really want to unshare all versions of the cookbook #{@cookbook_name}"
42
42
 
43
43
  begin
44
44
  rest.delete_rest "https://supermarket.chef.io/api/v1/cookbooks/#{@name_args[0]}"
@@ -48,7 +48,7 @@ class Chef
48
48
  exit 1
49
49
  end
50
50
 
51
- ui.info "Unshared cookbook #{@cookbook_name}"
51
+ ui.info "Unshared all versions of the cookbook #{@cookbook_name}"
52
52
  end
53
53
 
54
54
  end
@@ -40,7 +40,7 @@ class Chef
40
40
  end
41
41
 
42
42
  def bootstrap_environment
43
- @chef_config[:environment] || '_default'
43
+ @chef_config[:environment]
44
44
  end
45
45
 
46
46
  def validation_key
@@ -128,7 +128,7 @@ CONFIG
128
128
  client_path = @chef_config[:chef_client_path] || 'chef-client'
129
129
  s = "#{client_path} -j /etc/chef/first-boot.json"
130
130
  s << ' -l debug' if @config[:verbosity] and @config[:verbosity] >= 2
131
- s << " -E #{bootstrap_environment}"
131
+ s << " -E #{bootstrap_environment}" unless bootstrap_environment.nil?
132
132
  s
133
133
  end
134
134
 
@@ -163,11 +163,19 @@ CONFIG
163
163
  end
164
164
 
165
165
  def first_boot
166
- (@config[:first_boot_attributes] || {}).merge(:run_list => @run_list)
166
+ (@config[:first_boot_attributes] || {}).tap do |attributes|
167
+ if @config[:policy_name] && @config[:policy_group]
168
+ attributes.merge!(:policy_name => @config[:policy_name], :policy_group => @config[:policy_group])
169
+ else
170
+ attributes.merge!(:run_list => @run_list)
171
+ end
172
+
173
+ attributes.merge!(:tags => @config[:tags]) if @config[:tags] && !@config[:tags].empty?
174
+ end
167
175
  end
168
176
 
169
177
  private
170
-
178
+
171
179
  # Returns a string for copying the trusted certificates on the workstation to the system being bootstrapped
172
180
  # This string should contain both the commands necessary to both create the files, as well as their content
173
181
  def trusted_certs_content
@@ -0,0 +1,69 @@
1
+ # Copyright:: Copyright (c) 2015 Chef Software, Inc
2
+ # License:: Apache License, Version 2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'chef/version'
18
+ class Chef
19
+ class Knife
20
+ class SubcommandLoader
21
+
22
+ #
23
+ # Load a subcommand from a user-supplied
24
+ # manifest file
25
+ #
26
+ class CustomManifestLoader < Chef::Knife::SubcommandLoader
27
+ attr_accessor :manifest
28
+ def initialize(chef_config_dir, plugin_manifest)
29
+ super(chef_config_dir)
30
+ @manifest = plugin_manifest
31
+ end
32
+
33
+ # If the user has created a ~/.chef/plugin_manifest.json file, we'll use
34
+ # that instead of inspecting the on-system gems to find the plugins. The
35
+ # file format is expected to look like:
36
+ #
37
+ # { "plugins": {
38
+ # "knife-ec2": {
39
+ # "paths": [
40
+ # "/home/alice/.rubymanagerthing/gems/knife-ec2-x.y.z/lib/chef/knife/ec2_server_create.rb",
41
+ # "/home/alice/.rubymanagerthing/gems/knife-ec2-x.y.z/lib/chef/knife/ec2_server_delete.rb"
42
+ # ]
43
+ # }
44
+ # }
45
+ # }
46
+ #
47
+ # Extraneous content in this file is ignored. This is intentional so that we
48
+ # can adapt the file format for potential behavior changes to knife in
49
+ # the future.
50
+ def find_subcommands_via_manifest
51
+ # Format of subcommand_files is "relative_path" (something you can
52
+ # Kernel.require()) => full_path. The relative path isn't used
53
+ # currently, so we just map full_path => full_path.
54
+ subcommand_files = {}
55
+ manifest["plugins"].each do |plugin_name, plugin_manifest|
56
+ plugin_manifest["paths"].each do |cmd_path|
57
+ subcommand_files[cmd_path] = cmd_path
58
+ end
59
+ end
60
+ subcommand_files.merge(find_subcommands_via_dirglob)
61
+ end
62
+
63
+ def subcommand_files
64
+ subcommand_files ||= (find_subcommands_via_manifest.values + site_subcommands).flatten.uniq
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,138 @@
1
+ # Author:: Christopher Brown (<cb@opscode.com>)
2
+ # Author:: Daniel DeLeo (<dan@opscode.com>)
3
+ # Copyright:: Copyright (c) 2009-2015 Chef Software, Inc
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/version'
20
+ require 'chef/util/path_helper'
21
+ class Chef
22
+ class Knife
23
+ class SubcommandLoader
24
+ class GemGlobLoader < Chef::Knife::SubcommandLoader
25
+ MATCHES_CHEF_GEM = %r{/chef-[\d]+\.[\d]+\.[\d]+}.freeze
26
+ MATCHES_THIS_CHEF_GEM = %r{/chef-#{Chef::VERSION}(-\w+)?(-\w+)?/}.freeze
27
+
28
+ def subcommand_files
29
+ @subcommand_files ||= (gem_and_builtin_subcommands.values + site_subcommands).flatten.uniq
30
+ end
31
+
32
+ # Returns a Hash of paths to knife commands built-in to chef, or installed via gem.
33
+ # If rubygems is not installed, falls back to globbing the knife directory.
34
+ # The Hash is of the form {"relative/path" => "/absolute/path"}
35
+ #--
36
+ # Note: the "right" way to load the plugins is to require the relative path, i.e.,
37
+ # require 'chef/knife/command'
38
+ # but we're getting frustrated by bugs at every turn, and it's slow besides. So
39
+ # subcommand loader has been modified to load the plugins by using Kernel.load
40
+ # with the absolute path.
41
+ def gem_and_builtin_subcommands
42
+ require 'rubygems'
43
+ find_subcommands_via_rubygems
44
+ rescue LoadError
45
+ find_subcommands_via_dirglob
46
+ end
47
+
48
+ def find_subcommands_via_dirglob
49
+ # The "require paths" of the core knife subcommands bundled with chef
50
+ files = Dir[File.join(Chef::Util::PathHelper.escape_glob(File.expand_path('../../../knife', __FILE__)), '*.rb')]
51
+ subcommand_files = {}
52
+ files.each do |knife_file|
53
+ rel_path = knife_file[/#{CHEF_ROOT}#{Regexp.escape(File::SEPARATOR)}(.*)\.rb/,1]
54
+ subcommand_files[rel_path] = knife_file
55
+ end
56
+ subcommand_files
57
+ end
58
+
59
+ def find_subcommands_via_rubygems
60
+ files = find_files_latest_gems 'chef/knife/*.rb'
61
+ subcommand_files = {}
62
+ files.each do |file|
63
+ rel_path = file[/(#{Regexp.escape File.join('chef', 'knife', '')}.*)\.rb/, 1]
64
+
65
+ # When not installed as a gem (ChefDK/appbundler in particular), AND
66
+ # a different version of Chef is installed via gems, `files` will
67
+ # include some files from the 'other' Chef install. If this contains
68
+ # a knife command that doesn't exist in this version of Chef, we will
69
+ # get a LoadError later when we try to require it.
70
+ next if from_different_chef_version?(file)
71
+
72
+ subcommand_files[rel_path] = file
73
+ end
74
+
75
+ subcommand_files.merge(find_subcommands_via_dirglob)
76
+ end
77
+
78
+ private
79
+
80
+ def find_files_latest_gems(glob, check_load_path=true)
81
+ files = []
82
+
83
+ if check_load_path
84
+ files = $LOAD_PATH.map { |load_path|
85
+ Dir["#{File.expand_path glob, Chef::Util::PathHelper.escape_glob(load_path)}#{Gem.suffix_pattern}"]
86
+ }.flatten.select { |file| File.file? file.untaint }
87
+ end
88
+
89
+ gem_files = latest_gem_specs.map do |spec|
90
+ # Gem::Specification#matches_for_glob wasn't added until RubyGems 1.8
91
+ if spec.respond_to? :matches_for_glob
92
+ spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
93
+ else
94
+ check_spec_for_glob(spec, glob)
95
+ end
96
+ end.flatten
97
+
98
+ files.concat gem_files
99
+ files.uniq! if check_load_path
100
+
101
+ return files
102
+ end
103
+
104
+ def latest_gem_specs
105
+ @latest_gem_specs ||= if Gem::Specification.respond_to? :latest_specs
106
+ Gem::Specification.latest_specs(true) # find prerelease gems
107
+ else
108
+ Gem.source_index.latest_specs(true)
109
+ end
110
+ end
111
+
112
+ def check_spec_for_glob(spec, glob)
113
+ dirs = if spec.require_paths.size > 1 then
114
+ "{#{spec.require_paths.join(',')}}"
115
+ else
116
+ spec.require_paths.first
117
+ end
118
+
119
+ glob = File.join(Chef::Util::PathHelper.escape_glob(spec.full_gem_path, dirs), glob)
120
+
121
+ Dir[glob].map { |f| f.untaint }
122
+ end
123
+
124
+ def from_different_chef_version?(path)
125
+ matches_any_chef_gem?(path) && !matches_this_chef_gem?(path)
126
+ end
127
+
128
+ def matches_any_chef_gem?(path)
129
+ path =~ MATCHES_CHEF_GEM
130
+ end
131
+
132
+ def matches_this_chef_gem?(path)
133
+ path =~ MATCHES_THIS_CHEF_GEM
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,80 @@
1
+ # Author:: Steven Danna (<steve@chef.io>)
2
+ # Copyright:: Copyright (c) 2015 Chef Software, Inc
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'chef/version'
19
+ class Chef
20
+ class Knife
21
+ class SubcommandLoader
22
+ #
23
+ # Load a subcommand from a pre-computed path
24
+ # for the given command.
25
+ #
26
+ class HashedCommandLoader < Chef::Knife::SubcommandLoader
27
+ KEY = '_autogenerated_command_paths'
28
+
29
+ attr_accessor :manifest
30
+ def initialize(chef_config_dir, plugin_manifest)
31
+ super(chef_config_dir)
32
+ @manifest = plugin_manifest
33
+ end
34
+
35
+ def guess_category(args)
36
+ category_words = positional_arguments(args)
37
+ category_words.map! { |w| w.split('-') }.flatten!
38
+ find_longest_key(manifest[KEY]["plugins_by_category"], category_words, ' ')
39
+ end
40
+
41
+ def list_commands(pref_category=nil)
42
+ if pref_category || manifest[KEY]["plugins_by_category"].key?(pref_category)
43
+ { pref_category => manifest[KEY]["plugins_by_category"][pref_category] }
44
+ else
45
+ manifest[KEY]["plugins_by_category"]
46
+ end
47
+ end
48
+
49
+ def subcommand_files
50
+ manifest[KEY]["plugins_paths"].values.flatten
51
+ end
52
+
53
+ def load_command(args)
54
+ paths = manifest[KEY]["plugins_paths"][subcommand_for_args(args)]
55
+ if paths.nil? || paths.empty? || (! paths.is_a? Array)
56
+ false
57
+ else
58
+ paths.each do |sc|
59
+ if File.exists?(sc)
60
+ Kernel.load sc
61
+ else
62
+ Chef::Log.error "The file #{sc} is missing for subcommand '#{subcommand_for_args(args)}'. Please rehash to update the subcommands cache."
63
+ return false
64
+ end
65
+ end
66
+ true
67
+ end
68
+ end
69
+
70
+ def subcommand_for_args(args)
71
+ if manifest[KEY]["plugins_paths"].key?(args)
72
+ args
73
+ else
74
+ find_longest_key(manifest[KEY]["plugins_paths"], args, "_")
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end