chef 16.4.35 → 16.6.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (320) 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/api_client/registration.rb +6 -6
  7. data/lib/chef/application.rb +19 -22
  8. data/lib/chef/application/apply.rb +12 -7
  9. data/lib/chef/application/base.rb +26 -25
  10. data/lib/chef/application/client.rb +16 -8
  11. data/lib/chef/application/exit_code.rb +13 -4
  12. data/lib/chef/application/knife.rb +22 -11
  13. data/lib/chef/application/solo.rb +2 -1
  14. data/lib/chef/application/windows_service.rb +14 -14
  15. data/lib/chef/application/windows_service_manager.rb +6 -6
  16. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  18. data/lib/chef/chef_fs/knife.rb +2 -2
  19. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  20. data/lib/chef/client.rb +12 -42
  21. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  22. data/lib/chef/cookbook/gem_installer.rb +1 -1
  23. data/lib/chef/cookbook/synchronizer.rb +2 -2
  24. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  25. data/lib/chef/cookbook_uploader.rb +1 -1
  26. data/lib/chef/data_collector.rb +7 -6
  27. data/lib/chef/data_collector/config_validation.rb +22 -13
  28. data/lib/chef/data_collector/run_end_message.rb +2 -2
  29. data/lib/chef/data_collector/run_start_message.rb +1 -1
  30. data/lib/chef/deprecated.rb +1 -1
  31. data/lib/chef/deprecation/warnings.rb +2 -2
  32. data/lib/chef/digester.rb +2 -2
  33. data/lib/chef/dsl/chef_vault.rb +1 -1
  34. data/lib/chef/dsl/data_query.rb +2 -2
  35. data/lib/chef/dsl/platform_introspection.rb +1 -1
  36. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  37. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  38. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  39. data/lib/chef/environment.rb +2 -2
  40. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  41. data/lib/chef/exceptions.rb +4 -4
  42. data/lib/chef/file_access_control/windows.rb +5 -1
  43. data/lib/chef/file_content_management/tempfile.rb +1 -1
  44. data/lib/chef/formatters/doc.rb +7 -6
  45. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  46. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  47. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  48. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  49. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  50. data/lib/chef/formatters/indentable_output_stream.rb +2 -2
  51. data/lib/chef/formatters/minimal.rb +5 -4
  52. data/lib/chef/http.rb +6 -4
  53. data/lib/chef/http/auth_credentials.rb +5 -1
  54. data/lib/chef/http/authenticator.rb +1 -1
  55. data/lib/chef/http/basic_client.rb +4 -2
  56. data/lib/chef/http/decompressor.rb +1 -1
  57. data/lib/chef/http/http_request.rb +7 -5
  58. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  59. data/lib/chef/http/ssl_policies.rb +1 -1
  60. data/lib/chef/json_compat.rb +1 -1
  61. data/lib/chef/knife.rb +4 -4
  62. data/lib/chef/knife/bootstrap.rb +16 -14
  63. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  64. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  65. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  66. data/lib/chef/knife/client_create.rb +3 -3
  67. data/lib/chef/knife/config_get.rb +8 -97
  68. data/lib/chef/knife/config_get_profile.rb +9 -9
  69. data/lib/chef/knife/config_list.rb +139 -0
  70. data/lib/chef/knife/config_list_profiles.rb +8 -98
  71. data/lib/chef/knife/config_show.rb +127 -0
  72. data/lib/chef/knife/config_use.rb +61 -0
  73. data/lib/chef/knife/config_use_profile.rb +9 -24
  74. data/lib/chef/knife/configure.rb +4 -2
  75. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  76. data/lib/chef/knife/core/object_loader.rb +1 -1
  77. data/lib/chef/knife/core/ui.rb +1 -1
  78. data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
  79. data/lib/chef/knife/exec.rb +2 -2
  80. data/lib/chef/knife/node_policy_set.rb +2 -2
  81. data/lib/chef/knife/node_run_list_add.rb +1 -1
  82. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  83. data/lib/chef/knife/node_run_list_set.rb +1 -1
  84. data/lib/chef/knife/node_show.rb +2 -2
  85. data/lib/chef/knife/role_env_run_list_add.rb +1 -1
  86. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  87. data/lib/chef/knife/role_run_list_add.rb +1 -1
  88. data/lib/chef/knife/role_run_list_set.rb +1 -1
  89. data/lib/chef/knife/search.rb +0 -1
  90. data/lib/chef/knife/serve.rb +3 -3
  91. data/lib/chef/knife/ssh.rb +18 -3
  92. data/lib/chef/knife/ssl_check.rb +3 -3
  93. data/lib/chef/knife/status.rb +2 -2
  94. data/lib/chef/knife/tag_create.rb +1 -1
  95. data/lib/chef/knife/tag_delete.rb +1 -1
  96. data/lib/chef/knife/user_create.rb +2 -2
  97. data/lib/chef/knife/yaml_convert.rb +1 -1
  98. data/lib/chef/local_mode.rb +2 -2
  99. data/lib/chef/log/syslog.rb +2 -2
  100. data/lib/chef/log/winevt.rb +2 -2
  101. data/lib/chef/mixin/deep_merge.rb +0 -12
  102. data/lib/chef/mixin/openssl_helper.rb +1 -4
  103. data/lib/chef/mixin/powershell_exec.rb +22 -10
  104. data/lib/chef/mixin/powershell_out.rb +12 -5
  105. data/lib/chef/mixin/template.rb +3 -3
  106. data/lib/chef/mixin/uris.rb +4 -2
  107. data/lib/chef/mixin/versioned_api.rb +1 -2
  108. data/lib/chef/monkey_patches/net_http.rb +4 -4
  109. data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
  110. data/lib/chef/node_map.rb +4 -4
  111. data/lib/chef/policy_builder/dynamic.rb +2 -0
  112. data/lib/chef/policy_builder/policyfile.rb +2 -2
  113. data/lib/chef/powershell.rb +3 -2
  114. data/lib/chef/provider.rb +1 -5
  115. data/lib/chef/provider/file.rb +2 -2
  116. data/lib/chef/provider/ifconfig.rb +2 -2
  117. data/lib/chef/provider/ifconfig/debian.rb +33 -15
  118. data/lib/chef/provider/ifconfig/redhat.rb +51 -17
  119. data/lib/chef/provider/launchd.rb +2 -2
  120. data/lib/chef/provider/link.rb +0 -9
  121. data/lib/chef/provider/mount/linux.rb +63 -0
  122. data/lib/chef/provider/package/dpkg.rb +3 -12
  123. data/lib/chef/provider/package/homebrew.rb +1 -1
  124. data/lib/chef/provider/package/rubygems.rb +21 -18
  125. data/lib/chef/provider/package/snap.rb +0 -1
  126. data/lib/chef/provider/package/windows.rb +2 -2
  127. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
  128. data/lib/chef/provider/package/zypper.rb +1 -1
  129. data/lib/chef/provider/powershell_script.rb +12 -1
  130. data/lib/chef/provider/remote_file/content.rb +3 -0
  131. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  132. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  133. data/lib/chef/provider/route.rb +2 -6
  134. data/lib/chef/provider/service/macosx.rb +2 -2
  135. data/lib/chef/provider/service/redhat.rb +1 -1
  136. data/lib/chef/provider/template_finder.rb +2 -10
  137. data/lib/chef/provider/user/dscl.rb +5 -5
  138. data/lib/chef/provider/user/mac.rb +3 -3
  139. data/lib/chef/provider/windows_task.rb +1 -2
  140. data/lib/chef/provider/zypper_repository.rb +2 -2
  141. data/lib/chef/provider_resolver.rb +1 -1
  142. data/lib/chef/providers.rb +1 -0
  143. data/lib/chef/pwsh.rb +64 -0
  144. data/lib/chef/recipe.rb +2 -2
  145. data/lib/chef/resource.rb +2 -2
  146. data/lib/chef/resource/apt_repository.rb +6 -5
  147. data/lib/chef/resource/bff_package.rb +22 -0
  148. data/lib/chef/resource/breakpoint.rb +57 -2
  149. data/lib/chef/resource/build_essential.rb +1 -1
  150. data/lib/chef/resource/cab_package.rb +29 -0
  151. data/lib/chef/resource/chef_client_config.rb +313 -0
  152. data/lib/chef/resource/chef_client_cron.rb +35 -28
  153. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  154. data/lib/chef/resource/chef_client_scheduled_task.rb +24 -21
  155. data/lib/chef/resource/chef_client_systemd_timer.rb +27 -20
  156. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  157. data/lib/chef/resource/chef_gem.rb +10 -10
  158. data/lib/chef/resource/chef_handler.rb +149 -4
  159. data/lib/chef/resource/chef_sleep.rb +3 -3
  160. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  161. data/lib/chef/resource/cookbook_file.rb +2 -2
  162. data/lib/chef/resource/cron/_cron_shared.rb +1 -0
  163. data/lib/chef/resource/cron/cron_d.rb +2 -3
  164. data/lib/chef/resource/dnf_package.rb +2 -2
  165. data/lib/chef/resource/dsc_resource.rb +0 -1
  166. data/lib/chef/resource/dsc_script.rb +2 -2
  167. data/lib/chef/resource/execute.rb +6 -6
  168. data/lib/chef/resource/file.rb +4 -4
  169. data/lib/chef/resource/gem_package.rb +5 -5
  170. data/lib/chef/resource/homebrew_package.rb +3 -3
  171. data/lib/chef/resource/homebrew_update.rb +5 -5
  172. data/lib/chef/resource/hostname.rb +2 -2
  173. data/lib/chef/resource/kernel_module.rb +1 -1
  174. data/lib/chef/resource/launchd.rb +17 -16
  175. data/lib/chef/resource/locale.rb +2 -2
  176. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  177. data/lib/chef/resource/mount.rb +1 -1
  178. data/lib/chef/resource/notify_group.rb +0 -1
  179. data/lib/chef/resource/ohai.rb +46 -3
  180. data/lib/chef/resource/ohai_hint.rb +33 -0
  181. data/lib/chef/resource/openssl_dhparam.rb +27 -5
  182. data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
  183. data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
  184. data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
  185. data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
  186. data/lib/chef/resource/openssl_x509_crl.rb +19 -10
  187. data/lib/chef/resource/openssl_x509_request.rb +14 -16
  188. data/lib/chef/resource/osx_profile.rb +77 -13
  189. data/lib/chef/resource/plist.rb +1 -1
  190. data/lib/chef/resource/powershell_package_source.rb +5 -5
  191. data/lib/chef/resource/powershell_script.rb +7 -1
  192. data/lib/chef/resource/reboot.rb +2 -2
  193. data/lib/chef/resource/remote_file.rb +3 -3
  194. data/lib/chef/resource/rhsm_register.rb +22 -10
  195. data/lib/chef/resource/ruby_block.rb +2 -2
  196. data/lib/chef/resource/scm/subversion.rb +2 -2
  197. data/lib/chef/resource/service.rb +3 -3
  198. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  199. data/lib/chef/resource/support/client.erb +65 -0
  200. data/lib/chef/resource/support/cron.d.erb +1 -1
  201. data/lib/chef/resource/support/cron_access.erb +1 -1
  202. data/lib/chef/resource/support/sudoer.erb +1 -1
  203. data/lib/chef/resource/support/ulimit.erb +1 -1
  204. data/lib/chef/resource/sysctl.rb +1 -5
  205. data/lib/chef/resource/systemd_unit.rb +2 -2
  206. data/lib/chef/resource/template.rb +2 -2
  207. data/lib/chef/resource/timezone.rb +112 -73
  208. data/lib/chef/resource/windows_ad_join.rb +10 -3
  209. data/lib/chef/resource/windows_audit_policy.rb +26 -24
  210. data/lib/chef/resource/windows_certificate.rb +6 -4
  211. data/lib/chef/resource/windows_firewall_profile.rb +22 -20
  212. data/lib/chef/resource/windows_package.rb +28 -5
  213. data/lib/chef/resource/windows_printer.rb +5 -3
  214. data/lib/chef/resource/windows_printer_port.rb +6 -4
  215. data/lib/chef/resource/windows_user_privilege.rb +53 -54
  216. data/lib/chef/resource/windows_workgroup.rb +3 -3
  217. data/lib/chef/resource/yum_package.rb +2 -2
  218. data/lib/chef/resource_reporter.rb +0 -2
  219. data/lib/chef/resources.rb +4 -1
  220. data/lib/chef/run_context.rb +2 -2
  221. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  222. data/lib/chef/run_lock.rb +2 -2
  223. data/lib/chef/search/query.rb +6 -5
  224. data/lib/chef/shell.rb +31 -26
  225. data/lib/chef/shell/ext.rb +11 -11
  226. data/lib/chef/shell/shell_session.rb +2 -2
  227. data/lib/chef/train_transport.rb +5 -104
  228. data/lib/chef/util/backup.rb +1 -1
  229. data/lib/chef/util/diff.rb +3 -3
  230. data/lib/chef/util/powershell/cmdlet.rb +3 -1
  231. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  232. data/lib/chef/util/threaded_job_queue.rb +0 -2
  233. data/lib/chef/version.rb +1 -1
  234. data/lib/chef/win32/crypto.rb +1 -1
  235. data/lib/chef/win32/file.rb +1 -1
  236. data/lib/chef/win32/registry.rb +1 -2
  237. data/lib/chef/win32/unicode.rb +1 -1
  238. data/spec/data/shef-config.rb +1 -1
  239. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  240. data/spec/functional/mixin/powershell_out_spec.rb +9 -1
  241. data/spec/functional/resource/aix_service_spec.rb +2 -2
  242. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  243. data/spec/functional/resource/insserv_spec.rb +1 -1
  244. data/spec/functional/resource/powershell_script_spec.rb +57 -14
  245. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  246. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  247. data/spec/functional/resource/windows_task_spec.rb +13 -13
  248. data/spec/functional/version_spec.rb +3 -3
  249. data/spec/integration/client/client_spec.rb +4 -4
  250. data/spec/integration/client/exit_code_spec.rb +3 -2
  251. data/spec/integration/client/ipv6_spec.rb +1 -1
  252. data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
  253. data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
  254. data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
  255. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  256. data/spec/integration/ohai/ohai_spec.rb +61 -0
  257. data/spec/integration/recipes/remote_directory.rb +1 -1
  258. data/spec/integration/solo/solo_spec.rb +5 -5
  259. data/spec/spec_helper.rb +8 -6
  260. data/spec/stress/win32/file_spec.rb +1 -1
  261. data/spec/support/chef_helpers.rb +2 -2
  262. data/spec/support/matchers/leak.rb +2 -2
  263. data/spec/support/platform_helpers.rb +22 -35
  264. data/spec/support/shared/functional/securable_resource.rb +108 -27
  265. data/spec/support/shared/functional/win32_service.rb +1 -1
  266. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  267. data/spec/tiny_server.rb +0 -1
  268. data/spec/unit/application/client_spec.rb +2 -2
  269. data/spec/unit/application/exit_code_spec.rb +10 -0
  270. data/spec/unit/application_spec.rb +4 -6
  271. data/spec/unit/chef_fs/config_spec.rb +1 -1
  272. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  273. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  274. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  275. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  276. data/spec/unit/cookbook_spec.rb +2 -2
  277. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  278. data/spec/unit/data_collector_spec.rb +6 -117
  279. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  280. data/spec/unit/file_access_control_spec.rb +1 -1
  281. data/spec/unit/knife/bootstrap_spec.rb +6 -6
  282. data/spec/unit/knife/core/ui_spec.rb +1 -0
  283. data/spec/unit/knife/ssh_spec.rb +2 -2
  284. data/spec/unit/lwrp_spec.rb +3 -3
  285. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  286. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  287. data/spec/unit/mixin/powershell_exec_spec.rb +39 -2
  288. data/spec/unit/mixin/powershell_out_spec.rb +14 -0
  289. data/spec/unit/mixin/securable_spec.rb +2 -2
  290. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  291. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  292. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  293. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  294. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  295. data/spec/unit/provider/powershell_script_spec.rb +11 -0
  296. data/spec/unit/provider/route_spec.rb +0 -2
  297. data/spec/unit/recipe_spec.rb +1 -1
  298. data/spec/unit/resource/chef_client_config_spec.rb +137 -0
  299. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  300. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  301. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  302. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  303. data/spec/unit/resource/launchd_spec.rb +8 -0
  304. data/spec/unit/resource/osx_profile_spec.rb +67 -1
  305. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  306. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  307. data/spec/unit/resource/timezone_spec.rb +63 -0
  308. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  309. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  310. data/spec/unit/run_lock_spec.rb +5 -1
  311. data/spec/unit/runner_spec.rb +1 -2
  312. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  313. data/spec/unit/shell/shell_session_spec.rb +35 -64
  314. data/spec/unit/shell_spec.rb +16 -19
  315. data/spec/unit/train_transport_spec.rb +14 -13
  316. data/spec/unit/util/selinux_spec.rb +2 -0
  317. data/tasks/rspec.rb +0 -2
  318. metadata +46 -18
  319. data/lib/chef/dist.rb +0 -68
  320. data/spec/integration/knife/config_get_profile_spec.rb +0 -114
