chef 16.0.275-universal-mingw32 → 16.2.50-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 (293) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/README.md +3 -3
  4. data/Rakefile +15 -1
  5. data/chef.gemspec +3 -3
  6. data/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/application/apply.rb +2 -2
  9. data/lib/chef/application/base.rb +1 -1
  10. data/lib/chef/application/client.rb +1 -1
  11. data/lib/chef/application/exit_code.rb +2 -2
  12. data/lib/chef/application/windows_service_manager.rb +1 -1
  13. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  14. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  18. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  20. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  21. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  22. data/lib/chef/chef_fs/path_utils.rb +4 -4
  23. data/lib/chef/cookbook/chefignore.rb +1 -1
  24. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +2 -2
  26. data/lib/chef/cookbook_loader.rb +1 -1
  27. data/lib/chef/cookbook_manifest.rb +1 -1
  28. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +7 -7
  30. data/lib/chef/data_bag.rb +4 -4
  31. data/lib/chef/data_collector.rb +1 -1
  32. data/lib/chef/data_collector/error_handlers.rb +1 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +5 -1
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dsl/declare_resource.rb +1 -1
  37. data/lib/chef/dsl/platform_introspection.rb +1 -1
  38. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  39. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  40. data/lib/chef/file_access_control.rb +1 -1
  41. data/lib/chef/formatters/base.rb +1 -1
  42. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  43. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  44. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  45. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  46. data/lib/chef/http.rb +18 -3
  47. data/lib/chef/http/decompressor.rb +1 -1
  48. data/lib/chef/http/http_request.rb +1 -1
  49. data/lib/chef/http/json_output.rb +1 -1
  50. data/lib/chef/http/ssl_policies.rb +18 -0
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -2
  54. data/lib/chef/knife/bootstrap.rb +13 -16
  55. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  56. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  57. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  58. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  59. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  60. data/lib/chef/knife/config_get.rb +1 -1
  61. data/lib/chef/knife/config_use_profile.rb +15 -5
  62. data/lib/chef/knife/cookbook_delete.rb +1 -1
  63. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  64. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  65. data/lib/chef/knife/core/node_presenter.rb +1 -1
  66. data/lib/chef/knife/core/status_presenter.rb +1 -1
  67. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  68. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
  69. data/lib/chef/knife/data_bag_create.rb +1 -1
  70. data/lib/chef/knife/key_create_base.rb +1 -1
  71. data/lib/chef/knife/key_edit_base.rb +1 -1
  72. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  73. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  74. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  75. data/lib/chef/knife/ssh.rb +2 -2
  76. data/lib/chef/knife/supermarket_share.rb +1 -1
  77. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  78. data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
  79. data/lib/chef/log.rb +1 -1
  80. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  81. data/lib/chef/mixin/checksum.rb +0 -1
  82. data/lib/chef/mixin/create_path.rb +8 -8
  83. data/lib/chef/mixin/openssl_helper.rb +4 -4
  84. data/lib/chef/mixin/properties.rb +4 -2
  85. data/lib/chef/mixin/securable.rb +2 -2
  86. data/lib/chef/mixin/shell_out.rb +1 -1
  87. data/lib/chef/node/attribute.rb +2 -2
  88. data/lib/chef/node/immutable_collections.rb +1 -1
  89. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  90. data/lib/chef/policy_builder/policyfile.rb +1 -1
  91. data/lib/chef/powershell.rb +1 -1
  92. data/lib/chef/property.rb +2 -2
  93. data/lib/chef/provider.rb +3 -3
  94. data/lib/chef/provider/batch.rb +3 -10
  95. data/lib/chef/provider/cron.rb +2 -14
  96. data/lib/chef/provider/directory.rb +1 -1
  97. data/lib/chef/provider/execute.rb +2 -1
  98. data/lib/chef/provider/file.rb +1 -1
  99. data/lib/chef/provider/group/dscl.rb +2 -2
  100. data/lib/chef/provider/group/windows.rb +1 -1
  101. data/lib/chef/provider/ifconfig.rb +7 -7
  102. data/lib/chef/provider/launchd.rb +28 -32
  103. data/lib/chef/provider/mount/aix.rb +1 -1
  104. data/lib/chef/provider/mount/windows.rb +2 -2
  105. data/lib/chef/provider/noop.rb +1 -1
  106. data/lib/chef/provider/package/cab.rb +1 -1
  107. data/lib/chef/provider/package/chocolatey.rb +1 -1
  108. data/lib/chef/provider/package/dpkg.rb +1 -1
  109. data/lib/chef/provider/package/openbsd.rb +1 -1
  110. data/lib/chef/provider/package/portage.rb +3 -2
  111. data/lib/chef/provider/package/powershell.rb +6 -2
  112. data/lib/chef/provider/package/rubygems.rb +3 -3
  113. data/lib/chef/provider/package/snap.rb +96 -27
  114. data/lib/chef/provider/package/windows.rb +2 -2
  115. data/lib/chef/provider/package/windows/msi.rb +3 -3
  116. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  117. data/lib/chef/provider/package/yum.rb +1 -1
  118. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  119. data/lib/chef/provider/powershell_script.rb +11 -15
  120. data/lib/chef/provider/remote_directory.rb +2 -2
  121. data/lib/chef/provider/remote_file/http.rb +4 -1
  122. data/lib/chef/provider/script.rb +4 -75
  123. data/lib/chef/provider/service/arch.rb +2 -2
  124. data/lib/chef/provider/service/debian.rb +2 -2
  125. data/lib/chef/provider/service/macosx.rb +13 -2
  126. data/lib/chef/provider/service/openbsd.rb +4 -4
  127. data/lib/chef/provider/service/redhat.rb +1 -1
  128. data/lib/chef/provider/service/simple.rb +3 -3
  129. data/lib/chef/provider/service/upstart.rb +1 -1
  130. data/lib/chef/provider/service/windows.rb +1 -1
  131. data/lib/chef/provider/subversion.rb +2 -2
  132. data/lib/chef/provider/user/aix.rb +1 -1
  133. data/lib/chef/provider/user/dscl.rb +6 -6
  134. data/lib/chef/provider/user/linux.rb +3 -3
  135. data/lib/chef/provider/user/mac.rb +15 -11
  136. data/lib/chef/provider/windows_script.rb +87 -25
  137. data/lib/chef/provider/windows_task.rb +5 -3
  138. data/lib/chef/provider/zypper_repository.rb +30 -10
  139. data/lib/chef/resource.rb +25 -14
  140. data/lib/chef/resource/alternatives.rb +1 -1
  141. data/lib/chef/resource/apt_package.rb +1 -1
  142. data/lib/chef/resource/archive_file.rb +28 -8
  143. data/lib/chef/resource/bash.rb +0 -1
  144. data/lib/chef/resource/batch.rb +4 -2
  145. data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
  146. data/lib/chef/resource/chef_gem.rb +57 -21
  147. data/lib/chef/resource/chef_handler.rb +2 -2
  148. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  149. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  150. data/lib/chef/resource/cron/cron.rb +46 -0
  151. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  152. data/lib/chef/resource/cron_access.rb +11 -3
  153. data/lib/chef/resource/csh.rb +0 -1
  154. data/lib/chef/resource/dmg_package.rb +1 -1
  155. data/lib/chef/resource/execute.rb +478 -8
  156. data/lib/chef/resource/file.rb +10 -8
  157. data/lib/chef/resource/freebsd_package.rb +1 -1
  158. data/lib/chef/resource/gem_package.rb +35 -2
  159. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  160. data/lib/chef/resource/homebrew_package.rb +30 -1
  161. data/lib/chef/resource/homebrew_update.rb +107 -0
  162. data/lib/chef/resource/hostname.rb +7 -20
  163. data/lib/chef/resource/kernel_module.rb +14 -1
  164. data/lib/chef/resource/launchd.rb +4 -4
  165. data/lib/chef/resource/locale.rb +3 -3
  166. data/lib/chef/resource/macos_userdefaults.rb +14 -9
  167. data/lib/chef/resource/mount.rb +1 -1
  168. data/lib/chef/resource/msu_package.rb +1 -1
  169. data/lib/chef/resource/perl.rb +0 -1
  170. data/lib/chef/resource/plist.rb +23 -4
  171. data/lib/chef/resource/powershell_script.rb +4 -2
  172. data/lib/chef/resource/python.rb +0 -1
  173. data/lib/chef/resource/remote_file.rb +26 -10
  174. data/lib/chef/resource/ruby.rb +0 -1
  175. data/lib/chef/resource/scm/git.rb +1 -1
  176. data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
  177. data/lib/chef/resource/sudo.rb +29 -2
  178. data/lib/chef/resource/swap_file.rb +17 -0
  179. data/lib/chef/resource/template.rb +1 -1
  180. data/lib/chef/resource/timezone.rb +15 -0
  181. data/lib/chef/resource/windows_ad_join.rb +30 -1
  182. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  183. data/lib/chef/resource/windows_auto_run.rb +11 -0
  184. data/lib/chef/resource/windows_certificate.rb +27 -1
  185. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  186. data/lib/chef/resource/windows_firewall_rule.rb +2 -2
  187. data/lib/chef/resource/windows_font.rb +3 -3
  188. data/lib/chef/resource/windows_package.rb +3 -3
  189. data/lib/chef/resource/windows_pagefile.rb +2 -2
  190. data/lib/chef/resource/windows_printer.rb +1 -1
  191. data/lib/chef/resource/windows_script.rb +2 -16
  192. data/lib/chef/resource/windows_security_policy.rb +47 -16
  193. data/lib/chef/resource/windows_share.rb +2 -2
  194. data/lib/chef/resource/windows_shortcut.rb +1 -2
  195. data/lib/chef/resource/windows_task.rb +21 -21
  196. data/lib/chef/resource/windows_user_privilege.rb +45 -3
  197. data/lib/chef/resource/yum_repository.rb +9 -9
  198. data/lib/chef/resource_inspector.rb +4 -3
  199. data/lib/chef/resources.rb +4 -2
  200. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  201. data/lib/chef/search/query.rb +1 -1
  202. data/lib/chef/shell/ext.rb +1 -1
  203. data/lib/chef/util/diff.rb +2 -2
  204. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  205. data/lib/chef/util/windows/net_user.rb +1 -1
  206. data/lib/chef/util/windows/volume.rb +1 -1
  207. data/lib/chef/version.rb +1 -1
  208. data/lib/chef/win32/api.rb +2 -2
  209. data/lib/chef/win32/api/error.rb +3 -1
  210. data/lib/chef/win32/api/file.rb +18 -18
  211. data/lib/chef/win32/api/net.rb +1 -0
  212. data/lib/chef/win32/file.rb +1 -1
  213. data/lib/chef/win32/mutex.rb +1 -1
  214. data/lib/chef/win32/net.rb +1 -0
  215. data/lib/chef/win32/process.rb +2 -2
  216. data/lib/chef/win32/registry.rb +2 -2
  217. data/lib/chef/win32/security.rb +1 -1
  218. data/lib/chef/win32/security/sid.rb +4 -4
  219. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  220. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  221. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  222. data/spec/functional/resource/cron_spec.rb +10 -0
  223. data/spec/functional/resource/dnf_package_spec.rb +2 -2
  224. data/spec/functional/resource/git_spec.rb +6 -6
  225. data/spec/functional/resource/launchd_spec.rb +232 -0
  226. data/spec/functional/resource/remote_file_spec.rb +2 -2
  227. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  228. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  229. data/spec/functional/resource/windows_task_spec.rb +12 -12
  230. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  231. data/spec/support/chef_helpers.rb +1 -1
  232. data/spec/support/platform_helpers.rb +1 -1
  233. data/spec/support/platforms/win32/spec_service.rb +1 -1
  234. data/spec/support/shared/functional/execute_resource.rb +1 -1
  235. data/spec/support/shared/functional/file_resource.rb +1 -1
  236. data/spec/support/shared/functional/windows_script.rb +1 -1
  237. data/spec/support/shared/unit/execute_resource.rb +1 -1
  238. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  239. data/spec/unit/application_spec.rb +7 -0
  240. data/spec/unit/data_bag_spec.rb +1 -1
  241. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  242. data/spec/unit/knife/bootstrap_spec.rb +2 -2
  243. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  244. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  245. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  246. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  247. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  248. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  249. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  250. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  251. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  252. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  253. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  254. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  255. data/spec/unit/mixin/user_context_spec.rb +1 -9
  256. data/spec/unit/node/attribute_spec.rb +1 -1
  257. data/spec/unit/property_spec.rb +1 -1
  258. data/spec/unit/provider/batch_spec.rb +130 -0
  259. data/spec/unit/provider/cron_spec.rb +9 -49
  260. data/spec/unit/provider/git_spec.rb +3 -3
  261. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  262. data/spec/unit/provider/launchd_spec.rb +8 -50
  263. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  264. data/spec/unit/provider/package/msu_spec.rb +3 -3
  265. data/spec/unit/provider/package/portage_spec.rb +2 -2
  266. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  267. data/spec/unit/provider/package/snap_spec.rb +1 -1
  268. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  269. data/spec/unit/provider/script_spec.rb +20 -110
  270. data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
  271. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  272. data/spec/unit/provider_resolver_spec.rb +9 -9
  273. data/spec/unit/resource/archive_file_spec.rb +11 -2
  274. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  275. data/spec/unit/resource/cron_spec.rb +2 -2
  276. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  277. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  278. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  279. data/spec/unit/resource/timezone_spec.rb +1 -1
  280. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  281. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  282. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  283. data/spec/unit/resource/windows_package_spec.rb +10 -0
  284. data/spec/unit/resource/windows_task_spec.rb +1 -1
  285. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  286. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  287. data/spec/unit/resource_spec.rb +67 -1
  288. data/spec/unit/run_context_spec.rb +1 -1
  289. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  290. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  291. data/spec/unit/win32/registry_spec.rb +1 -1
  292. metadata +24 -23
  293. data/lib/chef/resource/cron.rb +0 -157
