chef 16.2.73-universal-mingw32 → 16.3.38-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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +1 -1
  4. data/chef-universal-mingw32.gemspec +2 -2
  5. data/chef.gemspec +2 -1
  6. data/lib/chef/application.rb +12 -0
  7. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  8. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  9. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  10. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  11. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  12. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  13. data/lib/chef/client.rb +3 -3
  14. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  15. data/lib/chef/cookbook/syntax_check.rb +1 -2
  16. data/lib/chef/cookbook_loader.rb +15 -29
  17. data/lib/chef/data_bag.rb +1 -2
  18. data/lib/chef/deprecated.rb +8 -0
  19. data/lib/chef/dsl/platform_introspection.rb +2 -0
  20. data/lib/chef/environment.rb +1 -2
  21. data/lib/chef/exceptions.rb +3 -0
  22. data/lib/chef/http/authenticator.rb +1 -1
  23. data/lib/chef/knife.rb +4 -4
  24. data/lib/chef/knife/bootstrap.rb +4 -10
  25. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  26. data/lib/chef/knife/config_get.rb +1 -0
  27. data/lib/chef/knife/config_list_profiles.rb +4 -1
  28. data/lib/chef/knife/configure.rb +1 -1
  29. data/lib/chef/knife/cookbook_upload.rb +5 -10
  30. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  31. data/lib/chef/knife/core/hashed_command_loader.rb +1 -0
  32. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  33. data/lib/chef/knife/core/ui.rb +8 -2
  34. data/lib/chef/knife/core/windows_bootstrap_context.rb +1 -2
  35. data/lib/chef/knife/rehash.rb +3 -21
  36. data/lib/chef/knife/ssh.rb +5 -1
  37. data/lib/chef/log.rb +7 -2
  38. data/lib/chef/mixin/chef_utils_wiring.rb +40 -0
  39. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  40. data/lib/chef/mixin/openssl_helper.rb +27 -5
  41. data/lib/chef/mixin/path_sanity.rb +5 -4
  42. data/lib/chef/mixin/shell_out.rb +4 -188
  43. data/lib/chef/mixin/template.rb +1 -0
  44. data/lib/chef/mixin/which.rb +6 -3
  45. data/lib/chef/mixins.rb +1 -0
  46. data/lib/chef/node.rb +36 -12
  47. data/lib/chef/node_map.rb +21 -18
  48. data/lib/chef/platform/service_helpers.rb +31 -28
  49. data/lib/chef/provider/git.rb +12 -4
  50. data/lib/chef/provider/mount/solaris.rb +0 -1
  51. data/lib/chef/provider/package/snap.rb +2 -3
  52. data/lib/chef/provider/package/windows.rb +9 -4
  53. data/lib/chef/provider/package/zypper.rb +0 -1
  54. data/lib/chef/provider/service.rb +2 -2
  55. data/lib/chef/provider/yum_repository.rb +1 -1
  56. data/lib/chef/provider/zypper_repository.rb +1 -1
  57. data/lib/chef/resource.rb +2 -0
  58. data/lib/chef/resource/build_essential.rb +2 -2
  59. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  60. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  61. data/lib/chef/resource/cron/cron_d.rb +1 -1
  62. data/lib/chef/resource/cron_access.rb +2 -2
  63. data/lib/chef/resource/execute.rb +2 -2
  64. data/lib/chef/resource/lwrp_base.rb +1 -0
  65. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  66. data/lib/chef/resource/openssl_x509_certificate.rb +11 -14
  67. data/lib/chef/resource/openssl_x509_crl.rb +1 -2
  68. data/lib/chef/resource/service.rb +2 -2
  69. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  70. data/lib/chef/resource/sudo.rb +1 -1
  71. data/lib/chef/resource/user_ulimit.rb +1 -1
  72. data/lib/chef/resource/windows_dns_record.rb +17 -0
  73. data/lib/chef/resource/windows_firewall_profile.rb +197 -0
  74. data/lib/chef/resource/windows_security_policy.rb +49 -20
  75. data/lib/chef/resource_inspector.rb +7 -1
  76. data/lib/chef/resources.rb +1 -0
  77. data/lib/chef/role.rb +1 -2
  78. data/lib/chef/shell/shell_session.rb +2 -0
  79. data/lib/chef/util/diff.rb +0 -1
  80. data/lib/chef/version.rb +2 -2
  81. data/lib/chef/win32/registry.rb +1 -2
  82. data/spec/functional/knife/ssh_spec.rb +5 -16
  83. data/spec/functional/resource/aix_service_spec.rb +0 -2
  84. data/spec/functional/resource/aixinit_service_spec.rb +0 -1
  85. data/spec/functional/resource/apt_package_spec.rb +0 -1
  86. data/spec/functional/resource/cron_spec.rb +0 -1
  87. data/spec/functional/resource/git_spec.rb +23 -1
  88. data/spec/functional/resource/group_spec.rb +6 -2
  89. data/spec/functional/resource/insserv_spec.rb +0 -1
  90. data/spec/functional/resource/remote_file_spec.rb +1 -7
  91. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -1
  92. data/spec/functional/run_lock_spec.rb +2 -1
  93. data/spec/functional/shell_spec.rb +5 -5
  94. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  95. data/spec/functional/version_spec.rb +1 -1
  96. data/spec/integration/knife/config_list_profiles_spec.rb +30 -2
  97. data/spec/integration/knife/cookbook_upload_spec.rb +27 -0
  98. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  99. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  100. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  101. data/spec/integration/recipes/notifies_spec.rb +1 -1
  102. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  103. data/spec/integration/recipes/recipe_dsl_spec.rb +1 -1
  104. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  105. data/spec/integration/recipes/resource_load_spec.rb +2 -0
  106. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  107. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  108. data/spec/scripts/ssl-serve.rb +1 -1
  109. data/spec/spec_helper.rb +10 -4
  110. data/spec/support/chef_helpers.rb +1 -20
  111. data/spec/support/platform_helpers.rb +0 -2
  112. data/spec/support/shared/functional/file_resource.rb +0 -1
  113. data/spec/support/shared/integration/knife_support.rb +2 -9
  114. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  115. data/spec/unit/application_spec.rb +4 -2
  116. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  117. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  118. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  119. data/spec/unit/data_collector_spec.rb +1 -1
  120. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  121. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  122. data/spec/unit/json_compat_spec.rb +1 -1
  123. data/spec/unit/knife/bootstrap_spec.rb +2 -6
  124. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  125. data/spec/unit/log/syslog_spec.rb +6 -10
  126. data/spec/unit/log/winevt_spec.rb +21 -13
  127. data/spec/unit/lwrp_spec.rb +4 -4
  128. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  129. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  130. data/spec/unit/mixin/securable_spec.rb +0 -1
  131. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  132. data/spec/unit/mixin/which.rb +8 -0
  133. data/spec/unit/node_spec.rb +98 -11
  134. data/spec/unit/property_spec.rb +5 -5
  135. data/spec/unit/provider/execute_spec.rb +0 -7
  136. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  137. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  138. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  139. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  140. data/spec/unit/provider/package/windows_spec.rb +30 -53
  141. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  142. data/spec/unit/provider/service/windows_spec.rb +2 -6
  143. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  144. data/spec/unit/provider_spec.rb +1 -0
  145. data/spec/unit/resource/execute_spec.rb +10 -0
  146. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  147. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  148. data/spec/unit/resource/windows_package_spec.rb +1 -0
  149. data/spec/unit/resource_reporter_spec.rb +1 -1
  150. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  151. data/spec/unit/run_lock_spec.rb +1 -1
  152. data/spec/unit/scan_access_control_spec.rb +1 -1
  153. data/spec/unit/util/diff_spec.rb +1 -15
  154. data/spec/unit/win32/security_spec.rb +4 -3
  155. metadata +38 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e032c1572a1691f3496d92bd9a9c2b89cec425037583d8d911cdfaa379aa8ff