@@ -76,7 +76,7 @@ class Chef
76
76
  # complexity here is due to supporting mangling non-UTF8 strings (e.g. latin-1 filenames with characters that are illegal in UTF-8)
77
77
  b = File.basename(@new_resource.path)
78
78
  i = b.index(".")
79
- i.nil? ? "" : b[i..-1].scrub
79
+ i.nil? ? "" : b[i..].scrub
80
80
  end
81
81
 
82
82
  # Returns the possible directories for the tempfile to be created in.
@@ -1,6 +1,6 @@
1
1
  require_relative "base"
2
2
  require_relative "../config"
3
- require_relative "../dist"
3
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
4
4
 
5
5
  class Chef
6
6
  module Formatters
@@ -41,7 +41,8 @@ class Chef
41
41
  end
42
42
 
43
43
  def run_start(version, run_status)
44
- puts_line "Starting #{Chef::Dist::PRODUCT}, version #{version}"
44
+ puts_line "Starting #{ChefUtils::Dist::Infra::PRODUCT}, version #{version}"
45
+ puts_line "Patents: #{ChefUtils::Dist::Org::PATENTS}"
45
46
  puts_line "Targeting node: #{Chef::Config.target_mode.host}" if Chef::Config.target_mode?
46
47
  puts_line "OpenSSL FIPS 140 mode enabled" if Chef::Config[:fips]