@@ -147,7 +147,7 @@ class Chef
147
147
  new_resource.updated_by_last_action(true) if res.updated?
148
148
  end
149
149
 
150
- # Get the files to tranfer. This returns files in lexicographical sort order.
150
+ # Get the files to transfer. This returns files in lexicographical sort order.
151
151
  #
152
152
  # FIXME: it should do breadth-first, see CHEF-5080 (please use a performant sort)
153
153
  #
@@ -245,7 +245,7 @@ class Chef
245
245
  res = Chef::Resource::Directory.new(dir, run_context)
246
246
  res.cookbook_name = resource_cookbook
247
247
  if ChefUtils.windows? && rights
248
- # rights are only meant to be applied to the toppest-level directory;
248
+ # rights are only meant to be applied to the most top-level directory;
249
249
  # Windows will handle inheritance.
250
250
  if dir == path
251
251
  rights.each do |r|
@@ -130,10 +130,13 @@ class Chef
130
130
  # which tricks Chef::REST into decompressing the response body. In this
131
131
  # case you'd end up with a tar archive (no gzip) named, e.g., foo.tgz,
132
132
  # which is not what you wanted.
133
- if uri.to_s =~ /gz$/
133
+ if /gz$/.match?(uri.to_s)
134
134
  logger.trace("Turning gzip compression off due to filename ending in gz")