4
- data.tar.gz: 454f454361c2c8a998275a14d8bfa6da74867e9213091923cf52c69f4a1df098
3
+ metadata.gz: 9da6577b8fa0e261507befc2a92ae462125a90459fc41a5242ab72fbb47f345f
4
+ data.tar.gz: c8241aa29ec9a28873db433235136d600775e146949f38d2a7e6dc7796583e46
5
5
  SHA512:
6
- metadata.gz: a701a20dea62009da9d384ba2f488cfcdc5b515da515329f4ff9d19d6ff3fe60a8167cd137b7544d58f0db251a27b51bbc77926ea932ed6385363080bb3ed825
7
- data.tar.gz: 1ab9c7cc9979aca504d9a268c1908f45c958935355a3b36dad3b2e4e9f1255afc2624feec6bde66e12e7978664b42b2a4683d236edca81555cebeebe3ebd8b7f
6
+ metadata.gz: 3ca6640bb820a6065f8045332d1131387a4533befcb51e6d695d46ec7846be14b86d45c4ef8c237b8e15cbe32d05bb3d2f6d276ae46aaa281cf389c2590152fd
7
+ data.tar.gz: ebe331d00d5764fa420a1ec88b812737bc4e4f14af3531d75644135c61c9078c7bcbca89d9b24d74bbbce8bc62805aab4e5981b06fc3ec9346418445d9419f7d
data/Gemfile CHANGED
@@ -9,12 +9,12 @@ gem "chef", path: "."
9
9
 
