chef 16.4.41 → 16.5.64

Sign up to get free protection for your applications and to get access to all the features.
Files changed (268) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Rakefile +2 -2
  4. data/bin/knife +1 -1
  5. data/chef.gemspec +2 -1
  6. data/lib/chef/application.rb +18 -16
  7. data/lib/chef/application/apply.rb +12 -7
  8. data/lib/chef/application/base.rb +26 -23
  9. data/lib/chef/application/client.rb +10 -4
  10. data/lib/chef/application/exit_code.rb +13 -4
  11. data/lib/chef/application/knife.rb +22 -11
  12. data/lib/chef/application/solo.rb +2 -1
  13. data/lib/chef/application/windows_service.rb +14 -14
  14. data/lib/chef/application/windows_service_manager.rb +6 -6
  15. data/lib/chef/chef_fs/knife.rb +2 -2
  16. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  17. data/lib/chef/client.rb +10 -11
  18. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  19. data/lib/chef/cookbook/synchronizer.rb +2 -2
  20. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  21. data/lib/chef/cookbook_uploader.rb +1 -1
  22. data/lib/chef/data_collector.rb +6 -5
  23. data/lib/chef/data_collector/config_validation.rb +22 -13
  24. data/lib/chef/data_collector/run_end_message.rb +2 -2
  25. data/lib/chef/data_collector/run_start_message.rb +1 -1
  26. data/lib/chef/deprecated.rb +1 -1
  27. data/lib/chef/deprecation/warnings.rb +2 -2
  28. data/lib/chef/digester.rb +2 -2
  29. data/lib/chef/dsl/chef_vault.rb +1 -1
  30. data/lib/chef/dsl/data_query.rb +2 -2
  31. data/lib/chef/dsl/platform_introspection.rb +1 -1
  32. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  33. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  34. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  35. data/lib/chef/environment.rb +2 -2
  36. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  37. data/lib/chef/exceptions.rb +4 -4
  38. data/lib/chef/file_access_control/windows.rb +5 -1
  39. data/lib/chef/formatters/doc.rb +7 -6
  40. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  41. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  42. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  43. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  44. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  45. data/lib/chef/formatters/minimal.rb +5 -4
  46. data/lib/chef/http.rb +6 -4
  47. data/lib/chef/http/auth_credentials.rb +5 -1
  48. data/lib/chef/http/authenticator.rb +1 -1
  49. data/lib/chef/http/basic_client.rb +4 -2
  50. data/lib/chef/http/decompressor.rb +1 -1
  51. data/lib/chef/http/http_request.rb +7 -5
  52. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  53. data/lib/chef/http/ssl_policies.rb +1 -1
  54. data/lib/chef/json_compat.rb +1 -1
  55. data/lib/chef/knife.rb +4 -4
  56. data/lib/chef/knife/bootstrap.rb +16 -14
  57. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  58. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  59. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  60. data/lib/chef/knife/client_create.rb +3 -3
  61. data/lib/chef/knife/config_get.rb +8 -97
  62. data/lib/chef/knife/config_get_profile.rb +9 -9
  63. data/lib/chef/knife/config_list.rb +139 -0
  64. data/lib/chef/knife/config_list_profiles.rb +8 -98
  65. data/lib/chef/knife/config_show.rb +127 -0
  66. data/lib/chef/knife/config_use.rb +61 -0
  67. data/lib/chef/knife/config_use_profile.rb +9 -24
  68. data/lib/chef/knife/configure.rb +2 -2
  69. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  70. data/lib/chef/knife/core/object_loader.rb +1 -1
  71. data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
  72. data/lib/chef/knife/exec.rb +2 -2
  73. data/lib/chef/knife/node_show.rb +2 -2
  74. data/lib/chef/knife/serve.rb +3 -3
  75. data/lib/chef/knife/ssh.rb +16 -1
  76. data/lib/chef/knife/ssl_check.rb +3 -3
  77. data/lib/chef/knife/status.rb +2 -2
  78. data/lib/chef/knife/user_create.rb +2 -2
  79. data/lib/chef/knife/yaml_convert.rb +1 -1
  80. data/lib/chef/local_mode.rb +2 -2
  81. data/lib/chef/log/syslog.rb +2 -2
  82. data/lib/chef/log/winevt.rb +2 -2
  83. data/lib/chef/mixin/deep_merge.rb +0 -12
  84. data/lib/chef/mixin/openssl_helper.rb +1 -4
  85. data/lib/chef/mixin/template.rb +2 -2
  86. data/lib/chef/mixin/uris.rb +2 -2
  87. data/lib/chef/mixin/versioned_api.rb +1 -2
  88. data/lib/chef/monkey_patches/net_http.rb +4 -4
  89. data/lib/chef/node_map.rb +2 -2
  90. data/lib/chef/policy_builder/policyfile.rb +2 -2
  91. data/lib/chef/provider.rb +0 -4
  92. data/lib/chef/provider/file.rb +2 -2
  93. data/lib/chef/provider/ifconfig.rb +1 -1
  94. data/lib/chef/provider/launchd.rb +2 -2
  95. data/lib/chef/provider/mount/linux.rb +63 -0
  96. data/lib/chef/provider/package/rubygems.rb +21 -18
  97. data/lib/chef/provider/package/snap.rb +0 -1
  98. data/lib/chef/provider/package/windows.rb +2 -2
  99. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
  100. data/lib/chef/provider/package/zypper.rb +1 -1
  101. data/lib/chef/provider/remote_file/content.rb +3 -0
  102. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  103. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  104. data/lib/chef/provider/route.rb +2 -6
  105. data/lib/chef/provider/service/macosx.rb +2 -2
  106. data/lib/chef/provider/template_finder.rb +2 -10
  107. data/lib/chef/provider/user/dscl.rb +3 -3
  108. data/lib/chef/provider/user/mac.rb +1 -1
  109. data/lib/chef/provider/windows_task.rb +1 -2
  110. data/lib/chef/provider/zypper_repository.rb +2 -2
  111. data/lib/chef/provider_resolver.rb +1 -1
  112. data/lib/chef/providers.rb +1 -0
  113. data/lib/chef/recipe.rb +2 -2
  114. data/lib/chef/resource.rb +1 -1
  115. data/lib/chef/resource/apt_repository.rb +1 -1
  116. data/lib/chef/resource/bff_package.rb +22 -0
  117. data/lib/chef/resource/breakpoint.rb +57 -2
  118. data/lib/chef/resource/build_essential.rb +1 -1
  119. data/lib/chef/resource/cab_package.rb +29 -0
  120. data/lib/chef/resource/chef_client_cron.rb +32 -25
  121. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  122. data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
  123. data/lib/chef/resource/chef_client_systemd_timer.rb +24 -17
  124. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  125. data/lib/chef/resource/chef_gem.rb +10 -10
  126. data/lib/chef/resource/chef_handler.rb +148 -4
  127. data/lib/chef/resource/chef_sleep.rb +2 -2
  128. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  129. data/lib/chef/resource/cookbook_file.rb +2 -2
  130. data/lib/chef/resource/cron/cron_d.rb +0 -1
  131. data/lib/chef/resource/dnf_package.rb +2 -2
  132. data/lib/chef/resource/dsc_resource.rb +0 -1
  133. data/lib/chef/resource/dsc_script.rb +2 -2
  134. data/lib/chef/resource/execute.rb +6 -6
  135. data/lib/chef/resource/file.rb +4 -4
  136. data/lib/chef/resource/gem_package.rb +5 -5
  137. data/lib/chef/resource/homebrew_package.rb +3 -3
  138. data/lib/chef/resource/homebrew_update.rb +5 -5
  139. data/lib/chef/resource/hostname.rb +2 -2
  140. data/lib/chef/resource/launchd.rb +2 -1
  141. data/lib/chef/resource/locale.rb +2 -2
  142. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  143. data/lib/chef/resource/notify_group.rb +0 -1
  144. data/lib/chef/resource/ohai.rb +46 -3
  145. data/lib/chef/resource/ohai_hint.rb +33 -0
  146. data/lib/chef/resource/openssl_dhparam.rb +27 -5
  147. data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
  148. data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
  149. data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
  150. data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
  151. data/lib/chef/resource/openssl_x509_crl.rb +19 -10
  152. data/lib/chef/resource/openssl_x509_request.rb +14 -16
  153. data/lib/chef/resource/osx_profile.rb +77 -13
  154. data/lib/chef/resource/plist.rb +1 -1
  155. data/lib/chef/resource/powershell_package_source.rb +5 -5
  156. data/lib/chef/resource/reboot.rb +2 -2
  157. data/lib/chef/resource/remote_file.rb +3 -3
  158. data/lib/chef/resource/rhsm_register.rb +22 -10
  159. data/lib/chef/resource/ruby_block.rb +2 -2
  160. data/lib/chef/resource/scm/subversion.rb +2 -2
  161. data/lib/chef/resource/service.rb +3 -3
  162. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  163. data/lib/chef/resource/support/cron.d.erb +1 -1
  164. data/lib/chef/resource/support/cron_access.erb +1 -1
  165. data/lib/chef/resource/support/sudoer.erb +1 -1
  166. data/lib/chef/resource/support/ulimit.erb +1 -1
  167. data/lib/chef/resource/sysctl.rb +1 -5
  168. data/lib/chef/resource/systemd_unit.rb +2 -2
  169. data/lib/chef/resource/template.rb +2 -2
  170. data/lib/chef/resource/windows_ad_join.rb +10 -3
  171. data/lib/chef/resource/windows_certificate.rb +6 -4
  172. data/lib/chef/resource/windows_firewall_profile.rb +22 -20
  173. data/lib/chef/resource/windows_package.rb +28 -5
  174. data/lib/chef/resource/windows_printer.rb +5 -3
  175. data/lib/chef/resource/windows_printer_port.rb +6 -4
  176. data/lib/chef/resource/windows_user_privilege.rb +53 -54
  177. data/lib/chef/resource/windows_workgroup.rb +3 -3
  178. data/lib/chef/resource/yum_package.rb +2 -2
  179. data/lib/chef/resources.rb +3 -1
  180. data/lib/chef/run_context.rb +2 -2
  181. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  182. data/lib/chef/run_lock.rb +2 -2
  183. data/lib/chef/search/query.rb +4 -5
  184. data/lib/chef/shell.rb +31 -26
  185. data/lib/chef/shell/ext.rb +11 -11
  186. data/lib/chef/shell/shell_session.rb +2 -2
  187. data/lib/chef/train_transport.rb +5 -104
  188. data/lib/chef/util/diff.rb +3 -3
  189. data/lib/chef/util/powershell/cmdlet.rb +3 -1
  190. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  191. data/lib/chef/util/threaded_job_queue.rb +0 -2
  192. data/lib/chef/version.rb +1 -1
  193. data/lib/chef/win32/crypto.rb +1 -1
  194. data/lib/chef/win32/registry.rb +1 -2
  195. data/spec/data/shef-config.rb +1 -1
  196. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  197. data/spec/functional/resource/aix_service_spec.rb +2 -2
  198. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  199. data/spec/functional/resource/insserv_spec.rb +1 -1
  200. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  201. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  202. data/spec/functional/resource/windows_task_spec.rb +13 -13
  203. data/spec/functional/version_spec.rb +3 -3
  204. data/spec/integration/client/client_spec.rb +4 -4
  205. data/spec/integration/client/exit_code_spec.rb +3 -2
  206. data/spec/integration/client/ipv6_spec.rb +1 -1
  207. data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
  208. data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
  209. data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
  210. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  211. data/spec/integration/ohai/ohai_spec.rb +61 -0
  212. data/spec/integration/recipes/remote_directory.rb +1 -1
  213. data/spec/integration/solo/solo_spec.rb +5 -5
  214. data/spec/spec_helper.rb +6 -3
  215. data/spec/stress/win32/file_spec.rb +1 -1
  216. data/spec/support/chef_helpers.rb +2 -2
  217. data/spec/support/matchers/leak.rb +2 -2
  218. data/spec/support/platform_helpers.rb +16 -34
  219. data/spec/support/shared/functional/securable_resource.rb +108 -27
  220. data/spec/support/shared/functional/win32_service.rb +1 -1
  221. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  222. data/spec/tiny_server.rb +0 -1
  223. data/spec/unit/application/client_spec.rb +2 -2
  224. data/spec/unit/application/exit_code_spec.rb +10 -0
  225. data/spec/unit/application_spec.rb +4 -6
  226. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  227. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  228. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  229. data/spec/unit/cookbook_spec.rb +2 -2
  230. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  231. data/spec/unit/data_collector_spec.rb +0 -113
  232. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  233. data/spec/unit/file_access_control_spec.rb +1 -1
  234. data/spec/unit/knife/bootstrap_spec.rb +6 -6
  235. data/spec/unit/knife/core/ui_spec.rb +1 -0
  236. data/spec/unit/knife/ssh_spec.rb +2 -2
  237. data/spec/unit/lwrp_spec.rb +3 -3
  238. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  239. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  240. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  241. data/spec/unit/mixin/securable_spec.rb +2 -2
  242. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  243. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  244. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  245. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  246. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  247. data/spec/unit/provider/route_spec.rb +0 -2
  248. data/spec/unit/recipe_spec.rb +1 -1
  249. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  250. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  251. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  252. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  253. data/spec/unit/resource/launchd_spec.rb +8 -0
  254. data/spec/unit/resource/osx_profile_spec.rb +67 -1
  255. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  256. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  257. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  258. data/spec/unit/run_lock_spec.rb +5 -1
  259. data/spec/unit/runner_spec.rb +1 -2
  260. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  261. data/spec/unit/shell/shell_session_spec.rb +35 -64
  262. data/spec/unit/shell_spec.rb +16 -19
  263. data/spec/unit/train_transport_spec.rb +14 -13
  264. data/spec/unit/util/selinux_spec.rb +2 -0
  265. data/tasks/rspec.rb +0 -2
  266. metadata +41 -17
  267. data/lib/chef/dist.rb +0 -68
  268. data/spec/integration/knife/config_get_profile_spec.rb +0 -114
