chef 16.4.41-universal-mingw32 → 16.5.64-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 (271) 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/distro/templates/powershell/chef/chef.psm1.erb +18 -18
  7. data/ext/win32-eventlog/Rakefile +2 -2
  8. data/ext/win32-eventlog/chef-log.man.erb +4 -4
  9. data/lib/chef/application.rb +18 -16
  10. data/lib/chef/application/apply.rb +12 -7
  11. data/lib/chef/application/base.rb +26 -23
  12. data/lib/chef/application/client.rb +10 -4
  13. data/lib/chef/application/exit_code.rb +13 -4
  14. data/lib/chef/application/knife.rb +22 -11
  15. data/lib/chef/application/solo.rb +2 -1
  16. data/lib/chef/application/windows_service.rb +14 -14
  17. data/lib/chef/application/windows_service_manager.rb +6 -6
  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 +10 -11
  21. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  22. data/lib/chef/cookbook/synchronizer.rb +2 -2
  23. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  24. data/lib/chef/cookbook_uploader.rb +1 -1
  25. data/lib/chef/data_collector.rb +6 -5
  26. data/lib/chef/data_collector/config_validation.rb +22 -13
  27. data/lib/chef/data_collector/run_end_message.rb +2 -2
  28. data/lib/chef/data_collector/run_start_message.rb +1 -1
  29. data/lib/chef/deprecated.rb +1 -1
  30. data/lib/chef/deprecation/warnings.rb +2 -2
  31. data/lib/chef/digester.rb +2 -2
  32. data/lib/chef/dsl/chef_vault.rb +1 -1
  33. data/lib/chef/dsl/data_query.rb +2 -2
  34. data/lib/chef/dsl/platform_introspection.rb +1 -1
  35. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  36. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  37. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  38. data/lib/chef/environment.rb +2 -2
  39. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  40. data/lib/chef/exceptions.rb +4 -4
  41. data/lib/chef/file_access_control/windows.rb +5 -1
  42. data/lib/chef/formatters/doc.rb +7 -6
  43. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  44. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  45. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  46. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  47. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  48. data/lib/chef/formatters/minimal.rb +5 -4
  49. data/lib/chef/http.rb +6 -4
  50. data/lib/chef/http/auth_credentials.rb +5 -1
  51. data/lib/chef/http/authenticator.rb +1 -1
  52. data/lib/chef/http/basic_client.rb +4 -2
  53. data/lib/chef/http/decompressor.rb +1 -1
  54. data/lib/chef/http/http_request.rb +7 -5
  55. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  56. data/lib/chef/http/ssl_policies.rb +1 -1
  57. data/lib/chef/json_compat.rb +1 -1
  58. data/lib/chef/knife.rb +4 -4
  59. data/lib/chef/knife/bootstrap.rb +16 -14
  60. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  61. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  62. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  63. data/lib/chef/knife/client_create.rb +3 -3
  64. data/lib/chef/knife/config_get.rb +8 -97
  65. data/lib/chef/knife/config_get_profile.rb +9 -9
  66. data/lib/chef/knife/config_list.rb +139 -0
  67. data/lib/chef/knife/config_list_profiles.rb +8 -98
  68. data/lib/chef/knife/config_show.rb +127 -0
  69. data/lib/chef/knife/config_use.rb +61 -0
  70. data/lib/chef/knife/config_use_profile.rb +9 -24
  71. data/lib/chef/knife/configure.rb +2 -2
  72. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  73. data/lib/chef/knife/core/object_loader.rb +1 -1
  74. data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
  75. data/lib/chef/knife/exec.rb +2 -2
  76. data/lib/chef/knife/node_show.rb +2 -2
  77. data/lib/chef/knife/serve.rb +3 -3
  78. data/lib/chef/knife/ssh.rb +16 -1
  79. data/lib/chef/knife/ssl_check.rb +3 -3
  80. data/lib/chef/knife/status.rb +2 -2
  81. data/lib/chef/knife/user_create.rb +2 -2
  82. data/lib/chef/knife/yaml_convert.rb +1 -1
  83. data/lib/chef/local_mode.rb +2 -2
  84. data/lib/chef/log/syslog.rb +2 -2
  85. data/lib/chef/log/winevt.rb +2 -2
  86. data/lib/chef/mixin/deep_merge.rb +0 -12
  87. data/lib/chef/mixin/openssl_helper.rb +1 -4
  88. data/lib/chef/mixin/template.rb +2 -2
  89. data/lib/chef/mixin/uris.rb +2 -2
  90. data/lib/chef/mixin/versioned_api.rb +1 -2
  91. data/lib/chef/monkey_patches/net_http.rb +4 -4
  92. data/lib/chef/node_map.rb +2 -2
  93. data/lib/chef/policy_builder/policyfile.rb +2 -2
  94. data/lib/chef/provider.rb +0 -4
  95. data/lib/chef/provider/file.rb +2 -2
  96. data/lib/chef/provider/ifconfig.rb +1 -1
  97. data/lib/chef/provider/launchd.rb +2 -2
  98. data/lib/chef/provider/mount/linux.rb +63 -0
  99. data/lib/chef/provider/package/rubygems.rb +21 -18
  100. data/lib/chef/provider/package/snap.rb +0 -1
  101. data/lib/chef/provider/package/windows.rb +2 -2
  102. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
  103. data/lib/chef/provider/package/zypper.rb +1 -1
  104. data/lib/chef/provider/remote_file/content.rb +3 -0
  105. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  106. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  107. data/lib/chef/provider/route.rb +2 -6
  108. data/lib/chef/provider/service/macosx.rb +2 -2
  109. data/lib/chef/provider/template_finder.rb +2 -10
  110. data/lib/chef/provider/user/dscl.rb +3 -3
  111. data/lib/chef/provider/user/mac.rb +1 -1
  112. data/lib/chef/provider/windows_task.rb +1 -2
  113. data/lib/chef/provider/zypper_repository.rb +2 -2
  114. data/lib/chef/provider_resolver.rb +1 -1
  115. data/lib/chef/providers.rb +1 -0
  116. data/lib/chef/recipe.rb +2 -2
  117. data/lib/chef/resource.rb +1 -1
  118. data/lib/chef/resource/apt_repository.rb +1 -1
  119. data/lib/chef/resource/bff_package.rb +22 -0
  120. data/lib/chef/resource/breakpoint.rb +57 -2
  121. data/lib/chef/resource/build_essential.rb +1 -1
  122. data/lib/chef/resource/cab_package.rb +29 -0
  123. data/lib/chef/resource/chef_client_cron.rb +32 -25
  124. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  125. data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
  126. data/lib/chef/resource/chef_client_systemd_timer.rb +24 -17
  127. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  128. data/lib/chef/resource/chef_gem.rb +10 -10
  129. data/lib/chef/resource/chef_handler.rb +148 -4
  130. data/lib/chef/resource/chef_sleep.rb +2 -2
  131. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  132. data/lib/chef/resource/cookbook_file.rb +2 -2
  133. data/lib/chef/resource/cron/cron_d.rb +0 -1
  134. data/lib/chef/resource/dnf_package.rb +2 -2
  135. data/lib/chef/resource/dsc_resource.rb +0 -1
  136. data/lib/chef/resource/dsc_script.rb +2 -2
  137. data/lib/chef/resource/execute.rb +6 -6
  138. data/lib/chef/resource/file.rb +4 -4
  139. data/lib/chef/resource/gem_package.rb +5 -5
  140. data/lib/chef/resource/homebrew_package.rb +3 -3
  141. data/lib/chef/resource/homebrew_update.rb +5 -5
  142. data/lib/chef/resource/hostname.rb +2 -2
  143. data/lib/chef/resource/launchd.rb +2 -1
  144. data/lib/chef/resource/locale.rb +2 -2
  145. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  146. data/lib/chef/resource/notify_group.rb +0 -1
  147. data/lib/chef/resource/ohai.rb +46 -3
  148. data/lib/chef/resource/ohai_hint.rb +33 -0
  149. data/lib/chef/resource/openssl_dhparam.rb +27 -5
  150. data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
  151. data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
  152. data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
  153. data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
  154. data/lib/chef/resource/openssl_x509_crl.rb +19 -10
  155. data/lib/chef/resource/openssl_x509_request.rb +14 -16
  156. data/lib/chef/resource/osx_profile.rb +77 -13
  157. data/lib/chef/resource/plist.rb +1 -1
  158. data/lib/chef/resource/powershell_package_source.rb +5 -5
  159. data/lib/chef/resource/reboot.rb +2 -2
  160. data/lib/chef/resource/remote_file.rb +3 -3
  161. data/lib/chef/resource/rhsm_register.rb +22 -10
  162. data/lib/chef/resource/ruby_block.rb +2 -2
  163. data/lib/chef/resource/scm/subversion.rb +2 -2
  164. data/lib/chef/resource/service.rb +3 -3
  165. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  166. data/lib/chef/resource/support/cron.d.erb +1 -1
  167. data/lib/chef/resource/support/cron_access.erb +1 -1
  168. data/lib/chef/resource/support/sudoer.erb +1 -1
  169. data/lib/chef/resource/support/ulimit.erb +1 -1
  170. data/lib/chef/resource/sysctl.rb +1 -5
  171. data/lib/chef/resource/systemd_unit.rb +2 -2
  172. data/lib/chef/resource/template.rb +2 -2
  173. data/lib/chef/resource/windows_ad_join.rb +10 -3
  174. data/lib/chef/resource/windows_certificate.rb +6 -4
  175. data/lib/chef/resource/windows_firewall_profile.rb +22 -20
  176. data/lib/chef/resource/windows_package.rb +28 -5
  177. data/lib/chef/resource/windows_printer.rb +5 -3
  178. data/lib/chef/resource/windows_printer_port.rb +6 -4
  179. data/lib/chef/resource/windows_user_privilege.rb +53 -54
  180. data/lib/chef/resource/windows_workgroup.rb +3 -3
  181. data/lib/chef/resource/yum_package.rb +2 -2
  182. data/lib/chef/resources.rb +3 -1
  183. data/lib/chef/run_context.rb +2 -2
  184. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  185. data/lib/chef/run_lock.rb +2 -2
  186. data/lib/chef/search/query.rb +4 -5
  187. data/lib/chef/shell.rb +31 -26
  188. data/lib/chef/shell/ext.rb +11 -11
  189. data/lib/chef/shell/shell_session.rb +2 -2
  190. data/lib/chef/train_transport.rb +5 -104
  191. data/lib/chef/util/diff.rb +3 -3
  192. data/lib/chef/util/powershell/cmdlet.rb +3 -1
  193. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  194. data/lib/chef/util/threaded_job_queue.rb +0 -2
  195. data/lib/chef/version.rb +1 -1
  196. data/lib/chef/win32/crypto.rb +1 -1
  197. data/lib/chef/win32/registry.rb +1 -2
  198. data/spec/data/shef-config.rb +1 -1
  199. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  200. data/spec/functional/resource/aix_service_spec.rb +2 -2
  201. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  202. data/spec/functional/resource/insserv_spec.rb +1 -1
  203. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  204. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  205. data/spec/functional/resource/windows_task_spec.rb +13 -13
  206. data/spec/functional/version_spec.rb +3 -3
  207. data/spec/integration/client/client_spec.rb +4 -4
  208. data/spec/integration/client/exit_code_spec.rb +3 -2
  209. data/spec/integration/client/ipv6_spec.rb +1 -1
  210. data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
  211. data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
  212. data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
  213. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  214. data/spec/integration/ohai/ohai_spec.rb +61 -0
  215. data/spec/integration/recipes/remote_directory.rb +1 -1
  216. data/spec/integration/solo/solo_spec.rb +5 -5
  217. data/spec/spec_helper.rb +6 -3
  218. data/spec/stress/win32/file_spec.rb +1 -1
  219. data/spec/support/chef_helpers.rb +2 -2
  220. data/spec/support/matchers/leak.rb +2 -2
  221. data/spec/support/platform_helpers.rb +16 -34
  222. data/spec/support/shared/functional/securable_resource.rb +108 -27
  223. data/spec/support/shared/functional/win32_service.rb +1 -1
  224. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  225. data/spec/tiny_server.rb +0 -1
  226. data/spec/unit/application/client_spec.rb +2 -2
  227. data/spec/unit/application/exit_code_spec.rb +10 -0
  228. data/spec/unit/application_spec.rb +4 -6
  229. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  230. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  231. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  232. data/spec/unit/cookbook_spec.rb +2 -2
  233. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  234. data/spec/unit/data_collector_spec.rb +0 -113
  235. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  236. data/spec/unit/file_access_control_spec.rb +1 -1
  237. data/spec/unit/knife/bootstrap_spec.rb +6 -6
  238. data/spec/unit/knife/core/ui_spec.rb +1 -0
  239. data/spec/unit/knife/ssh_spec.rb +2 -2
  240. data/spec/unit/lwrp_spec.rb +3 -3
  241. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  242. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  243. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  244. data/spec/unit/mixin/securable_spec.rb +2 -2
  245. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  246. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  247. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  248. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  249. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  250. data/spec/unit/provider/route_spec.rb +0 -2
  251. data/spec/unit/recipe_spec.rb +1 -1
  252. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  253. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  254. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  255. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  256. data/spec/unit/resource/launchd_spec.rb +8 -0
  257. data/spec/unit/resource/osx_profile_spec.rb +67 -1
  258. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  259. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  260. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  261. data/spec/unit/run_lock_spec.rb +5 -1
  262. data/spec/unit/runner_spec.rb +1 -2
  263. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  264. data/spec/unit/shell/shell_session_spec.rb +35 -64
  265. data/spec/unit/shell_spec.rb +16 -19
  266. data/spec/unit/train_transport_spec.rb +14 -13
  267. data/spec/unit/util/selinux_spec.rb +2 -0
  268. data/tasks/rspec.rb +0 -2
  269. metadata +41 -17
  270. data/lib/chef/dist.rb +0 -68
  271. data/spec/integration/knife/config_get_profile_spec.rb +0 -114