135
135
  opts[:disable_gzip] = true
136
136
  end
137
+ if new_resource.ssl_verify_mode
138
+ opts[:ssl_verify_mode] = new_resource.ssl_verify_mode
139
+ end
137
140
  opts
138
141
  end
139
142
 
@@ -16,9 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "tempfile" unless defined?(Tempfile)
20
19
  require_relative "execute"
21
- require_relative "../win32/security" if ChefUtils.windows?
22
20
  require "forwardable" unless defined?(Forwardable)
23
21
 
24
22
  class Chef
@@ -34,84 +32,15 @@ class Chef
34
32
  provides :ruby
35
33
  provides :script
36
34
 
37
- def_delegators :new_resource, :interpreter, :flags
38
-
39
- attr_accessor :code
40
-
41
- def initialize(new_resource, run_context)
42
- super
43
- self.code = new_resource.code
44
- end
35
+ def_delegators :new_resource, :interpreter, :flags, :code
45
36
 
46
37
  def command
47
- "\"#{interpreter}\" #{flags} \"#{script_file.path}\""
48
- end
49
-
50
- def load_current_resource
51
- super
52
- end
53
-
54
- action :run do
55
- script_file.puts(code)
56
- script_file.close
57
-
58
- set_owner_and_group
59
-
60
- super()
61
-
62
- unlink_script_file
63
- end
64
-
65
- def set_owner_and_group
66
- if ChefUtils.windows?
67
- # And on Windows also this is a no-op if there is no user specified.
68
- grant_alternate_user_read_access
69
- else
70
- # FileUtils itself implements a no-op if +user+ or +group+ are nil
71
- # You can prove this by running FileUtils.chown(nil,nil,'/tmp/file')
72
- # as an unprivileged user.
73
- FileUtils.chown(new_resource.user, new_resource.group, script_file.path)
74
- end
38
+ "\"#{interpreter}\" #{flags}"
75
39
  end