@@ -16,7 +16,7 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
  #
19
- require_relative "../../dist"
19
+ require "chef-utils" unless defined?(ChefUtils)
20
20
 
21
21
  class Chef
22
22
  module Formatters
@@ -56,7 +56,7 @@ class Chef
56
56
  require_relative "../../win32/security"
57
57
 
58
58
  unless Chef::ReservedNames::Win32::Security.has_admin_privileges?
59
- error_description.section("Missing Windows Admin Privileges", "#{Chef::Dist::CLIENT} doesn't have administrator privileges. This can be a possible reason for the resource failure.")
59
+ error_description.section("Missing Windows Admin Privileges", "#{ChefUtils::Dist::Infra::CLIENT} doesn't have administrator privileges. This can be a possible reason for the resource failure.")
60
60
  end
61
61
  end
62
62
  end
@@ -18,7 +18,7 @@
18
18
  #
19
19
 
20
20
  require_relative "api_error_formatting"
21
- require_relative "../../dist"
21
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
22
22
 
23
23
  class Chef
24
24
  module Formatters
@@ -78,7 +78,7 @@ class Chef
78
78
  case response
79
79
  when Net::HTTPUnauthorized
80
80
  error_description.section("Authentication Error:", <<~E)
81
- Failed to authenticate to the #{Chef::Dist::SERVER_PRODUCT} (http 401).
81
+ Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
82
82
  E