@@ -218,7 +218,6 @@ class Chef
218
218
  waiting = true
219
219
  while waiting
220
220
  result = get_change_id(id)
221
- puts "STATUS: #{result["result"]["status"]}"
222
221
  case result["result"]["status"]
223
222
  when "Do", "Doing", "Undoing", "Undo"
224
223
  # Continue
@@ -21,7 +21,7 @@ require_relative "../../resource/windows_package"
21
21
  require_relative "../package"
22
22
  require_relative "../../util/path_helper"
23
23
  require_relative "../../mixin/checksum"
24
- require "cgi" unless defined?(CGI)
24
+ autoload :CGI, "cgi"
25
25
 
26
26
  class Chef
27
27
  class Provider
@@ -33,7 +33,7 @@ class Chef
33
33
  provides :package, os: "windows"
34
34
  provides :windows_package
35
35
 
36
- require "chef/provider/package/windows/registry_uninstall_entry.rb"
36
+ autoload :RegistryUninstallEntry, ::File.expand_path("windows/registry_uninstall_entry.rb", __dir__)
37
37
 
38
38
  def define_resource_requirements
39
39
  if new_resource.checksum
@@ -17,7 +17,9 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require "win32/registry" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
20
+ module Win32
21
+ autoload :Registry, File.expand_path("../../../monkey_patches/win32/registry", __dir__) if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
22
+ end
21
23
 