47
48
  end
@@ -77,18 +78,18 @@ class Chef
77
78
  puts_line ""
78
79
  end
79
80
  if Chef::Config[:why_run]
80
- puts_line "#{Chef::Dist::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources would have been updated"
81
+ puts_line "#{ChefUtils::Dist::Infra::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources would have been updated"
81
82
  else
82
- puts_line "#{Chef::Dist::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources updated in #{pretty_elapsed_time}"
83
+ puts_line "#{ChefUtils::Dist::Infra::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources updated in #{pretty_elapsed_time}"
83
84
  end
84
85
  end
85
86
 
86
87
  def run_failed(exception)
87
88
  @end_time = Time.now
88
89
  if Chef::Config[:why_run]
89
- puts_line "#{Chef::Dist::PRODUCT} failed. #{@updated_resources} resources would have been updated"
90
+ puts_line "#{ChefUtils::Dist::Infra::PRODUCT} failed. #{@updated_resources} resources would have been updated"
90
91
  else
91
- puts_line "#{Chef::Dist::PRODUCT} failed. #{@updated_resources} resources updated in #{pretty_elapsed_time}"
92
+ puts_line "#{ChefUtils::Dist::Infra::PRODUCT} failed. #{@updated_resources} resources updated in #{pretty_elapsed_time}"
92
93
  end