83
83
 
84
84
  error_description.section("Server Response:", format_rest_error)
@@ -109,7 +109,7 @@ class Chef
109
109
  E
110
110
  error_description.section("Server Response:", format_rest_error)
111
111
  when Net::HTTPBadGateway, Net::HTTPServiceUnavailable
112
- error_description.section("Server Unavailable", "The #{Chef::Dist::SERVER_PRODUCT} is temporarily unavailable")
112
+ error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
113
113
  error_description.section("Server Response:", format_rest_error)
114
114
  else
115
115
  error_description.section("Unexpected API Request Failure:", format_rest_error)
@@ -1,5 +1,5 @@
1
1
  require_relative "base"
2
- require_relative "../dist"
2
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
3
3
 
4
4
  class Chef
5
5
 
@@ -28,19 +28,20 @@ class Chef
28
28
 
29
29
  # Called at the very start of a Chef Run
30
30
  def run_start(version, run_status)
31
- puts_line "Starting #{Chef::Dist::PRODUCT}, version #{version}"
31
+ puts_line "Starting #{ChefUtils::Dist::Infra::PRODUCT}, version #{version}"
32
+ puts_line "Patents: #{ChefUtils::Dist::Org::PATENTS}"
32
33
  puts_line "Targeting node: #{Chef::Config.target_mode.host}" if Chef::Config.target_mode?