22
24
  class Chef
23
25
  class Provider
@@ -158,7 +158,7 @@ class Chef
158
158
  end
159
159
 
160
160
  def global_options
161
- new_resource.global_options if new_resource.global_options
161
+ new_resource.global_options
162
162
  end
163
163
  end
164
164
  end
@@ -21,6 +21,9 @@ require "uri" unless defined?(URI)
21
21
  require "tempfile" unless defined?(Tempfile)
22
22
  require_relative "../../file_content_management/content_base"
23
23
  require_relative "../../mixin/uris"
24
+ module Net
25
+ autoload :FTPError, "net/ftp"
26
+ end
24
27
 
25
28
  class Chef
26
29
  class Provider
@@ -16,10 +16,12 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "uri" unless defined?(URI)
20
- require "cgi" unless defined?(CGI)
21
- require "tempfile" unless defined?(Tempfile)
22
- require "net/ftp"
19
+ autoload :URI, "uri"
20
+ autoload :CGI, "cgi"
21
+ autoload :Tempfile, "tempfile"
22
+ module Net
23
+ autoload :FTP, "net/ftp"
24
+ end
23
25
  require_relative "../remote_file"
24
26
  require_relative "../../file_content_management/tempfile"
25
27
 
@@ -16,10 +16,12 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "uri" unless defined?(URI)
20
- require "cgi" unless defined?(CGI)
21
- require "tempfile" unless defined?(Tempfile)
22
- require "net/sftp"
19
+ autoload :URI, "uri"
20
+ autoload :CGI, "cgi"
21
+ autoload :Tempfile, "tempfile"
22
+ module Net
23
+ autoload :SFTP, "net/sftp"
24
+ end
23
25
  require_relative "../remote_file"