76
40
 
77
- def grant_alternate_user_read_access
78
- # Do nothing if an alternate user isn't specified -- the file
79
- # will already have the correct permissions for the user as part
80
- # of the default ACL behavior on Windows.
81
- return if new_resource.user.nil?
82
-
83
- # Duplicate the script file's existing DACL
84
- # so we can add an ACE later
85
- securable_object = Chef::ReservedNames::Win32::Security::SecurableObject.new(script_file.path)
86
- aces = securable_object.security_descriptor.dacl.reduce([]) { |result, current| result.push(current) }
87
-
88
- username = new_resource.user
89
-
90
- if new_resource.domain
91
- username = new_resource.domain + '\\' + new_resource.user
92
- end
93
-
94
- # Create an ACE that allows the alternate user read access to the script
95
- # file so it can be read and executed.
96
- user_sid = Chef::ReservedNames::Win32::Security::SID.from_account(username)
97
- read_ace = Chef::ReservedNames::Win32::Security::ACE.access_allowed(user_sid, Chef::ReservedNames::Win32::API::Security::GENERIC_READ | Chef::ReservedNames::Win32::API::Security::GENERIC_EXECUTE, 0)
98
- aces.push(read_ace)
99
- acl = Chef::ReservedNames::Win32::Security::ACL.create(aces)
100
-
101
- # This actually applies the modified DACL to the file
102
- # Use parentheses to bypass RuboCop / ChefStyle warning
103
- # about useless setter
104
- (securable_object.dacl = acl)
41
+ def input
42
+ code
105
43
  end