10
10
  gem "ohai", git: "https://github.com/chef/ohai.git", branch: "master"
11
11
 
12
- gem "chef-utils", path: File.expand_path("../chef-utils", __FILE__) if File.exist?(File.expand_path("../chef-utils", __FILE__))
13
- gem "chef-config", path: File.expand_path("../chef-config", __FILE__) if File.exist?(File.expand_path("../chef-config", __FILE__))
12
+ gem "chef-utils", path: File.expand_path("chef-utils", __dir__) if File.exist?(File.expand_path("chef-utils", __dir__))
13
+ gem "chef-config", path: File.expand_path("chef-config", __dir__) if File.exist?(File.expand_path("chef-config", __dir__))
14
14
 
15
- if File.exist?(File.expand_path("../chef-bin", __FILE__))
15
+ if File.exist?(File.expand_path("chef-bin", __dir__))
16
16
  # bundling in a git checkout
17
- gem "chef-bin", path: File.expand_path("../chef-bin", __FILE__)
17
+ gem "chef-bin", path: File.expand_path("chef-bin", __dir__)
18
18
  else
19
19
  # bundling in omnibus
20
20
  gem "chef-bin" # rubocop:disable Bundler/DuplicatedGem
data/Rakefile CHANGED
@@ -18,7 +18,7 @@
18
18
  #
19
19
 
20
20
  # we need this to resolve files required by lib/chef/dist
21
- $LOAD_PATH.unshift(File.expand_path("../chef-config/lib", __FILE__))
21
+ $LOAD_PATH.unshift(File.expand_path("chef-config/lib", __dir__))
22
22
 
23
23
  begin
24
24
  require_relative "tasks/rspec"
@@ -1,4 +1,4 @@
1
- gemspec = eval(IO.read(File.expand_path("../chef.gemspec", __FILE__)))
1
+ gemspec = eval(IO.read(File.expand_path("chef.gemspec", __dir__)))
2
2
 
3
3
  gemspec.platform = Gem::Platform.new(%w{universal mingw32})
4
4
 
@@ -14,7 +14,7 @@ gemspec.add_dependency "win32-process", "~> 0.8.2"
14
14
  gemspec.add_dependency "win32-service", ">= 2.1.5", "< 3.0"
15
15
  gemspec.add_dependency "wmi-lite", "~> 1.0"
16
16
  gemspec.add_dependency "win32-taskscheduler", "~> 2.0"
17
- gemspec.add_dependency "iso8601", "~> 0.12.1"
17
+ gemspec.add_dependency "iso8601", ">= 0.12.1", "< 0.14" # validate 0.14 when it comes out
18
18
  gemspec.add_dependency "win32-certstore", "~> 0.3"
19
19
  gemspec.extensions << "ext/win32-eventlog/Rakefile"
20
20
  gemspec.files += Dir.glob("{distro,ext}/**/*")
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency "mixlib-cli", ">= 2.1.1", "< 3.0"
25
25
  s.add_dependency "mixlib-log", ">= 2.0.3", "< 4.0"
26
26
  s.add_dependency "mixlib-authentication", ">= 2.1", "< 4"
27
- s.add_dependency "mixlib-shellout", ">= 3.0.3", "< 4.0"
27
+ s.add_dependency "mixlib-shellout", ">= 3.1.1", "< 4.0"
28
28
  s.add_dependency "mixlib-archive", ">= 0.4", "< 2.0"
29
29
  s.add_dependency "ohai", "~> 16.0"
30
30
 
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
36
36
  s.add_dependency "ed25519", "~> 1.2" # ed25519 ssh key support
37
37
  s.add_dependency "bcrypt_pbkdf", "= 1.1.0.rc1" # ed25519 ssh key support