24
26
  require_relative "../../file_content_management/tempfile"
25
27
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  require_relative "../log"
21
21
  require_relative "../provider"
22
- require "ipaddr" unless defined?(IPAddr)
22
+ autoload :IPAddr, "ipaddr"
23
23
 
24
24
  class Chef
25
25
  class Provider
@@ -169,11 +169,7 @@ class Chef
169
169
  next unless resource.is_a? Chef::Resource::Route
170
170
 
171
171
  # default to eth0
172
- dev = if resource.device
173
- resource.device
174
- else
175
- "eth0"
176
- end
172
+ dev = resource.device || "eth0"
177
173
 
178
174
  conf[dev] = "" if conf[dev].nil?
179
175
  case @action
@@ -18,7 +18,7 @@
18
18
  #
19
19
 
20
20
  require "etc" unless defined?(Etc)
21
- require "rexml/document" unless defined?(REXML::Document)
21
+ autoload :REXML, "rexml/document"
22
22
  require_relative "../../resource/service"
23
23
  require_relative "../../resource/macosx_service"
24
24
  require_relative "simple"
@@ -47,7 +47,7 @@ class Chef
47
47
  @current_resource = Chef::Resource::MacosxService.new(@new_resource.name)
48
48
  @current_resource.service_name(@new_resource.service_name)
49
49
  @plist_size = 0
50
- @plist = @new_resource.plist ? @new_resource.plist : find_service_plist
50
+ @plist = @new_resource.plist || find_service_plist
51
51
  @service_label = find_service_label
52
52
  # LaunchAgents should be loaded as the console user.
53
53
  @console_user = @plist ? @plist.include?("LaunchAgents") : false
@@ -43,19 +43,11 @@ class Chef
43
43
  protected
44
44
 
45
45
  def template_source_name(name, options)
46
- if options[:source]
47
- options[:source]
48
- else
49
- name
50
- end
46
+ options[:source] || name
51
47
  end
52
48
 
53
49
  def find_cookbook_name(options)
54
- if options[:cookbook]
55
- options[:cookbook]
56
- else
57
- @cookbook_name
58
- end
50
+ options[:cookbook] || @cookbook_name
59
51
  end
60
52
  end
61
53
  end
@@ -19,8 +19,8 @@
19
19
  require_relative "../../mixin/shell_out"
20
20
  require_relative "../user"
21
21
  require_relative "../../resource/user/dscl_user"
22
- require "openssl" unless defined?(OpenSSL)
23
- require "plist"
22
+ autoload :OpenSSL, "openssl"
23
+ autoload :Plist, "plist"
24
24
  require_relative "../../util/path_helper"
25
25
 
26
26
  class Chef
@@ -587,7 +587,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
587
587
  result = shell_out("dscl", ".", "-#{args[0]}", args[1..-1])
588
588
  return "" if ( args.first =~ /^delete/ ) && ( result.exitstatus != 0 )
589
589
  raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") unless result.exitstatus == 0
590
- raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if /No such key: /.match?(result.stdout)
590
+ raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if result.stdout.include?("No such key: ")
591
591
 
592
592
  result.stdout
593
593
  end
@@ -22,7 +22,7 @@ require_relative "../../mixin/shell_out"
22
22
  require_relative "../../mixin/which"
23
23
  require_relative "../user"
24
24
  require_relative "../../resource/user/mac_user"
25
- require "plist"
25
+ autoload :Plist, "plist"
26
26
 
