chef 16.4.41 → 16.5.64

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 (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
@@ -75,14 +75,7 @@ class Chef
75
75
  # @api private
76
76
  #
77
77
  def deep_merge!(source, dest)
78
- # if dest doesn't exist, then simply copy source to it
79
- if dest.nil?
80
- dest = source; return dest
81
- end
82
-
83
78
  case source
84
- when nil
85
- dest
86
79
  when Hash
87
80
  if dest.is_a?(Hash)
88
81
  source.each do |src_key, src_value|
@@ -147,11 +140,6 @@ class Chef
147
140
  end
148
141
  end
149
142
  merge_onto
150
-
151
- # If merge_with is nil, don't replace merge_onto
152
- elsif merge_with.nil?
153
- merge_onto
154
-
155
143
  # In all other cases, replace merge_onto with merge_with
156
144
  else
157
145
  merge_with
@@ -14,15 +14,12 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
  #
17
+ autoload :OpenSSL, "openssl"
17
18
 
18
19
  class Chef
19
20
  module Mixin
20
21
  # various helpers for use with openssl. Currently used by the openssl_* resources
21
22
  module OpenSSLHelper
22
- def self.included(_base)
23
- require "openssl" unless defined?(::OpenSSL)
24
- end
25
-
26
23
  # determine the key filename from the cert filename
27
24
  # @param [String] cert_filename the path to the certfile
28
25
  # @return [String] the path to the keyfile
@@ -16,8 +16,8 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "tempfile" unless defined?(Tempfile)
20
- require "erubis" unless defined?(Erubis)
19
+ autoload :Tempfile, "tempfile"
20
+ autoload :Erubis, "erubis"
21
21
 
22
22
  class Chef
23
23
  module Mixin
@@ -16,8 +16,8 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "uri" unless defined?(URI)
20
- require "addressable/uri" unless defined?(Addressable::URI)
19
+ autoload :URI, "uri"
20
+ autoload :Addressable, "addressable/uri"
21
21
 
22
22
  class Chef
23
23
  module Mixin
@@ -50,8 +50,7 @@ class Chef
50
50
  # in which case we'll just start with the highest version and see what happens
51
51
  ServerAPIVersions.instance.min_server_version.nil? || (version >= ServerAPIVersions.instance.min_server_version && version <= ServerAPIVersions.instance.send(type))
52
52
  end
53
- .sort { |a, b| a.send(:minimum_api_version) <=> b.send(:minimum_api_version) }
54
- .last
53
+ .max_by { |a| a.send(:minimum_api_version) }
55
54
  end
56
55
 
57
56
  def def_versioned_delegator(method)
@@ -7,16 +7,16 @@ end
7
7
 
8
8
  require "net/http" unless defined?(Net::HTTP)
9
9
  module Net
10
- class HTTPError
10
+ class HTTPError < Net::ProtocolError
11
11
  include ChefNetHTTPExceptionExtensions
12
12
  end
13
- class HTTPRetriableError
13
+ class HTTPRetriableError < Net::ProtoRetriableError
14
14
  include ChefNetHTTPExceptionExtensions
15
15
  end
16
- class HTTPClientException
16
+ class HTTPClientException < Net::ProtoServerError
17
17
  include ChefNetHTTPExceptionExtensions
18
18
  end
19
- class HTTPFatalError
19
+ class HTTPFatalError < Net::ProtoFatalError
20
20
  include ChefNetHTTPExceptionExtensions
21
21
  end
22
22
  end
@@ -36,7 +36,7 @@
36
36
  # XXX: confusingly, in the *_priority_map the :klass may be an array of Strings of class names
37
37
  #
38
38
 
39
- require_relative "dist"
39
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
40
40
 
41
41
  class Chef
42
42
  class NodeMap
@@ -86,7 +86,7 @@ class Chef
86
86
  else
87
87
  klass.superclass.to_s
88
88
  end
89
- Chef::Log.warn( COLLISION_WARNING % { type: type_of_thing, key: key, type_caps: type_of_thing.capitalize, client_name: Chef::Dist::PRODUCT } )
89
+ Chef::Log.warn( COLLISION_WARNING % { type: type_of_thing, key: key, type_caps: type_of_thing.capitalize, client_name: ChefUtils::Dist::Infra::PRODUCT } )
90
90
  end
91
91
 
92
92
  # The map is sorted in order of preference already; we just need to find
@@ -24,7 +24,7 @@ require_relative "../run_context"
24
24
  require_relative "../config"
25
25
  require_relative "../node"
26
26
  require_relative "../server_api"
27
- require_relative "../dist"
27
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
28
28
 
29
29
  class Chef
30
30
  module PolicyBuilder
@@ -91,7 +91,7 @@ class Chef
91
91
  @node = nil
92
92
 
93
93
  if Chef::Config[:solo_legacy_mode]
94
- raise UnsupportedFeature, "Policyfile does not support chef-solo. Use #{Chef::Dist::CLIENT} local mode instead."
94
+ raise UnsupportedFeature, "Policyfile does not support chef-solo. Use #{ChefUtils::Dist::Infra::CLIENT} local mode instead."
95
95
  end
96
96
 
97
97
  if override_runlist
@@ -30,9 +30,6 @@ require "forwardable" unless defined?(Forwardable)
30
30
 
31
31
  class Chef
32
32
  class Provider
33
- require_relative "mixin/why_run"
34
- require_relative "mixin/provides"
35
-
36
33
  attr_accessor :new_resource
37
34
  attr_accessor :current_resource
38
35
  attr_accessor :after_resource
@@ -455,6 +452,5 @@ end
455
452
 
456
453
  # Requiring things at the bottom breaks cycles
457
454
  require_relative "chef_class"
458
- require_relative "mixin/why_run"
459
455
  require_relative "resource_collection"
460
456
  require_relative "runner"
@@ -31,7 +31,7 @@ require_relative "../util/backup"
31
31
  require_relative "../util/diff"
32
32
  require_relative "../util/selinux"
33
33
  require_relative "../file_content_management/deploy"
34
- require_relative "../dist"
34
+ require "chef-utils" unless defined?(ChefUtils)
35
35
 
36
36
  # The Tao of File Providers:
37
37
  # - the content provider must always return a tempfile that we can delete/mv
@@ -394,7 +394,7 @@ class Chef
394
394
  return if tempfile.nil?
395
395
  # but a tempfile that has no path or doesn't exist should not happen
396
396
  if tempfile.path.nil? || !::File.exists?(tempfile.path)
397
- raise "#{Chef::Dist::CLIENT} is confused, trying to deploy a file that has no path or does not exist..."
397
+ raise "#{ChefUtils::Dist::Infra::CLIENT} is confused, trying to deploy a file that has no path or does not exist..."
398
398
  end
399
399
 
400
400
  # the file? on the next line suppresses the case in why-run when we have a not-file here that would have otherwise been removed
@@ -20,7 +20,7 @@ require_relative "../log"
20
20
  require_relative "../provider"
21
21
  require_relative "../resource/file"
22
22
  require_relative "../exceptions"
23
- require "erb" unless defined?(Erb)
23
+ autoload :ERB, "erb"
24
24
 
25
25
  class Chef
26
26
  class Provider
@@ -20,7 +20,7 @@ require_relative "../provider"
20
20
  require_relative "../resource/file"
21
21
  require_relative "../resource/cookbook_file"
22
22
  require_relative "../resource/macosx_service"
23
- require "plist"
23
+ autoload :Plist, "plist"
24
24
  require "forwardable" unless defined?(Forwardable)
25
25
 
26
26
  class Chef
@@ -209,7 +209,7 @@ class Chef
209
209
 
210
210
  # @api private
211
211
  def path
212
- @path ||= new_resource.path ? new_resource.path : gen_path_from_type
212
+ @path ||= new_resource.path || gen_path_from_type
213
213
  end
214
214
  end
215
215
  end
@@ -0,0 +1,63 @@
1
+ #
2
+ # Author:: Antima Gupta (<agupta@chef.io>)
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require_relative "../mount"
20
+
21
+ class Chef
22
+ class Provider
23
+ class Mount
24
+ class Linux < Chef::Provider::Mount::Mount
25
+
26
+ provides :mount, os: "linux"
27
+
28
+ # Check to see if the volume is mounted.
29
+ # "findmnt" outputs the mount points with volume.
30
+ # Convert the mount_point of the resource to a real path in case it
31
+ # contains symlinks in its parents dirs.
32
+
33
+ def mounted?
34
+ mounted = false
35
+
36
+ real_mount_point = if ::File.exists? @new_resource.mount_point
37
+ ::File.realpath(@new_resource.mount_point)
38
+ else
39
+ @new_resource.mount_point
40
+ end
41
+
42
+ shell_out!("findmnt -rn").stdout.each_line do |line|
43
+ case line
44
+ # Permalink for device already mounted to mount point for : https://rubular.com/r/L0RNnD4gf2DJGl
45
+ when /\A#{Regexp.escape(real_mount_point)}\s+#{device_mount_regex}\s/
46
+ mounted = true
47
+ logger.trace("Special device #{device_logstring} mounted as #{real_mount_point}")
48
+ # Permalink for multiple devices mounted to the same mount point(i.e. '/proc') https://rubular.com/r/a356yzspU7N9TY
49
+ when %r{\A#{Regexp.escape(real_mount_point)}\s+([/\w])+\s}
50
+ mounted = false
51
+ logger.trace("Special device #{$~[1]} mounted as #{real_mount_point}")
52
+ # Permalink for bind device mounted to an existing mount point: https://rubular.com/r/QAE0ilL3sm3Ldz
53
+ when %r{\A#{Regexp.escape(real_mount_point)}\s+([/\w])+\[#{device_mount_regex}\]\s}
54
+ mounted = true
55
+ logger.trace("Bind device #{device_logstring} mounted as #{real_mount_point}")
56
+ end
57
+ end
58
+ @current_resource.mounted(mounted)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -17,39 +17,42 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require "uri" unless defined?(URI)
20
+ autoload :URI, "uri"
21
21
  require_relative "../package"
22
22
  require_relative "../../resource/package"
23
23
  require_relative "../../mixin/get_source_from_package"
24
24
  require_relative "../../mixin/which"
25
- require_relative "../../dist"
25
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
26
26
 
27
27
  # Class methods on Gem are defined in rubygems
28
- require "rubygems" unless defined?(Gem)
28
+ autoload :Gem, "rubygems"
29
29
  # Ruby 1.9's gem_prelude can interact poorly with loading the full rubygems
30
30
  # explicitly like this. Make sure rubygems/specification is always last in this
31
31
  # list
32
- require "rubygems/version"
33
- require "rubygems/dependency"
34
- require "rubygems/spec_fetcher"
35
- require "rubygems/platform"
36
- require "rubygems/package"
37
- require "rubygems/dependency_installer"
38
- require "rubygems/uninstaller"
39
- require "rubygems/specification"
32
+ Gem.autoload :Version, "rubygems/version"
33
+ Gem.autoload :Dependency, "rubygems/dependency"
34
+ Gem.autoload :SpecFetcher, "rubygems/spec_fetcher"
35
+ Gem.autoload :Platform, "rubygems/platform"
36
+ Gem.autoload :Package, "rubygems/package"
37
+ Gem.autoload :DependencyInstaller, "rubygems/dependency_installer"
38
+ Gem.autoload :Uninstaller, "rubygems/uninstaller"
39
+ Gem.autoload :Specification, "rubygems/specification"
40
40
 
41
41
  class Chef
42
42
  class Provider
43
43
  class Package
44
44
  class Rubygems < Chef::Provider::Package
45
45
  class GemEnvironment
46
- # HACK: trigger gem config load early. Otherwise it can get lazy
47
- # loaded during operations where we've set Gem.sources to an
48
- # alternate value and overwrite it with the defaults.
49
- Gem.configuration
50
-
51
46
  DEFAULT_UNINSTALLER_OPTS = { ignore: true, executables: true }.freeze
52
47
 
48
+ def initialize(*args)
49
+ super
50
+ # HACK: trigger gem config load early. Otherwise it can get lazy
51
+ # loaded during operations where we've set Gem.sources to an
52
+ # alternate value and overwrite it with the defaults.
53
+ Gem.configuration
54
+ end
55
+
53
56
  # The paths where rubygems should search for installed gems.
54
57
  # Implemented by subclasses.
55
58
  def gem_paths
@@ -401,8 +404,8 @@ class Chef
401
404
  if new_resource.options && new_resource.options.is_a?(Hash)
402
405
  msg = [
403
406
  "Gem options must be passed to gem_package as a string instead of a hash when",
404
- "using this installation of #{Chef::Dist::PRODUCT} because it runs with its own packaged Ruby. A hash",
405
- "may only be used when installing a gem to the same Ruby installation that #{Chef::Dist::PRODUCT} is",
407
+ "using this installation of #{ChefUtils::Dist::Infra::PRODUCT} because it runs with its own packaged Ruby. A hash",
408
+ "may only be used when installing a gem to the same Ruby installation that #{ChefUtils::Dist::Infra::PRODUCT} is",
406
409
  "running under. See https://docs.chef.io/resources/gem_package/ for more information.",
407
410
  "Error raised at #{new_resource} from #{new_resource.source_line}",
408
411
  ].join("\n")
@@ -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