93
94
  end
94
95
 
@@ -17,7 +17,8 @@
17
17
  #
18
18
 
19
19
  require_relative "../../http/authenticator"
20
- require_relative "../../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
+ require "timeout" unless defined?(Timeout)
21
22
 
22
23
  class Chef
23
24
  module Formatters
@@ -40,7 +41,7 @@ class Chef
40
41
  def describe_eof_error(error_description)
41
42
  error_description.section("Authentication Error:", <<~E)
42
43
  Received an EOF on transport socket. This almost always indicates a network
43
- error external to #{Chef::Dist::CLIENT}. Some causes include:
44
+ error external to #{ChefUtils::Dist::Infra::CLIENT}. Some causes include:
44
45
 
45
46
  - Blocking ICMP Dest Unreachable (breaking Path MTU Discovery)
46
47
  - IPsec or VPN tunnelling / TCP Encapsulation MTU issues
@@ -114,8 +115,8 @@ class Chef
114
115
  error_description.section("Incompatible server API version:", <<~E)
115
116
  This version of the API that this request specified is not supported by the server you sent this request to.
116
117
  The server supports a min API version of #{min_server_version} and a max API version of #{max_server_version}.
117
- #{Chef::Dist::PRODUCT} just made a request with an API version of #{client_api_version}.
118
- Please either update your #{Chef::Dist::PRODUCT} or the server to be a compatible set.
118
+ #{ChefUtils::Dist::Infra::PRODUCT} just made a request with an API version of #{client_api_version}.
119
+ Please either update your #{ChefUtils::Dist::Infra::PRODUCT} or the server to be a compatible set.
119
120
  E