27
27
  class Chef
28
28
  class Provider
@@ -16,8 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "rexml/document" unless defined?(REXML::Document)
20
- require "iso8601" if ChefUtils.windows?
19
+ autoload :ISO8601, "iso8601" if ChefUtils.windows?
21
20
  require_relative "../provider"
22
21
  require_relative "../util/path_helper"
23
22
  require "win32/taskscheduler" if ChefUtils.windows?
@@ -20,7 +20,7 @@ require_relative "../resource"
20
20
  require_relative "../dsl/declare_resource"
21
21
  require_relative "noop"
22
22
  require "shellwords" unless defined?(Shellwords)
23
- require_relative "../dist"
23
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
24
24
 
25
25
  class Chef
26
26
  class Provider
@@ -110,7 +110,7 @@ class Chef
110
110
  logger.trace("Will use :cookbook_file resource to cache the gpg key locally")
111
111
  :cookbook_file
112
112
  else
113
- raise Chef::Exceptions::FileNotFound, "Cannot determine location of gpgkey. Must start with 'http' or be a file managed by #{Chef::Dist::PRODUCT}."
113
+ raise Chef::Exceptions::FileNotFound, "Cannot determine location of gpgkey. Must start with 'http' or be a file managed by #{ChefUtils::Dist::Infra::PRODUCT}."
114
114
  end
115
115
  end
116
116
 
@@ -113,7 +113,7 @@ class Chef
113
113
 
114
114
  # if resource.provider is set, just return one of those objects
115
115
  def maybe_explicit_provider(resource)
116
- resource.provider if resource.provider
116
+ resource.provider
117
117
  end
118
118
 
119
119
  # try dynamically finding a provider based on querying the providers to see what they support
@@ -119,6 +119,7 @@ require_relative "provider/mount/mount"
119
119
  require_relative "provider/mount/aix"
120
120
  require_relative "provider/mount/solaris"
121
121
  require_relative "provider/mount/windows"
122
+ require_relative "provider/mount/linux"
122
123
 
123
124
  require_relative "provider/remote_file/ftp"
124
125
  require_relative "provider/remote_file/sftp"
@@ -17,7 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require "yaml" unless defined?(YAML)
20
+ autoload :YAML, "yaml"
21
21
  require_relative "dsl/recipe"
22
22
  require_relative "mixin/from_file"
23
23
  require_relative "mixin/deprecation"
@@ -122,7 +122,7 @@ class Chef
122
122
  end
123
123
 
124
124
  def to_s
125
- "cookbook: #{cookbook_name ? cookbook_name : "(none)"}, recipe: #{recipe_name ? recipe_name : "(none)"} "
125
+ "cookbook: #{cookbook_name || "(none)"}, recipe: #{recipe_name || "(none)"} "
126
126
  end
127
127
 
128
128
  def inspect
@@ -36,7 +36,7 @@ require_relative "resource/resource_notification"
36
36
  require_relative "provider_resolver"
37
37
  require_relative "resource_resolver"
38
38
  require_relative "provider"
39
- require "set" unless defined?(Set)
39
+ autoload :Set, "set"
40
40
 
41
41
  require_relative "mixin/deprecation"
42
42
  require_relative "mixin/properties"
@@ -19,7 +19,7 @@
19
19
  require_relative "../resource"
20
20
  require_relative "../http/simple"
21
21
  require "tmpdir" unless defined?(Dir.mktmpdir)
22
- require "addressable" unless defined?(Addressable)
22
+ autoload :Addressable, "addressable"
23
23
 
24
24
  class Chef
25
25
  class Resource
@@ -17,6 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "package"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
20
21
 
21
22
  class Chef
22
23
  class Resource
@@ -27,6 +28,27 @@ class Chef
27
28
 
28
29
  description "Use the **bff_package** resource to manage packages for the AIX platform using the installp utility. When a package is installed from a local file, it must be added to the node using the **remote_file** or **cookbook_file** resources."
29
30
  introduced "12.0"
31
+ examples <<~DOC
32
+ The **bff_package** resource is the default package provider on the AIX platform. The base **package** resource may be used, and then when the platform is AIX, #{ChefUtils::Dist::Infra::PRODUCT} will identify the correct package provider. The following examples show how to install part of the IBM XL C/C++ compiler.
33
+
34
+ **Installing using the base package resource**
35
+
36
+ ```ruby
37
+ package 'xlccmp.13.1.0' do
38
+ source '/var/tmp/IBM_XL_C_13.1.0/usr/sys/inst.images/xlccmp.13.1.0'
39
+ action :install
40
+ end
41
+ ```
42
+
43
+ **Installing using the bff_package resource**
44
+
45
+ ```ruby
46
+ bff_package 'xlccmp.13.1.0' do
47
+ source '/var/tmp/IBM_XL_C_13.1.0/usr/sys/inst.images/xlccmp.13.1.0'
48
+ action :install
49
+ end
50
+ ```
51
+ DOC
30
52
 
31
53
  property :package_name, String,
32
54
  description: "An optional property to set the package name if it differs from the resource block's name.",
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "../resource"
20
- require_relative "../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  class Resource
@@ -26,8 +26,63 @@ class Chef
26
26
 