33
34
  puts_line "OpenSSL FIPS 140 mode enabled" if Chef::Config[:fips]
34
35
  end
35
36
 
36
37
  # Called at the end of the Chef run.
37
38
  def run_completed(node)
38
- puts "#{Chef::Dist::PRODUCT} finished, #{@updated_resources.size} resources updated"
39
+ puts "#{ChefUtils::Dist::Infra::PRODUCT} finished, #{@updated_resources.size} resources updated"
39
40
  end
40
41
 
41
42
  # called at the end of a failed run
42
43
  def run_failed(exception)
43
- puts "#{Chef::Dist::PRODUCT} failed. #{@updated_resources.size} resources updated"
44
+ puts "#{ChefUtils::Dist::Infra::PRODUCT} failed. #{@updated_resources.size} resources updated"
44
45
  end
45
46
 
46
47
  # Called right after ohai runs.
@@ -22,11 +22,13 @@
22
22
  #
23
23
 
24
24
  require "tempfile" unless defined?(Tempfile)
25
- require "openssl" unless defined?(OpenSSL)
26
- require "net/http" unless defined?(Net::HTTP)
27
- require "uri" unless defined?(URI)
25
+ autoload :OpenSSL, "openssl"
26
+ autoload :URI, "uri"
27
+ module Net
28
+ autoload :HTTP, File.expand_path("monkey_patches/net_http", __dir__)
29
+ autoload :HTTPClientException, File.expand_path("monkey_patches/net_http", __dir__)
30
+ end
28
31
  require_relative "http/basic_client"
29
- require_relative "monkey_patches/net_http"
30
32
  require_relative "config"
31
33
  require_relative "platform/query_helpers"
32
34
  require_relative "exceptions"
@@ -21,7 +21,11 @@
21
21
  # limitations under the License.
22
22
  #
23
23
  require_relative "../log"