120
121
  else
121
122
  describe_http_error(error_description)
@@ -130,7 +131,7 @@ class Chef
130
131
  end
131
132
 
132
133
  def describe_503_error(error_description)
133
- error_description.section("Server Unavailable", "The #{Chef::Dist::SERVER_PRODUCT} is temporarily unavailable")
134
+ error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
134
135
  error_description.section("Server Response:", format_rest_error)
135
136
  end
136
137
 
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "api_error_formatting"
20
- require_relative "../../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  module Formatters
@@ -46,7 +46,7 @@ class Chef
46
46
  when Chef::Exceptions::PrivateKeyMissing
47
47
  error_description.section("Private Key Not Found:", <<~E)
48
48
  Your private key could not be loaded. If the key file exists, ensure that it is
49
- readable by #{Chef::Dist::PRODUCT}.
49
+ readable by #{ChefUtils::Dist::Infra::PRODUCT}.
50
50
  E
51
51
  error_description.section("Relevant Config Settings:", <<~E)
52
52
  client_key "#{api_key}"
@@ -99,7 +99,7 @@ class Chef
99
99
  # redirect.
100
100
  def describe_404_error(error_description)
101
101
  error_description.section("Resource Not Found:", <<~E)
102
- The #{Chef::Dist::SERVER_PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url is incorrect.
102
+ The #{ChefUtils::Dist::Server::PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url is incorrect.
103
103
  E