106
-
107
- def script_file
108
- @script_file ||= Tempfile.open("chef-script")
109
- end
110
-
111
- def unlink_script_file
112
- script_file && script_file.close!
113
- end
114
-
115
44
  end
116
45
  end
117
46
  end
@@ -33,7 +33,7 @@ class Chef::Provider::Service::Arch < Chef::Provider::Service::Init
33
33
 
34
34
  def load_current_resource
35
35
  raise Chef::Exceptions::Service, "Could not find /etc/rc.conf" unless ::File.exists?("/etc/rc.conf")
36
- raise Chef::Exceptions::Service, "No DAEMONS found in /etc/rc.conf" unless ::File.read("/etc/rc.conf") =~ /DAEMONS=\((.*)\)/m
36
+ raise Chef::Exceptions::Service, "No DAEMONS found in /etc/rc.conf" unless /DAEMONS=\((.*)\)/m.match?(::File.read("/etc/rc.conf"))
37
37
 
38
38
  super
39
39
 
@@ -42,7 +42,7 @@ class Chef::Provider::Service::Arch < Chef::Provider::Service::Init
42
42
  end
43
43
 
44
44
  # Get list of all daemons from the file '/etc/rc.conf'.
45
- # Mutiple lines and background form are supported. Example:
45
+ # Multiple lines and background form are supported. Example:
46
46
  # DAEMONS=(\
47
47
  # foobar \
48
48
  # @example \
@@ -76,9 +76,9 @@ class Chef
76
76
 
77
77
  in_info = false
78
78
  ::File.readlines(path).each_with_object([]) do |line, acc|
79
- if line =~ /^### BEGIN INIT INFO/
79
+ if /^### BEGIN INIT INFO/.match?(line)
80
80
  in_info = true
81
- elsif line =~ /^### END INIT INFO/
81
+ elsif /^### END INIT INFO/.match?(line)
82
82
  break acc
83
83
  elsif in_info
84
84
  if line =~ /Default-(Start|Stop):\s+(\d.*)/
@@ -56,8 +56,10 @@ class Chef
56
56
  if @console_user
57
57
  @console_user = Etc.getpwuid(::File.stat("/dev/console").uid).name
58
58
  logger.trace("#{new_resource} console_user: '#{@console_user}'")
59
- cmd = "su -l"
60
- @base_user_cmd = cmd + "#{@console_user} -c"
59
+
60
+ @base_user_cmd = "su -l #{@console_user} -c"
61
+ logger.trace("#{new_resource} base_user_cmd: '#{@base_user_cmd}'")
62
+
61
63
  # Default LaunchAgent session should be Aqua
62
64
  @session_type = "Aqua" if @session_type.nil?
63
65
  end
@@ -140,6 +142,15 @@ class Chef
140
142
  #
141
143
  # This makes some sense on macOS since launchctl is an "init"-style
142
144
  # supervisor that will restart daemons that are crashing, etc.
145
+ #
146
+ # FIXME: Does this make any sense at all? The difference between enabled and
147
+ # running as state would seem to only be useful for completely broken
148
+ # services (enabled, not restarting, but not running => totally broken?).
149
+ #
150
+ # It seems like otherwise :enable is equivalent to :start, and :disable is
151
+ # equivalent to :stop? But just with strangely different behavior in the
152
+ # face of a broken service?
153
+ #
143
154
  def enable_service
144
155
  if @current_resource.enabled
145
156
  logger.trace("#{@new_resource} already enabled, not enabling")
@@ -91,7 +91,7 @@ class Chef
91
91
  old_services_list = rc_conf_local.match(/^pkg_scripts="(.*)"/)
92
92
  old_services_list = old_services_list ? old_services_list[1].split(" ") : []
93
93
  new_services_list = old_services_list + [new_resource.service_name]
94
- if rc_conf_local =~ /^pkg_scripts="(.*)"/
94
+ if /^pkg_scripts="(.*)"/.match?(rc_conf_local)
95
95
  new_rcl = rc_conf_local.sub(/^pkg_scripts="(.*)"/, "pkg_scripts=\"#{new_services_list.join(" ")}\"")
96
96
  else
97
97
  new_rcl = rc_conf_local + "\n" + "pkg_scripts=\"#{new_services_list.join(" ")}\"\n"
@@ -158,7 +158,7 @@ class Chef
158
158
  result = false
159
159
  var_name = builtin_service_enable_variable_name
160
160
  if var_name