24
- require "mixlib/authentication/signedheaderauth"
24
+ module Mixlib
25
+ module Authentication
26
+ autoload :SignedHeaderAuth, "mixlib/authentication/signedheaderauth"
27
+ end
28
+ end
25
29
 
26
30
  class Chef
27
31
  class HTTP
@@ -18,7 +18,7 @@
18
18
 
19
19
  require_relative "auth_credentials"
20
20
  require_relative "../exceptions"
21
- require "openssl" unless defined?(OpenSSL)
21
+ autoload :OpenSSL, "openssl"
22
22
 
23
23
  class Chef
24
24
  class HTTP
@@ -20,8 +20,10 @@
20
20
  # See the License for the specific language governing permissions and
21
21
  # limitations under the License.
22
22
  #
23
- require "uri" unless defined?(URI)
24
- require "net/http" unless defined?(Net::HTTP)
23
+ autoload :URI, "uri"
24
+ module Net
25
+ autoload :HTTP, File.expand_path("../monkey_patches/net_http", __dir__)
26
+ end
25
27
  require_relative "ssl_policies"
26
28
  require_relative "http_request"
27
29
 
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "zlib"
19
+ require "zlib" unless defined?(Zlib)
20
20
  require_relative "http_request"
21
21
 
22
22
  class Chef
@@ -20,10 +20,12 @@
20
20
  # See the License for the specific language governing permissions and
21
21
  # limitations under the License.
22
22
  #
23
- require "uri" unless defined?(URI)
24
- require "cgi" unless defined?(CGI)
25
- require "net/http" unless defined?(Net::HTTP)
26
- require_relative "../dist"
23
+ autoload :URI, "uri"
24
+ autoload :CGI, "cgi"
25
+ module Net
26
+ autoload :HTTP, File.expand_path("../monkey_patches/net_http", __dir__)
27
+ end
28
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
27
29
 
28
30
  # To load faster, we only want ohai's version string.
29
31
  # However, in ohai before 0.6.0, the version is defined
@@ -42,7 +44,7 @@ class Chef
42
44
 
43
45
  engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
44
46
 
45
- UA_COMMON = "/#{::Chef::VERSION} (#{engine}-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}; ohai-#{Ohai::VERSION}; #{RUBY_PLATFORM}; +#{Chef::Dist::WEBSITE})".freeze
47
+ UA_COMMON = "/#{::Chef::VERSION} (#{engine}-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}; ohai-#{Ohai::VERSION}; #{RUBY_PLATFORM}; +#{ChefUtils::Dist::Org::WEBSITE})".freeze
46
48
  DEFAULT_UA = "Chef Client" << UA_COMMON
47
49
 
48
50
  USER_AGENT = "User-Agent".freeze
@@ -44,7 +44,10 @@
44
44
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
45
45
 
46
46
  require "chef_zero/server"
47
- require_relative "../dist"
47
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
48
+ module Net
49
+ autoload :HTTPResponse, File.expand_path("../monkey_patches/net_http", __dir__)
50
+ end
48
51
 
49
52
  class Chef
50
53
  class HTTP
@@ -64,7 +67,7 @@ class Chef
64
67
  # or else streaming-style responses won't work.
65
68
  def read_body(dest = nil, &block)
66
69
  if dest
67
- raise "responses from socketless #{Chef::Dist::ZERO} can't be written to specific destination"
70
+ raise "responses from socketless #{ChefUtils::Dist::Zero::PRODUCT} can't be written to specific destination"
68
71
  end
69
72
 
70
73
  if block_given?
@@ -21,7 +21,7 @@
21
21
  # limitations under the License.
22
22
  #
23
23
 
24
- require "openssl" unless defined?(OpenSSL)
24
+ autoload :OpenSSL, "openssl"
25
25
  require_relative "../util/path_helper"
26
26
 
27
27
  class Chef
@@ -17,7 +17,7 @@
17
17
 
18
18
  # Wrapper class for interacting with JSON.
19
19
 
20
- require "ffi_yajl" unless defined?(FFI_Yajl)
20
+ autoload :FFI_Yajl, "ffi_yajl"
21
21
  require_relative "exceptions"
22
22
  # We're requiring this to prevent breaking consumers using Hash.to_json
23
23
  require "json" unless defined?(JSON)
@@ -21,6 +21,7 @@ require "forwardable" unless defined?(Forwardable)
21
21
  require_relative "version"
22
22
  require "mixlib/cli" unless defined?(Mixlib::CLI)
23
23
  require "chef-utils/dsl/default_paths" unless defined?(ChefUtils::DSL::DefaultPaths)
24
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
24
25
  require_relative "workstation_config_loader"
25
26
  require_relative "mixin/convert_to_class_name"
26
27
  require_relative "mixin/default_paths"
@@ -32,12 +33,11 @@ require_relative "http/authenticator"
32
33
  require_relative "http/http_request"