104
104
  error_description.section("Relevant Config Settings:", <<~E)
105
105
  chef_server_url "#{server_url}"
@@ -1,4 +1,4 @@
1
- require_relative "../../dist"
1
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
2
2
 
3
3
  class Chef
4
4
  module Formatters
@@ -28,7 +28,7 @@ class Chef
28
28
  humanize_http_exception(error_description)
29
29
  when Errno::ECONNREFUSED, Timeout::Error, Errno::ETIMEDOUT, SocketError
30
30
  error_description.section("Network Error:", <<~E)
31
- There was a network error connecting to the #{Chef::Dist::SERVER_PRODUCT}:
31
+ There was a network error connecting to the #{ChefUtils::Dist::Server::PRODUCT}:
32
32
  #{exception.message}
33
33
  E
34
34
  error_description.section("Relevant Config Settings:", <<~E)
@@ -39,14 +39,14 @@ class Chef
39
39
  when Chef::Exceptions::PrivateKeyMissing
40
40
  error_description.section("Private Key Not Found:", <<~E)
41
41
  Your private key could not be loaded. If the key file exists, ensure that it is
42
- readable by #{Chef::Dist::PRODUCT}.
42
+ readable by #{ChefUtils::Dist::Infra::PRODUCT}.
43
43
  E