27
27
  provides :breakpoint, target_mode: true
28
28
 
29
- description "Use the **breakpoint** resource to add breakpoints to recipes. Run the #{Chef::Dist::SHELL} in #{Chef::Dist::PRODUCT} mode, and then use those breakpoints to debug recipes. Breakpoints are ignored by the #{Chef::Dist::CLIENT} during an actual #{Chef::Dist::CLIENT} run. That said, breakpoints are typically used to debug recipes only when running them in a non-production environment, after which they are removed from those recipes before the parent cookbook is uploaded to the Chef server."
29
+ description "Use the **breakpoint** resource to add breakpoints to recipes. Run the #{ChefUtils::Dist::Infra::SHELL} in #{ChefUtils::Dist::Infra::PRODUCT} mode, and then use those breakpoints to debug recipes. Breakpoints are ignored by the #{ChefUtils::Dist::Infra::CLIENT} during an actual #{ChefUtils::Dist::Infra::CLIENT} run. That said, breakpoints are typically used to debug recipes only when running them in a non-production environment, after which they are removed from those recipes before the parent cookbook is uploaded to the Chef server."
30
30
  introduced "12.0"
31
+ examples <<~DOC
32
+ **A recipe without a breakpoint**
33
+
34
+ ```ruby
35
+ yum_key node['yum']['elrepo']['key'] do
36
+ url node['yum']['elrepo']['key_url']
37
+ action :add
38
+ end
39
+
40
+ yum_repository 'elrepo' do
41
+ description 'ELRepo.org Community Enterprise Linux Extras Repository'
42
+ key node['yum']['elrepo']['key']
43
+ mirrorlist node['yum']['elrepo']['url']
44
+ includepkgs node['yum']['elrepo']['includepkgs']
45
+ exclude node['yum']['elrepo']['exclude']
46
+ action :create
47
+ end
48
+ ```
49
+
50
+ **The same recipe with breakpoints**
51
+
52
+ ```ruby
53
+ breakpoint "before yum_key node['yum']['repo_name']['key']" do
54
+ action :break
55
+ end
56
+
57
+ yum_key node['yum']['repo_name']['key'] do
58
+ url node['yum']['repo_name']['key_url']
59
+ action :add
60
+ end
61
+
62
+ breakpoint "after yum_key node['yum']['repo_name']['key']" do
63
+ action :break
64
+ end
65
+
66
+ breakpoint "before yum_repository 'repo_name'" do
67
+ action :break
68
+ end
69
+
70
+ yum_repository 'repo_name' do
71
+ description 'description'
72
+ key node['yum']['repo_name']['key']
73
+ mirrorlist node['yum']['repo_name']['url']
74
+ includepkgs node['yum']['repo_name']['includepkgs']
75
+ exclude node['yum']['repo_name']['exclude']
76
+ action :create
77
+ end
78
+
79
+ breakpoint "after yum_repository 'repo_name'" do
80
+ action :break
81
+ end
82
+ ```
83
+
84
+ where the name of each breakpoint is an arbitrary string. In the previous examples, the names are used to indicate if the breakpoint is before or after a resource, and then also to specify which resource.
85
+ DOC
31
86
 
32
87
  default_action :break
33
88
 
@@ -15,7 +15,7 @@
15
15
  #
16
16
 
17
17
  require_relative "../resource"
18
- require "plist"
18
+ autoload :Plist, "plist"
19
19
 
20
20
  class Chef
21
21
  class Resource
@@ -29,6 +29,35 @@ class Chef
29
29
 
30
30
  description "Use the **cab_package** resource to install or remove Microsoft Windows cabinet (.cab) packages."
31
31
  introduced "12.15"
32
+ examples <<~'DOC'
33
+ **Using local path in source**
34
+
35
+ ```ruby
36
+ cab_package 'Install .NET 3.5 sp1 via KB958488' do
37
+ source 'C:\Users\xyz\AppData\Local\Temp\Windows6.1-KB958488-x64.cab'
38
+ action :install
39
+ end
40
+
41
+ cab_package 'Remove .NET 3.5 sp1 via KB958488' do
42
+ source 'C:\Users\xyz\AppData\Local\Temp\Windows6.1-KB958488-x64.cab'
43
+ action :remove
44
+ end
45
+ ```
46
+
47
+ **Using URL in source**
48
+
49
+ ```ruby
50
+ cab_package 'Install .NET 3.5 sp1 via KB958488' do
51
+ source 'https://s3.amazonaws.com/my_bucket/Windows6.1-KB958488-x64.cab'
52
+ action :install
53
+ end
54
+
55
+ cab_package 'Remove .NET 3.5 sp1 via KB958488' do
56
+ source 'https://s3.amazonaws.com/my_bucket/Temp\Windows6.1-KB958488-x64.cab'
57
+ action :remove
58
+ end
59
+ ```
60
+ DOC
32
61
 
33
62
  allowed_actions :install, :remove
34
63
 
@@ -15,9 +15,9 @@
15
15
  #
16
16
 
17
17
  require_relative "../resource"
18
- require_relative "../dist"
18
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
19
19
  require_relative "helpers/cron_validations"
20
- require "digest/md5"
20
+ require "digest/md5" unless defined?(Digest::MD5)
21
21
 