33
34
  require_relative "http"
34
35
  require "pp" unless defined?(PP)
35
- require_relative "dist"
36
36
 
37
37
  class Chef
38
38
  class Knife
39
39
 
40
- Chef::HTTP::HTTPRequest.user_agent = "#{Chef::Dist::PRODUCT} Knife#{Chef::HTTP::HTTPRequest::UA_COMMON}"
40
+ Chef::HTTP::HTTPRequest.user_agent = "#{ChefUtils::Dist::Infra::PRODUCT} Knife#{Chef::HTTP::HTTPRequest::UA_COMMON}"
41
41
 
42
42
  include Mixlib::CLI
43
43
  include ChefUtils::DSL::DefaultPaths
@@ -282,7 +282,7 @@ class Chef
282
282
  elsif category_commands = guess_category(args)
283
283
  list_commands(category_commands)
284
284
  elsif OFFICIAL_PLUGINS.include?(args[0]) # command was an uninstalled official chef knife plugin
285
- ui.info("Use `#{Chef::Dist::EXEC} gem install knife-#{args[0]}` to install the plugin into Chef Workstation")
285
+ ui.info("Use `#{ChefUtils::Dist::Infra::EXEC} gem install knife-#{args[0]}` to install the plugin into Chef Workstation")
286
286
  else
287
287
  list_commands
288
288
  end
@@ -564,7 +564,7 @@ class Chef
564
564
  ui.error "The API version that Knife is using is not supported by the server you sent this request to."
565
565
  ui.info "The request that Knife sent was using API version #{client_api_version}."
566
566
  ui.info "The server you sent the request to supports a min API version of #{min_server_version} and a max API version of #{max_server_version}."
567
- ui.info "Please either update your #{Chef::Dist::PRODUCT} or the server to be a compatible set."
567
+ ui.info "Please either update your #{ChefUtils::Dist::Infra::PRODUCT} or the server to be a compatible set."
568
568
  else
569
569
  ui.error response.message
570
570
  ui.info "Response: #{format_rest_error(response)}"
@@ -18,9 +18,11 @@
18
18
 
19
19
  require_relative "../knife"
20
20
  require_relative "data_bag_secret_options"
21
- require_relative "../dist"
21
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
22
22
  require "license_acceptance/cli_flags/mixlib_cli"
23
- require "license_acceptance/acceptor"
23
+ module LicenseAcceptance
24
+ autoload :Acceptor, "license_acceptance/acceptor"
25
+ end
24
26
 
25
27
  class Chef
26
28
  class Knife
@@ -144,7 +146,7 @@ class Chef
144
146
  # client.rb content via chef-full/bootstrap_context
145
147
  option :bootstrap_version,
146
148
  long: "--bootstrap-version VERSION",
147
- description: "The version of #{Chef::Dist::PRODUCT} to install."
149
+ description: "The version of #{ChefUtils::Dist::Infra::PRODUCT} to install."
148
150
 
149
151
  option :channel,
150
152
  long: "--channel CHANNEL",
@@ -176,7 +178,7 @@ class Chef
176
178
  option :bootstrap_template,
177
179
  short: "-t TEMPLATE",
178
180
  long: "--bootstrap-template TEMPLATE",
179
- description: "Bootstrap #{Chef::Dist::PRODUCT} using a built-in or custom template. Set to the full path of an erb template or use one of the built-in templates."
181
+ description: "Bootstrap #{ChefUtils::Dist::Infra::PRODUCT} using a built-in or custom template. Set to the full path of an erb template or use one of the built-in templates."
180
182
 
181
183
  # client.rb content via bootstrap_context
182
184
  option :node_ssl_verify_mode,
@@ -194,7 +196,7 @@ class Chef
194
196
  # bootstrap_context - client.rb
195
197
  option :node_verify_api_cert,
196
198
  long: "--[no-]node-verify-api-cert",
197
- description: "Verify the SSL cert for HTTPS requests to the #{Chef::Dist::SERVER_PRODUCT} API.",
199
+ description: "Verify the SSL cert for HTTPS requests to the #{ChefUtils::Dist::Server::PRODUCT} API.",
198
200
  boolean: true
199
201
 
200
202
  # runtime - sudo settings (train handles sudo)
@@ -252,14 +254,14 @@ class Chef
252
254
  option :first_boot_attributes,
253
255
  short: "-j JSON_ATTRIBS",
254
256
  long: "--json-attributes",
255
- description: "A JSON string to be added to the first run of #{Chef::Dist::CLIENT}.",
257
+ description: "A JSON string to be added to the first run of #{ChefUtils::Dist::Infra::CLIENT}.",
256
258
  proc: lambda { |o| Chef::JSONCompat.parse(o) },
257
259
  default: nil