44
44
  error_description.section("Relevant Config Settings:", <<~E)
45
45
  validation_key "#{api_key}"
46
46
  E
47
47
  when Chef::Exceptions::InvalidRedirect
48
48
  error_description.section("Invalid Redirect:", <<~E)
49
- Change your #{Chef::Dist::SERVER_PRODUCT} location in client.rb to the #{Chef::Dist::SERVER_PRODUCT}'s FQDN to avoid unwanted redirections.
49
+ Change your #{ChefUtils::Dist::Server::PRODUCT} location in client.rb to the #{ChefUtils::Dist::Server::PRODUCT}'s FQDN to avoid unwanted redirections.
50
50
  E
51
51
  when EOFError
52
52
  describe_eof_error(error_description)
@@ -61,13 +61,13 @@ class Chef
61
61
  when Net::HTTPUnauthorized
62
62
  if clock_skew?
63
63
  error_description.section("Authentication Error:", <<~E)
64
- Failed to authenticate to the #{Chef::Dist::SERVER_PRODUCT} (http 401).
64
+ Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
65
65
  The request failed because your clock has drifted by more than 15 minutes.
66
66
  Syncing your clock to an NTP Time source should resolve the issue.
67
67
  E
68
68
  else
69
69
  error_description.section("Authentication Error:", <<~E)
70
- Failed to authenticate to the #{Chef::Dist::SERVER_PRODUCT} (http 401).
70
+ Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
71
71
  E
72
72
 
73
73
  error_description.section("Server Response:", format_rest_error)
@@ -81,7 +81,7 @@ class Chef
81
81
  end
82
82
  when Net::HTTPForbidden
83
83
  error_description.section("Authorization Error:", <<~E)
84
- Your validation client is not authorized to create the client for this node on the #{Chef::Dist::SERVER_PRODUCT} (HTTP 403).
84
+ Your validation client is not authorized to create the client for this node on the #{ChefUtils::Dist::Server::PRODUCT} (HTTP 403).
85
85
  E
86
86
  error_description.section("Possible Causes:", <<~E)
87
87
  * There may already be a client named "#{config[:node_name]}"
@@ -94,7 +94,7 @@ class Chef
94
94
  error_description.section("Server Response:", format_rest_error)
95
95
  when Net::HTTPNotFound
96
96
  error_description.section("Resource Not Found:", <<~E)
97
- The #{Chef::Dist::SERVER_PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url configuration is incorrect.
97
+ The #{ChefUtils::Dist::Server::PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url configuration is incorrect.
98
98
  E
99
99
  error_description.section("Relevant Config Settings:", <<~E)
100
100
  chef_server_url "#{server_url}"
@@ -107,7 +107,7 @@ class Chef
107
107
  E
108
108
  error_description.section("Server Response:", format_rest_error)
109
109
  when Net::HTTPBadGateway, Net::HTTPServiceUnavailable
110
- error_description.section("Server Unavailable", "The #{Chef::Dist::SERVER_PRODUCT} is temporarily unavailable")
110
+ error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
111
111
  error_description.section("Server Response:", format_rest_error)
112
112
  else
113
113
  error_description.section("Unexpected API Request Failure:", format_rest_error)
@@ -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::CANARY)
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)
@@ -20,7 +20,7 @@ class Chef
20
20
  # pastel.decorate is a lightweight replacement for highline.color
21
21
  def pastel
22
22
  @pastel ||= begin
23
- require "pastel"
23
+ require "pastel" unless defined?(Pastel)
24
24
  Pastel.new
25
25
  end
26
26
  end
@@ -126,7 +126,7 @@ class Chef
126
126
  indent_line(options)
127
127
 
128
128
  # Note that the next line will need to be started
129
- if line[-1..-1] == "\n"
129
+ if line[-1..] == "\n"
130
130
  @line_started = false
131
131
  end
132
132
 
@@ -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)}"