161
- if rc_conf =~ /^#{Regexp.escape(var_name)}=(.*)/
161
+ if /^#{Regexp.escape(var_name)}=(.*)/.match?(rc_conf)
162
162
  result = true
163
163
  end
164
164
  end
@@ -170,7 +170,7 @@ class Chef
170
170
  var_name = builtin_service_enable_variable_name
171
171
  if var_name
172
172
  if m = rc_conf.match(/^#{Regexp.escape(var_name)}=(.*)/)
173
- unless m[1] =~ /"?[Nn][Oo]"?/
173
+ unless /"?[Nn][Oo]"?/.match?(m[1])
174
174
  result = true
175
175
  end
176
176
  end
@@ -186,7 +186,7 @@ class Chef
186
186
  if var_name
187
187
  if m = rc_conf_local.match(/^#{Regexp.escape(var_name)}=(.*)/)
188
188
  @enabled_state_found = true
189
- unless m[1] =~ /"?[Nn][Oo]"?/ # e.g. looking for httpd_flags=NO
189
+ unless /"?[Nn][Oo]"?/.match?(m[1]) # e.g. looking for httpd_flags=NO
190
190
  result = true
191
191
  end
192
192
  end
@@ -87,7 +87,7 @@ class Chef
87
87
  chkconfig.stdout.split(/\s+/)[1..-1].each do |level|
88
88
  index = level.split(":").first
89
89
  status = level.split(":").last
90
- if level =~ CHKCONFIG_ON
90
+ if CHKCONFIG_ON.match?(level)
91
91
  @current_run_levels << index.to_i
92
92
  all_levels_match = false unless run_levels.include?(index.to_i)
93
93
  else
@@ -117,9 +117,9 @@ class Chef
117
117
  logger.trace("#{@new_resource} is running")
118
118
  end
119
119
  rescue Mixlib::ShellOut::ShellCommandFailed, SystemCallError
120
- # ShellOut sometimes throws different types of Exceptions than ShellCommandFailed.
121
- # Temporarily catching different types of exceptions here until we get Shellout fixed.
122
- # TODO: Remove the line before one we get the ShellOut fix.
120
+ # ShellOut sometimes throws different types of Exceptions than ShellCommandFailed.
121
+ # Temporarily catching different types of exceptions here until we get Shellout fixed.
122
+ # TODO: Remove the line before one we get the ShellOut fix.
123
123
  @status_load_success = false
124
124
  @current_resource.running false
125
125
  nil
@@ -41,7 +41,7 @@ class Chef
41
41
 
42
42
  # Upstart does more than start or stop a service, creating multiple 'states' [1] that a service can be in.
43
43
  # In chef, when we ask a service to start, we expect it to have started before performing the next step
44
- # since we have top down dependencies. Which is to say we may follow witha resource next that requires
44
+ # since we have top down dependencies. Which is to say we may follow with a resource next that requires
45
45
  # that service to be running. According to [2] we can trust that sending a 'goal' such as start will not
46
46
  # return until that 'goal' is reached, or some error has occurred.
47
47
  #
@@ -20,7 +20,7 @@
20
20
 
21
21
  require_relative "simple"
22
22
  require_relative "../../win32_service_constants"
23
- if RUBY_PLATFORM =~ /mswin|mingw32|windows/
23
+ if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
24
24
  require_relative "../../win32/error"
25
25
  require "win32/service"
26
26
  end
@@ -122,7 +122,7 @@ class Chef
122
122
  # If the specified revision is an integer, trust it.
123
123
  def revision_int
124
124
  @revision_int ||= begin
125
- if new_resource.revision =~ /^\d+$/
125
+ if /^\d+$/.match?(new_resource.revision)
126
126
  new_resource.revision
127
127
  else
128
128
  command = scm(:info, new_resource.repository, new_resource.svn_info_args, authentication, "-r#{new_resource.revision}")
@@ -211,7 +211,7 @@ class Chef
211
211
 
212
212
  def scm(*args)
213
213
  binary = svn_binary
214
- binary = "\"#{binary}\"" if binary =~ /\s/
214
+ binary = "\"#{binary}\"" if /\s/.match?(binary)
215
215
  [binary, *args].compact.join(" ")
216
216
  end
217
217
 
@@ -40,7 +40,7 @@ class Chef
40
40
  shell_out!("userdel", userdel_options, new_resource.username)
41
41
  end
42
42
 
43
- # Aix does not support -r like other unix, sytem account is created by adding to 'system' group
43
+ # Aix does not support -r like other unix, system account is created by adding to 'system' group
44
44
  def useradd_options
45
45
  opts = []
46
46
  opts << "-g" << "system" if new_resource.system
@@ -215,7 +215,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
215
215
  next_uid_guess = base_uid
216
216
  users_uids = run_dscl("list", "/Users", "uid")
217
217
  while next_uid_guess < search_limit + base_uid
218
- if users_uids =~ Regexp.new("#{Regexp.escape(next_uid_guess.to_s)}\n")
218
+ if users_uids&.match?(Regexp.new("#{Regexp.escape(next_uid_guess.to_s)}\n"))
219
219
  next_uid_guess += 1
220
220
  else
221
221
  uid = next_uid_guess
@@ -291,7 +291,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
291
291
  end
292
292
 
293
293
  def validate_home_dir_specification!
294
- unless new_resource.home =~ %r{^/}
294
+ unless %r{^/}.match?(new_resource.home)
295
295
  raise(Chef::Exceptions::InvalidHomeDirectory, "invalid path spec for User: '#{new_resource.username}', home directory: '#{new_resource.home}'")
296
296
  end
297
297
  end
@@ -382,7 +382,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
382
382
  salt,
383
383
  iterations,
384
384
  128,
385
- OpenSSL::Digest::SHA512.new
385
+ OpenSSL::Digest.new("SHA512")
386
386
  )
387
387
  end
388
388
 
@@ -536,7 +536,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
536
536
 
537
537
  # We flush the cache here in order to make sure that we read fresh information
538
538
  # for the user.
539
- shell_out("dscacheutil", "-flushcache") # FIXME: this is MacOS version dependent
539
+ shell_out("dscacheutil", "-flushcache") # FIXME: this is macOS version dependent
540
540
 
541
541
  begin
542
542
  user_plist_file = "#{USER_PLIST_DIRECTORY}/#{new_resource.username}.plist"
@@ -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 result.stdout =~ /No such key: /
590
+ raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if /No such key: /.match?(result.stdout)
591
591
 
592
592
  result.stdout
593
593
  end
@@ -627,7 +627,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
627
627
  salt,
628
628
  current_resource.iterations,
629
629
  128,
630
- OpenSSL::Digest::SHA512.new
630
+ OpenSSL::Digest.new("SHA512")
631
631
  ).unpack("H*").first == current_resource.password