258
260
 
259
261
  # bootstrap template
260
262
  option :first_boot_attributes_from_file,
261
263
  long: "--json-attribute-file FILE",
262
- description: "A JSON file to be used to the first run of #{Chef::Dist::CLIENT}.",
264
+ description: "A JSON file to be used to the first run of #{ChefUtils::Dist::Infra::CLIENT}.",
263
265
  proc: lambda { |o| Chef::JSONCompat.parse(File.read(o)) },
264
266
  default: nil
265
267
 
@@ -290,28 +292,28 @@ class Chef
290
292
  option :msi_url, # Windows target only
291
293
  short: "-m URL",
292
294
  long: "--msi-url URL",
293
- description: "Location of the #{Chef::Dist::PRODUCT} MSI. The default templates will prefer to download from this location. The MSI will be downloaded from #{Chef::Dist::WEBSITE} if not provided (Windows).",
295
+ description: "Location of the #{ChefUtils::Dist::Infra::PRODUCT} MSI. The default templates will prefer to download from this location. The MSI will be downloaded from #{ChefUtils::Dist::Org::WEBSITE} if not provided (Windows).",
294
296
  default: ""
295
297
 
296
298
  # bootstrap override: Do this instead of our own setup.sh from omnitruck. Causes bootstrap_url to be ignored.
297
299
  option :bootstrap_install_command,
298
300
  long: "--bootstrap-install-command COMMANDS",
299
- description: "Custom command to install #{Chef::Dist::PRODUCT}."
301
+ description: "Custom command to install #{ChefUtils::Dist::Infra::PRODUCT}."
300
302
 
301
303
  # bootstrap template: Run this command first in the bootstrap script
302
304
  option :bootstrap_preinstall_command,
303
305
  long: "--bootstrap-preinstall-command COMMANDS",
304
- description: "Custom commands to run before installing #{Chef::Dist::PRODUCT}."
306
+ description: "Custom commands to run before installing #{ChefUtils::Dist::Infra::PRODUCT}."
305
307
 
306
308
  # bootstrap template
307
309
  option :bootstrap_wget_options,
308
310
  long: "--bootstrap-wget-options OPTIONS",
309
- description: "Add options to wget when installing #{Chef::Dist::PRODUCT}."
311
+ description: "Add options to wget when installing #{ChefUtils::Dist::Infra::PRODUCT}."
310
312
 
311
313
  # bootstrap template
312
314
  option :bootstrap_curl_options,
313
315
  long: "--bootstrap-curl-options OPTIONS",
314
- description: "Add options to curl when install #{Chef::Dist::PRODUCT}."
316
+ description: "Add options to curl when install #{ChefUtils::Dist::Infra::PRODUCT}."
315
317
 
316
318
  # chef_vault_handler
317
319
  option :bootstrap_vault_file,
@@ -487,7 +489,7 @@ class Chef
487
489
 
488
490
  # Otherwise search the template directories until we find the right one
489
491
  bootstrap_files = []
490
- bootstrap_files << File.join(File.dirname(__FILE__), "bootstrap/templates", "#{template}.erb")
492
+ bootstrap_files << File.join(__dir__, "bootstrap/templates", "#{template}.erb")
491
493
  bootstrap_files << File.join(Knife.chef_config_dir, "bootstrap", "#{template}.erb") if Chef::Knife.chef_config_dir
492
494
  Chef::Util::PathHelper.home(".chef", "bootstrap", "#{template}.erb") { |p| bootstrap_files << p }
493
495
  bootstrap_files << Gem.find_files(File.join("chef", "knife", "bootstrap", "#{template}.erb"))
@@ -538,7 +540,7 @@ class Chef
538
540
  end
539
541
 
540
542
  def run
541
- check_license if ChefConfig::Dist::ENFORCE_LICENSE
543
+ check_license if ChefUtils::Dist::Org::ENFORCE_LICENSE
542
544
 
543
545
  plugin_setup!
544
546
  validate_name_args!
@@ -112,7 +112,7 @@ class Chef
112
112
  if bootstrap_vault_item
113
113
  bootstrap_vault_item
114
114
  else
115
- json = bootstrap_vault_json ? bootstrap_vault_json : File.read(bootstrap_vault_file)
115
+ json = bootstrap_vault_json || File.read(bootstrap_vault_file)
116
116
  Chef::JSONCompat.from_json(json)
117
117
  end
118
118
  end