38
38
  s.add_dependency "highline", ">= 1.6.9", "< 3"
39
+ s.add_dependency "tty-prompt", "~> 0.21" # knife ui.ask prompt
39
40
  s.add_dependency "tty-screen", "~> 0.6" # knife list
40
41
  s.add_dependency "pastel" # knife ui.color
41
42
  s.add_dependency "erubis", "~> 2.7"
@@ -194,8 +194,10 @@ class Chef
194
194
  chef_config[:log_location].map! do |log_location|
195
195
  case log_location
196
196
  when :syslog, "syslog"
197
+ force_force_logger
197
198
  logger::Syslog.new
198
199
  when :win_evt, "win_evt"
200
+ force_force_logger
199
201
  logger::WinEvt.new
200
202
  else
201
203
  # should be a path or STDOUT
@@ -204,6 +206,16 @@ class Chef
204
206
  end
205
207
  end
206
208
 
209
+ # Force the logger by default for the :winevt and :syslog loggers. Since we do not and cannot
210
+ # support multiple log levels in a mix-and-match situation with formatters and loggers, and the
211
+ # formatters do not support syslog, we force the formatter off by default and the log level is
212
+ # thus info by default. Users can add `--force-formatter -l info` to get back formatter output
213
+ # on STDOUT along with syslog logging.
214
+ #
215
+ def force_force_logger
216
+ chef_config[:force_logger] = true unless chef_config[:force_formatter]
217
+ end
218
+
207
219
  # Use of output formatters is assumed if `force_formatter` is set or if `force_logger` is not set
208
220
  def using_output_formatter?
209
221
  chef_config[:force_formatter] || !chef_config[:force_logger]
@@ -2,14 +2,14 @@
2
2
  require_relative "exceptions"
3
3
 
4
4
  class Chef
5
- class Whitelist
5
+ class AttributeAllowlist
6
6
 
7
- # filter takes two arguments - the data you want to filter, and a whitelisted array
8
- # of keys you want included. You can capture a subtree of the data to filter by
7
+ # filter takes two arguments - the data you want to filter, and an array of
8
+ # keys you want included. You can capture a subtree of the data to filter by
9
9
  # providing a "/"-delimited string of keys. If some key includes "/"-characters,
10
10
  # you must provide an array of keys instead.
11
11
  #
12
- # Whitelist.filter(
12
+ # AttributeAllowlist.filter(
13
13
  # { "filesystem" => {
14
14
  # "/dev/disk" => {
15
15
  # "size" => "10mb"
@@ -27,18 +27,18 @@ class Chef
27
27
  # },
28
28
  # ["network/interfaces/eth0", ["filesystem", "/dev/disk"]])
29
29
  # will capture the eth0 and /dev/disk subtrees.
30
- def self.filter(data, whitelist = nil)
31
- return data if whitelist.nil?
30
+ def self.filter(data, allowlist = nil)
31
+ return data if allowlist.nil?
32
32
 
33
33
  new_data = {}
34
- whitelist.each do |item|
34
+ allowlist.each do |item|
35
35
  add_data(data, new_data, item)
36
36
  end
37
37
  new_data
38
38
  end
39
39
 
40
- # Walk the data has according to the keys provided by the whitelisted item
41
- # and add the data to the whitelisting result.
40
+ # Walk the data has according to the keys provided by the allowlisted item
41
+ # and add the data to the allowlisting result.
42
42
  def self.add_data(data, new_data, item)
43
43
  parts = to_array(item)
44
44
 
@@ -46,7 +46,7 @@ class Chef
46
46
  filtered_data = new_data
47
47
  parts[0..-2].each do |part|
48
48
  unless all_data.key?(part)
49
- Chef::Log.warn("Could not find whitelist attribute #{item}.")
49
+ Chef::Log.warn("Could not find allowlist attribute #{item}.")
50
50
  return nil
51
51
  end
52
52
 
@@ -58,7 +58,7 @@ class Chef
58
58
  # Note: You can't do all_data[parts[-1]] here because the value
59
59
  # may be false-y
60
60
  unless all_data.key?(parts[-1])
61
- Chef::Log.warn("Could not find whitelist attribute #{item}.")
61
+ Chef::Log.warn("Could not find allowlist attribute #{item}.")
62
62
  return nil
63
63
  end
64
64
 
@@ -2,14 +2,14 @@
2
2
  require_relative "exceptions"