632
632
  end
633
633
 
@@ -96,7 +96,7 @@ class Chef
96
96
  passwd_s = shell_out("passwd", "-S", new_resource.username, returns: [ 0, 1 ])
97
97
 
98
98
  # checking "does not exist" has to come before exit code handling since centos and ubuntu differ in exit codes
99
- if passwd_s.stderr =~ /does not exist/
99
+ if /does not exist/.match?(passwd_s.stderr)
100
100
  return false if whyrun_mode?
101
101
 
102
102
  raise Chef::Exceptions::User, "User #{new_resource.username} does not exist when checking lock status for #{new_resource}"
@@ -108,8 +108,8 @@ class Chef
108
108
  # now the actual output parsing
109
109
  @locked = nil
110
110
  status_line = passwd_s.stdout.split(" ")
111
- @locked = false if status_line[1] =~ /^[PN]/
112
- @locked = true if status_line[1] =~ /^L/
111
+ @locked = false if /^[PN]/.match?(status_line[1])
112
+ @locked = true if /^L/.match?(status_line[1])
113
113
 
114
114
  raise Chef::Exceptions::User, "Cannot determine if user #{new_resource.username} is locked for #{new_resource}" if @locked.nil?
115
115
 
@@ -102,7 +102,7 @@ class Chef
102
102
  shadow_hash_hex = user_plist[:shadow_hash][0]
103
103
  return unless shadow_hash_hex && shadow_hash_hex != ""
104
104
 
105
- # The password infomation is stored in the ShadowHashData key in the
105
+ # The password information is stored in the ShadowHashData key in the
106
106
  # plist. However, parsing it is a bit tricky as the value is itself
107
107
  # another encoded binary plist. We have to extract the encoded plist,
108
108
  # decode it from hex to a binary plist and then convert the binary
@@ -116,6 +116,8 @@ class Chef
116
116
  #
117
117
  # eg:
118
118
  #
119
+ # spellchecker: disable
120
+ #
119
121
  # <array>
120
122
  # <string>77687920 63616e27 74206170 706c6520 6275696c 6420636f 6e736973 74656e74 20746f6f 6c696e67</string>
121
123
  # </array>
@@ -126,6 +128,8 @@ class Chef
126
128
  # <data>AADKAAAKAA4LAA0MAAAAAAAAAAA=</data>
127
129
  # </array>
128
130
  #
131
+ # spellchecker: disable
132
+ #
129
133
  begin
130
134
  shadow_binary_plist = [shadow_hash_hex.delete(" ")].pack("H*")