@@ -172,8 +172,8 @@ do_download() {
172
172
  <%= @config[:bootstrap_install_command] %>
173
173
  <% else %>
174
174
  install_sh="<%= @config[:bootstrap_url] ? @config[:bootstrap_url] : "https://omnitruck.chef.io/chef/install.sh" %>"
175
- if test -f /usr/bin/<%= Chef::Dist::CLIENT %>; then
176
- echo "-----> Existing <%= Chef::Dist::PRODUCT %> installation detected"
175
+ if test -f /usr/bin/<%= ChefUtils::Dist::Infra::CLIENT %>; then
176
+ echo "-----> Existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation detected"
177
177
  else
178
178
  echo "-----> Installing Chef Omnibus (<%= @config[:channel] %>/<%= version_to_install %>)"
179
179
  do_download ${install_sh} $tmp_dir/install.sh
@@ -237,6 +237,6 @@ mkdir -p /etc/chef/client.d
237
237
  <%= client_d %>
238
238
  <% end -%>
239
239
 
240
- echo "Starting the first <%= Chef::Dist::PRODUCT %> Client run..."
240
+ echo "Starting the first <%= ChefUtils::Dist::Infra::PRODUCT %> Client run..."
241
241
 
242
242
  <%= start_chef %>
@@ -109,13 +109,13 @@ goto Version10.0
109
109
  goto chef_installed
110
110
 
111
111
  :chef_installed
112
- @echo Checking for existing <%= Chef::Dist::PRODUCT %> installation
113
- WHERE <%= Chef::Dist::CLIENT %> >nul 2>nul
112
+ @echo Checking for existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation
113
+ WHERE <%= ChefUtils::Dist::Infra::CLIENT %> >nul 2>nul
114
114
  If !ERRORLEVEL!==0 (
115
- @echo Existing <%= Chef::Dist::PRODUCT %> installation detected, skipping download
115
+ @echo Existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation detected, skipping download
116
116
  goto key_create
117
117
  ) else (
118
- @echo No existing installation of <%= Chef::Dist::PRODUCT %> detected
118
+ @echo No existing installation of <%= ChefUtils::Dist::Infra::PRODUCT %> detected
119
119
  goto install
120
120
  )
121
121
 
@@ -127,7 +127,7 @@ If !ERRORLEVEL!==0 (
127
127
  @rem Install Chef using the MSI installer
128
128
 
129
129
  @set "LOCAL_DESTINATION_MSI_PATH=<%= local_download_path %>"
130
- @set "CHEF_CLIENT_MSI_LOG_PATH=%TEMP%\<%= Chef::Dist::CLIENT %>-msi%RANDOM%.log"
130
+ @set "CHEF_CLIENT_MSI_LOG_PATH=%TEMP%\<%= ChefUtils::Dist::Infra::CLIENT %>-msi%RANDOM%.log"
131
131
 
132
132
  @rem Clear any pre-existing downloads
133
133
  @echo Checking for existing downloaded package at "%LOCAL_DESTINATION_MSI_PATH%"
@@ -197,7 +197,7 @@ If !ERRORLEVEL!==0 (
197
197
  <%= install_chef %>
198
198
 
199
199
  @if ERRORLEVEL 1 (
200
- echo <%= Chef::Dist::CLIENT %> package failed to install with status code !ERRORLEVEL!. > "&2"
200
+ echo <%= ChefUtils::Dist::Infra::CLIENT %> package failed to install with status code !ERRORLEVEL!. > "&2"
201
201
  echo See installation log for additional detail: %CHEF_CLIENT_MSI_LOG_PATH%. > "&2"
202
202
  ) else (
203
203
  @echo Installation completed successfully
@@ -274,5 +274,5 @@ echo Validation key written.
274
274
  <%= client_d %>
275
275
  <% end -%>
276
276
 
277
- @echo Starting <%= Chef::Dist::CLIENT %> to bootstrap the node...
277
+ @echo Starting <%= ChefUtils::Dist::Infra::CLIENT %> to bootstrap the node...
278
278
  <%= start_chef %>
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "../knife"
20
- require_relative "../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  class Knife
@@ -30,7 +30,7 @@ class Chef
30
30
  option :file,
31
31
  short: "-f FILE",
32
32
  long: "--file FILE",
33
- description: "Write the private key to a file if the #{Chef::Dist::SERVER_PRODUCT} generated one."
33
+ description: "Write the private key to a file if the #{ChefUtils::Dist::Server::PRODUCT} generated one."
34
34
 
35
35
  option :validator,
36
36
  long: "--validator",
@@ -45,7 +45,7 @@ class Chef
45
45
  option :prevent_keygen,
46
46
  short: "-k",
47
47
  long: "--prevent-keygen",
48
- description: "Prevent #{Chef::Dist::SERVER_PRODUCT} from generating a default key pair for you. Cannot be passed with --public-key.",
48
+ description: "Prevent #{ChefUtils::Dist::Server::PRODUCT} from generating a default key pair for you. Cannot be passed with --public-key.",
49
49
  boolean: true
50
50
 
51
51
  banner "knife client create CLIENTNAME (options)"