3
3
 
4
4
  class Chef
5
- class Blacklist
5
+ class AttributeBlocklist
6
6
 
7
- # filter takes two arguments - the data you want to filter, and a blacklisted array
7
+ # filter takes two arguments - the data you want to filter, and an array
8
8
  # of keys you want discarded. You can capture a subtree of the data to filter by
9
9
  # providing a "/"-delimited string of keys. If some key includes "/"-characters,
10
10
  # you must provide an array of keys instead.
11
11
  #
12
- # Blacklist.filter(
12
+ # AttributeBlocklist.filter(
13
13
  # { "filesystem" => {
14
14
  # "/dev/disk" => {
15
15
  # "size" => "10mb"
@@ -27,17 +27,17 @@ class Chef
27
27
  # },
28
28
  # ["network/interfaces/eth0", ["filesystem", "/dev/disk"]])
29
29
  # will exclude the eth0 and /dev/disk subtrees.
30
- def self.filter(data, blacklist = nil)
31
- return data if blacklist.nil?
30
+ def self.filter(data, blocklist = nil)
31
+ return data if blocklist.nil?
32
32
 
33
- blacklist.each do |item|
33
+ blocklist.each do |item|
34
34
  Chef::Log.warn("Removing item #{item}")
35
35
  remove_data(data, item)
36
36
  end
37
37
  data
38
38
  end
39
39
 
40
- # Walk the data according to the keys provided by the blacklisted item
40
+ # Walk the data according to the keys provided by the blocklisted item
41
41
  # to get a reference to the item that will be removed.
42
42
  def self.remove_data(data, item)
43
43
  parts = to_array(item)
@@ -45,7 +45,7 @@ class Chef
45
45
  item_ref = data
46
46
  parts[0..-2].each do |part|
47
47
  unless item_ref[part]
48
- Chef::Log.warn("Could not find blacklist attribute #{item}.")
48
+ Chef::Log.warn("Could not find blocklist attribute #{item}.")
49
49
  return nil
50
50
  end
51
51
 
@@ -53,7 +53,7 @@ class Chef
53
53
  end
54
54
 
55
55
  unless item_ref.key?(parts[-1])
56
- Chef::Log.warn("Could not find blacklist attribute #{item}.")
56
+ Chef::Log.warn("Could not find blocklist attribute #{item}.")
57
57
  return nil
58
58
  end
59
59
 
@@ -5,14 +5,13 @@ class Chef
5
5
  module DataHandler
6
6
  class OrganizationDataHandler < DataHandlerBase
7
7
  def normalize(organization, entry)