131
135
  shadow_xml_plist = shell_out("plutil", "-convert", "xml1", "-o", "-", "-", input: shadow_binary_plist).stdout
@@ -159,7 +163,7 @@ class Chef
159
163
  # a problem. We'll check stderr and make sure we see that it finished
160
164
  # correctly.
161
165
  res = run_sysadminctl(cmd)
162
- unless res.downcase =~ /creating user/
166
+ unless /creating user/.match?(res.downcase)
163
167
  raise Chef::Exceptions::User, "error when creating user: #{res}"
164
168
  end
165
169
 
@@ -179,7 +183,7 @@ class Chef
179
183
  end
180
184
 
181
185
  if new_resource.manage_home
182
- # "sydadminctl -addUser" will create the home directory if it's
186
+ # "sysadminctl -addUser" will create the home directory if it's
183
187
  # the default /Users/<username>, otherwise it sets it in plist
184
188
  # but does not create it. Here we'll ensure that it gets created
185
189
  # if we've been given a directory that is not the default.
@@ -305,7 +309,7 @@ class Chef
305
309
  # sysadminctl doesn't exit with a non-zero exit code if it encounters
306
310
  # a problem. We'll check stderr and make sure we see that it finished
307
311
  res = run_sysadminctl(cmd)
308
- unless res.downcase =~ /deleting record|not found/
312
+ unless /deleting record|not found/.match?(res.downcase)
309
313
  raise Chef::Exceptions::User, "error deleting user: #{res}"
310
314
  end
311
315
 
@@ -368,7 +372,7 @@ class Chef
368
372
  next_uid_guess = base_uid
369
373
  users_uids = run_dscl("list", "/Users", "uid")
370
374
  while next_uid_guess < search_limit + base_uid
371
- if users_uids =~ Regexp.new("#{Regexp.escape(next_uid_guess.to_s)}\n")
375
+ if users_uids&.match?(Regexp.new("#{Regexp.escape(next_uid_guess.to_s)}\n"))
372
376
  next_uid_guess += 1
373
377
  else
374
378
  uid = next_uid_guess
@@ -426,7 +430,7 @@ class Chef
426
430
  # sysadminctl doesn't exit with a non-zero exit code if it encounters
427
431
  # a problem. We'll check stderr and make sure we see that it finished
428
432
  res = run_sysadminctl(cmd)
429
- unless res.downcase =~ /done/
433
+ unless /done/.match?(res.downcase)
430
434
  raise Chef::Exceptions::User, "error when modifying SecureToken: #{res}"
431
435
  end
432
436
 
@@ -491,7 +495,7 @@ class Chef
491
495
  convert_to_binary(current_resource.salt),
492
496
  current_resource.iterations.to_i,
493
497
  128,
494
- OpenSSL::Digest::SHA512.new
498
+ OpenSSL::Digest.new("SHA512")
495
499
  ).unpack("H*")[0] != current_resource.password
496
500
  end
497
501
 
@@ -517,7 +521,7 @@ class Chef
517
521
  salt.string,
518
522
  new_resource.iterations,
519
523
  128,
520
- OpenSSL::Digest::SHA512.new
524
+ OpenSSL::Digest.new("SHA512")
521
525
  )
522
526
  )
523
527
  end
@@ -554,7 +558,7 @@ class Chef
554
558
  # 0x0A End of record denoted by \n
555
559
  # 0x5C Escaping is denoted by \
556
560
  # 0x3A Fields are separated by :
557
- # 0x2C Values are seperated by ,
561
+ # 0x2C Values are separated by ,
558
562
  # dsRecTypeStandard:Users The record type we're configuring
559
563
  # 2 How many properties we're going to set
560
564
  # dsAttrTypeStandard:RecordName Property 1: our users record name
@@ -598,7 +602,7 @@ class Chef
598
602
 
599
603
  def run_sysadminctl(args)
600
604
  # sysadminctl doesn't exit with a non-zero code when errors are encountered
601
- # and ouputs everything to STDERR instead of STDOUT and STDERR. Therefore we'll
605
+ # and outputs everything to STDERR instead of STDOUT and STDERR. Therefore we'll
602
606
  # return the STDERR and let the caller handle it.
603
607
  shell_out!("sysadminctl", args).stderr
604
608
  end
@@ -607,7 +611,7 @@ class Chef
607
611
  result = shell_out("dscl", "-plist", ".", "-#{args[0]}", args[1..-1])
608
612
  return "" if ( args.first =~ /^delete/ ) && ( result.exitstatus != 0 )
609
613
  raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") unless result.exitstatus == 0
610
- raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if result.stdout =~ /No such key: /
614
+ raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if /No such key: /.match?(result.stdout)
611
615
 
612
616
  result.stdout
613
617
  end