22
22
  class Chef
23
23
  class Resource
@@ -26,25 +26,25 @@ class Chef
26
26
 
27
27
  provides :chef_client_cron
28
28
 
29
- description "Use the **chef_client_cron** resource to setup the #{Chef::Dist::PRODUCT} to run as a cron job. This resource will also create the specified log directory if it doesn't already exist."
29
+ description "Use the **chef_client_cron** resource to setup the #{ChefUtils::Dist::Infra::PRODUCT} to run as a cron job. This resource will also create the specified log directory if it doesn't already exist."
30
30
  introduced "16.0"
31
31
  examples <<~DOC
32
- **Setup #{Chef::Dist::PRODUCT} to run using the default 30 minute cadence**:
32
+ **Setup #{ChefUtils::Dist::Infra::PRODUCT} to run using the default 30 minute cadence**:
33
33
 
34
34
  ```ruby
35
- chef_client_cron "Run #{Chef::Dist::PRODUCT} as a cron job"
35
+ chef_client_cron "Run #{ChefUtils::Dist::Infra::PRODUCT} as a cron job"
36
36
  ```
37
37
 
38
- **Run #{Chef::Dist::PRODUCT} twice a day**:
38
+ **Run #{ChefUtils::Dist::Infra::PRODUCT} twice a day**:
39
39
 
40
40
  ```ruby
41
- chef_client_cron "Run #{Chef::Dist::PRODUCT} every 12 hours" do
41
+ chef_client_cron "Run #{ChefUtils::Dist::Infra::PRODUCT} every 12 hours" do
42
42
  minute 0
43
43
  hour "0,12"
44
44
  end
45
45
  ```
46
46
 
47
- **Run #{Chef::Dist::PRODUCT} with extra options passed to the client**:
47
+ **Run #{ChefUtils::Dist::Infra::PRODUCT} with extra options passed to the client**:
48
48
 