8
- result = normalize_hash(organization, {
8
+ normalize_hash(organization, {
9
9
  "name" => entry.org,
10
10
  "full_name" => entry.org,
11
11
  "org_type" => "Business",
12
12
  "clientname" => "#{entry.org}-validator",
13
13
  "billing_plan" => "platform-free",
14
14
  })
15
- result
16
15
  end
17
16
 
18
17
  def preserve_key?(key)
@@ -76,8 +76,7 @@ class Chef
76
76
  raise Chef::Exceptions::MetadataNotFound.new(cookbook.root_paths[0], cookbook.name) unless cookbook.has_metadata_file?
77
77
 
78
78
  if cookbook
79
- begin
80
- tmp_cl = Chef::CookbookLoader.copy_to_tmp_dir_from_array([cookbook])
79
+ Chef::CookbookLoader.copy_to_tmp_dir_from_array([cookbook]) do |tmp_cl|
81
80
  tmp_cl.load_cookbooks
82
81
  tmp_cl.compile_metadata
83
82
  tmp_cl.freeze_versions if options[:freeze]
@@ -91,9 +90,6 @@ class Chef
91
90
  with_actual_cookbooks_dir(other.parent.file_path) do
92
91
  uploader.upload_cookbooks
93
92
  end
94
-
95
- ensure
96
- tmp_cl.unlink!
97
93
  end
98
94
  end
99
95
  end
@@ -92,6 +92,7 @@ class Chef
92
92
  end
93
93
 
94
94
  attr_writer :write_pretty_json
95
+
95
96
  def write_pretty_json
96
97
  @write_pretty_json.nil? ? root.write_pretty_json : @write_pretty_json
97
98
  end
@@ -145,7 +145,7 @@ class Chef
145
145
 
146
146
  def each_with_exceptions_unordered
147
147
  if @each_running
148
- raise "each() called on parallel enumerable twice simultaneously! Bad mojo"
148
+ raise "each() called on parallel enumerable twice simultaneously! Bad mojo"
149
149
  end
150
150
 
151
151
  @each_running = true
@@ -20,7 +20,7 @@
20
20
 
21
21
  require_relative "config"
22
22
  require_relative "mixin/params_validate"
23
- require "chef-utils/dsl/path_sanity" unless defined?(ChefUtils::DSL::PathSanity)
23
+ require "chef-utils/dsl/default_paths" unless defined?(ChefUtils::DSL::DefaultPaths)
24
24
  require_relative "log"
25
25
  require_relative "deprecated"
26
26
  require_relative "server_api"
@@ -250,7 +250,7 @@ class Chef
250
250
  logger.info "#{Chef::Dist::CLIENT.capitalize} pid: #{Process.pid}"
251
251
  logger.info "Targeting node: #{Chef::Config.target_mode.host}" if Chef::Config.target_mode?
252
252
  logger.debug("#{Chef::Dist::CLIENT.capitalize} request_id: #{request_id}")
253
- ENV["PATH"] = ChefUtils::DSL::PathSanity.sanitized_path if Chef::Config[:enforce_path_sanity]
253
+ ENV["PATH"] = ChefUtils::DSL::DefaultPaths.default_paths if Chef::Config[:enforce_default_paths] || Chef::Config[:enforce_path_sanity]
254
254
 
255
255
  if Chef::Config.target_mode?
256
256
  get_ohai_data_remotely
@@ -343,7 +343,7 @@ class Chef
343
343
  formatters_for_run.map do |formatter_name, output_path|
344
344
  if output_path.nil?
345
345
  Chef::Formatters.new(formatter_name, STDOUT_FD, STDERR_FD)
346
- else
346
+ elsif output_path.is_a?(String)
347
347
  io = File.open(output_path, "a+")
348
348
  io.sync = true
349
349
  Chef::Formatters.new(formatter_name, io, io)
@@ -72,10 +72,8 @@ class Chef
72
72
  Chef::Log.trace("Current checksum: #{current_checksum}; manifest checksum: #{found_manifest_record["checksum"]})")
73
73
  end
74
74
 
75
- full_path_cache_filename = Chef::FileCache.load(cache_filename, false)
76
-
77
75
  # return the filename, not the contents (second argument= false)
78
- full_path_cache_filename
76
+ Chef::FileCache.load(cache_filename, false)
79
77
  end
80
78
 
81
79
  def validate_cached_copy(cache_filename)
@@ -120,8 +120,7 @@ class Chef
120
120
  path = Chef::Util::PathHelper.escape_glob_dir(cookbook_path)
121
121
  files = Dir[File.join(path, "**", "*.rb")]
122
122
  files = remove_ignored_files(files)
123
- files = remove_uninteresting_ruby_files(files)
124
- files
123
+ remove_uninteresting_ruby_files(files)
125
124
  end
126
125
 
127
126
  def untested_ruby_files
@@ -44,14 +44,11 @@ class Chef
44
44
  # @return [Array<String>] the array of repo paths containing cookbook dirs
45
45
  attr_reader :repo_paths
46
46
 
47
- attr_accessor :tmp_working_dir_path
48
-
49
47
  # XXX: this is highly questionable combined with the Hash-style each method
50
48
  include Enumerable
51
49
 
52
50
  # @param repo_paths [Array<String>] the array of repo paths containing cookbook dirs
53
51
  def initialize(*repo_paths)
54
- @tmp_working_dir_path = nil
55
52
  @repo_paths = repo_paths.flatten.compact.map { |p| File.expand_path(p) }
56
53
  raise ArgumentError, "You must specify at least one cookbook repo path" if @repo_paths.empty?
57
54
  end
@@ -140,27 +137,23 @@ class Chef
140
137
 
141
138
  # This method creates tmp directory and copies all cookbooks into it and creates cookbook loader object which points to tmp directory
142
139
  def self.copy_to_tmp_dir_from_array(cookbooks)
143
- tmp_cookbook_file = Tempfile.new("tmp_working_dir_path")
144
- tmp_cookbook_file.close
145
- @tmp_working_dir_path = tmp_cookbook_file.path
146
- File.unlink(@tmp_working_dir_path)
147
- FileUtils.mkdir_p(@tmp_working_dir_path)
148
- cookbooks.each do |cookbook|
149
- checksums_to_on_disk_paths = cookbook.checksums
150
- cookbook.each_file do |manifest_record|
151
- path_in_cookbook = manifest_record[:path]
152
- on_disk_path = checksums_to_on_disk_paths[manifest_record[:checksum]]
153
- dest = File.join(@tmp_working_dir_path, cookbook.name.to_s, path_in_cookbook)
154
- FileUtils.mkdir_p(File.dirname(dest))
155
- FileUtils.cp_r(on_disk_path, dest)
140
+ Dir.mktmpdir do |tmp_dir|
141
+ cookbooks.each do |cookbook|
142
+ checksums_to_on_disk_paths = cookbook.checksums
143
+ cookbook.each_file do |manifest_record|
144
+ path_in_cookbook = manifest_record[:path]
145
+ on_disk_path = checksums_to_on_disk_paths[manifest_record[:checksum]]
146
+ dest = File.join(tmp_dir, cookbook.name.to_s, path_in_cookbook)
147
+ FileUtils.mkdir_p(File.dirname(dest))
148
+ FileUtils.cp_r(on_disk_path, dest)
149
+ end
156
150
  end
151
+ tmp_cookbook_loader ||= begin
152
+ Chef::Cookbook::FileVendor.fetch_from_disk(tmp_dir)
153
+ CookbookLoader.new(tmp_dir)
154
+ end
155
+ yield tmp_cookbook_loader
157
156
  end
158
- tmp_cookbook_loader ||= begin
159
- Chef::Cookbook::FileVendor.fetch_from_disk(@tmp_working_dir_path)
160
- CookbookLoader.new(@tmp_working_dir_path)
161
- end
162
- tmp_cookbook_loader.tmp_working_dir_path = @tmp_working_dir_path
163
- tmp_cookbook_loader
164
157
  end
165
158
 
166
159
  # generates metadata.json adds it in the manifest
@@ -181,13 +174,6 @@ class Chef
181
174
  end
182
175
  end
183
176
 
184
- # removes the tmp_dir_path
185
- def unlink!
186
- raise "Invalid directory path." if @tmp_working_dir_path.nil?
187
-
188
- FileUtils.rm_rf(@tmp_working_dir_path)
189
- end
190
-
191
177
  alias :cookbooks :values
192
178
 
193
179
  private
@@ -59,12 +59,11 @@ class Chef
59
59
  end
60
60
 
61
61
  def to_h
62
- result = {
62
+ {
63
63
  "name" => @name,
64
64
  "json_class" => self.class.name,
65
65
  "chef_type" => "data_bag",
66
66
  }
67
- result
68
67
  end
69
68
 
70
69
  alias_method :to_hash, :to_h
@@ -241,6 +241,14 @@ class Chef
241
241
  target 30
242
242
  end
243
243
 
244
+ class ResourceNameWithoutProvides < Base
245
+ target 31
246
+ end
247
+
248
+ class AttributeBlacklistConfiguration < Base
249
+ target 32
250
+ end
251
+
244
252
  class Generic < Base
245
253
  def url
246
254
  "https://docs.chef.io/chef_deprecations_client/"
@@ -17,6 +17,7 @@
17
17
  #
18
18
 
19
19
  require "chef-utils" unless defined?(ChefUtils::CANARY)
20
+ require "chef/mixin/chef_utils_wiring" unless defined?(Chef::Mixin::ChefUtilsWiring)
20
21
 
21
22
  class Chef
22
23
  module DSL
@@ -25,6 +26,7 @@ class Chef
25
26
  # #value_for_platform.
26
27
  module PlatformIntrospection
27
28
  include ChefUtils
29
+ include Chef::Mixin::ChefUtilsWiring
28
30
 
29
31
  # Implementation class for determining platform dependent values
30
32
  class PlatformDependentValue
@@ -119,7 +119,7 @@ class Chef
119
119
  end
120
120
 
121
121
  def to_h
122
- result = {
122
+ {
123
123
  "name" => @name,
124
124
  "description" => @description,
125
125
  "cookbook_versions" => @cookbook_versions,
@@ -128,7 +128,6 @@ class Chef
128
128
  "default_attributes" => @default_attributes,
129
129
  "override_attributes" => @override_attributes,
130
130
  }
131
- result
132
131
  end
133
132
 
134
133
  alias_method :to_hash, :to_h