49
49
  ```ruby
50
50
  chef_client_cron "Run an override recipe" do
@@ -56,42 +56,42 @@ class Chef
56
56
  extend Chef::ResourceHelpers::CronValidations
57
57
 
58
58
  property :job_name, String,
59
- default: Chef::Dist::CLIENT,
59
+ default: ChefUtils::Dist::Infra::CLIENT,
60
60
  description: "The name of the cron job to create."
61
61
 
62
62
  property :comment, String,
63
63
  description: "A comment to place in the cron.d file."
64
64
 
65
65
  property :user, String,
66
- description: "The name of the user that #{Chef::Dist::PRODUCT} runs as.",
66
+ description: "The name of the user that #{ChefUtils::Dist::Infra::PRODUCT} runs as.",
67
67
  default: "root"
68
68
 
69
69
  property :minute, [Integer, String],
70
- description: "The minute at which #{Chef::Dist::PRODUCT} is to run (0 - 59) or a cron pattern such as '0,30'.",
70
+ description: "The minute at which #{ChefUtils::Dist::Infra::PRODUCT} is to run (0 - 59) or a cron pattern such as '0,30'.",
71
71
  default: "0,30", callbacks: {
72
72
  "should be a valid minute spec" => method(:validate_minute),
73
73
  }
74
74
 
75
75
  property :hour, [Integer, String],
76
- description: "The hour at which #{Chef::Dist::PRODUCT} is to run (0 - 23) or a cron pattern such as '0,12'.",
76
+ description: "The hour at which #{ChefUtils::Dist::Infra::PRODUCT} is to run (0 - 23) or a cron pattern such as '0,12'.",
77
77
  default: "*", callbacks: {
78
78
  "should be a valid hour spec" => method(:validate_hour),
79
79
  }
80
80
 
81
81
  property :day, [Integer, String],
82
- description: "The day of month at which #{Chef::Dist::PRODUCT} is to run (1 - 31) or a cron pattern such as '1,7,14,21,28'.",
82
+ description: "The day of month at which #{ChefUtils::Dist::Infra::PRODUCT} is to run (1 - 31) or a cron pattern such as '1,7,14,21,28'.",
83
83
  default: "*", callbacks: {
84
84
  "should be a valid day spec" => method(:validate_day),
85
85
  }
86
86
 
87
87
  property :month, [Integer, String],
88
- description: "The month in the year on which #{Chef::Dist::PRODUCT} is to run (1 - 12, jan-dec, or *).",
88
+ description: "The month in the year on which #{ChefUtils::Dist::Infra::PRODUCT} is to run (1 - 12, jan-dec, or *).",
89
89
  default: "*", callbacks: {
90
90
  "should be a valid month spec" => method(:validate_month),
91
91
  }
92
92
 
93
93
  property :weekday, [Integer, String],
94
- description: "The day of the week on which #{Chef::Dist::PRODUCT} is to run (0-7, mon-sun, or *), where Sunday is both 0 and 7.",
94
+ description: "The day of the week on which #{ChefUtils::Dist::Infra::PRODUCT} is to run (0-7, mon-sun, or *), where Sunday is both 0 and 7.",
95
95
  default: "*", callbacks: {
96
96
  "should be a valid weekday spec" => method(:validate_dow),
97
97
  }
@@ -100,7 +100,7 @@ class Chef
100
100
  default: 300,
101
101
  coerce: proc { |x| Integer(x) },
102
102
  callbacks: { "should be a positive number" => proc { |v| v > 0 } },
103
- description: "A random number of seconds between 0 and X to add to interval so that all #{Chef::Dist::CLIENT} commands don't execute at the same time."
103
+ description: "A random number of seconds between 0 and X to add to interval so that all #{ChefUtils::Dist::Infra::CLIENT} commands don't execute at the same time."
104
104
 
105
105
  property :mailto, String,
106
106
  description: "The e-mail address to e-mail any cron task failures to."
@@ -110,12 +110,12 @@ class Chef
110
110
  default: false
111
111
 
112
112
  property :config_directory, String,
113
- default: Chef::Dist::CONF_DIR,
113
+ default: ChefConfig::Config.etc_chef_dir,
114
114
  description: "The path of the config directory."
115
115
 
116
116
  property :log_directory, String,
117
- default: lazy { platform?("mac_os_x") ? "/Library/Logs/#{Chef::Dist::DIR_SUFFIX.capitalize}" : "/var/log/#{Chef::Dist::DIR_SUFFIX}" },
118
- default_description: "/Library/Logs/#{Chef::Dist::DIR_SUFFIX.capitalize} on macOS and /var/log/#{Chef::Dist::DIR_SUFFIX} otherwise",
117
+ default: lazy { platform?("mac_os_x") ? "/Library/Logs/#{ChefUtils::Dist::Infra::DIR_SUFFIX.capitalize}" : "/var/log/#{ChefUtils::Dist::Infra::DIR_SUFFIX}" },
118
+ default_description: "/Library/Logs/#{ChefUtils::Dist::Infra::DIR_SUFFIX.capitalize} on macOS and /var/log/#{ChefUtils::Dist::Infra::DIR_SUFFIX} otherwise",
119
119
  description: "The path of the directory to create the log file in."
120
120
 
121
121
  property :log_file_name, String,
@@ -127,17 +127,23 @@ class Chef
127
127
  description: "Append to the log file instead of overwriting the log file on each run."
128
128
 
129
129
  property :chef_binary_path, String,
130
- default: "/opt/#{Chef::Dist::DIR_SUFFIX}/bin/#{Chef::Dist::CLIENT}",
131
- description: "The path to the #{Chef::Dist::CLIENT} binary."
130
+ default: "/opt/#{ChefUtils::Dist::Infra::DIR_SUFFIX}/bin/#{ChefUtils::Dist::Infra::CLIENT}",
131
+ description: "The path to the #{ChefUtils::Dist::Infra::CLIENT} binary."
132
132
 
133
133
  property :daemon_options, Array,
134
134
  default: lazy { [] },
135
- description: "An array of options to pass to the #{Chef::Dist::CLIENT} command."
135
+ description: "An array of options to pass to the #{ChefUtils::Dist::Infra::CLIENT} command."
136
136
 
137
137
  property :environment, Hash,
138
138
  default: lazy { {} },
139
139
  description: "A Hash containing additional arbitrary environment variables under which the cron job will be run in the form of `({'ENV_VARIABLE' => 'VALUE'})`."
140
140
 
141
+ property :nice, [Integer, String],
142
+ description: "The process priority to run the #{ChefUtils::Dist::Infra::CLIENT} process at. A value of -20 is the highest priority and 19 is the lowest priority.",
143
+ introduced: "16.5",
144
+ coerce: proc { |x| Integer(x) },
145
+ callbacks: { "should be an Integer between -20 and 19" => proc { |v| v >= -20 && v <= 19 } }
146
+
141
147
  action :add do
142
148
  # TODO: Replace this with a :create_if_missing action on directory when that exists
143
149
  unless ::Dir.exist?(new_resource.log_directory)
@@ -158,7 +164,7 @@ class Chef
158
164
  mailto new_resource.mailto if new_resource.mailto
159
165
  user new_resource.user
160
166
  comment new_resource.comment if new_resource.comment
161
- command cron_command
167
+ command client_command
162
168
  end
163
169
  end
164
170
 
@@ -187,15 +193,16 @@ class Chef
187
193
  #
188
194
  # @return [String]
189
195
  #
190
- def cron_command
196
+ def client_command
191
197
  cmd = ""
192
198
  cmd << "/bin/sleep #{splay_sleep_time(new_resource.splay)}; "
199
+ cmd << "#{which("nice")} -n #{new_resource.nice} " if new_resource.nice
193
200
  cmd << "#{new_resource.chef_binary_path} "
194
201
  cmd << "#{new_resource.daemon_options.join(" ")} " unless new_resource.daemon_options.empty?
195
202
  cmd << "-c #{::File.join(new_resource.config_directory, "client.rb")} "
196
203
  cmd << "--chef-license accept " if new_resource.accept_chef_license
197
204
  cmd << log_command
198
- cmd << " || echo \"#{Chef::Dist::PRODUCT} execution failed\"" if new_resource.mailto
205
+ cmd << " || echo \"#{ChefUtils::Dist::Infra::PRODUCT} execution failed\"" if new_resource.mailto
199
206
  cmd
200
207
  end
201
208