chef 16.0.287 → 16.2.73

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 (331) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -3
  3. data/README.md +3 -3
  4. data/Rakefile +3 -2
  5. data/chef.gemspec +5 -5
  6. data/lib/chef/application/apply.rb +2 -1
  7. data/lib/chef/application/base.rb +1 -1
  8. data/lib/chef/application/client.rb +1 -1
  9. data/lib/chef/application/windows_service_manager.rb +1 -1
  10. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  11. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  12. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  13. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  14. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  15. data/lib/chef/chef_fs/path_utils.rb +4 -4
  16. data/lib/chef/cookbook/chefignore.rb +1 -1
  17. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  18. data/lib/chef/cookbook/metadata.rb +2 -2
  19. data/lib/chef/cookbook_loader.rb +1 -1
  20. data/lib/chef/cookbook_manifest.rb +1 -1
  21. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  22. data/lib/chef/cookbook_version.rb +4 -4
  23. data/lib/chef/data_bag.rb +4 -4
  24. data/lib/chef/data_collector.rb +1 -1
  25. data/lib/chef/data_collector/error_handlers.rb +1 -1
  26. data/lib/chef/decorator/lazy_array.rb +2 -2
  27. data/lib/chef/deprecated.rb +4 -0
  28. data/lib/chef/digester.rb +5 -4
  29. data/lib/chef/dsl/declare_resource.rb +1 -1
  30. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  31. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  32. data/lib/chef/file_access_control.rb +1 -1
  33. data/lib/chef/file_access_control/windows.rb +2 -2
  34. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  35. data/lib/chef/formatters/base.rb +1 -1
  36. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  37. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  38. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  39. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  40. data/lib/chef/http.rb +19 -4
  41. data/lib/chef/http/decompressor.rb +1 -1
  42. data/lib/chef/http/http_request.rb +1 -1
  43. data/lib/chef/http/json_output.rb +1 -1
  44. data/lib/chef/http/ssl_policies.rb +18 -0
  45. data/lib/chef/json_compat.rb +1 -1
  46. data/lib/chef/key.rb +1 -1
  47. data/lib/chef/knife.rb +2 -2
  48. data/lib/chef/knife/bootstrap.rb +20 -14
  49. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  50. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  51. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  52. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  53. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  54. data/lib/chef/knife/config_get.rb +1 -1
  55. data/lib/chef/knife/config_use_profile.rb +15 -5
  56. data/lib/chef/knife/cookbook_delete.rb +1 -1
  57. data/lib/chef/knife/cookbook_upload.rb +1 -4
  58. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  59. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  60. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  61. data/lib/chef/knife/core/node_presenter.rb +1 -1
  62. data/lib/chef/knife/core/status_presenter.rb +1 -1
  63. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  64. data/lib/chef/knife/core/windows_bootstrap_context.rb +19 -4
  65. data/lib/chef/knife/data_bag_create.rb +1 -1
  66. data/lib/chef/knife/key_create_base.rb +1 -1
  67. data/lib/chef/knife/key_edit_base.rb +1 -1
  68. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  69. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  70. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  71. data/lib/chef/knife/ssh.rb +2 -2
  72. data/lib/chef/knife/supermarket_share.rb +1 -1
  73. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  74. data/lib/chef/log.rb +1 -1
  75. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  76. data/lib/chef/mixin/checksum.rb +0 -1
  77. data/lib/chef/mixin/openssl_helper.rb +4 -4
  78. data/lib/chef/mixin/properties.rb +2 -2
  79. data/lib/chef/mixin/securable.rb +2 -2
  80. data/lib/chef/mixin/shell_out.rb +1 -1
  81. data/lib/chef/node/attribute.rb +2 -2
  82. data/lib/chef/node/immutable_collections.rb +1 -1
  83. data/lib/chef/policy_builder/policyfile.rb +1 -1
  84. data/lib/chef/powershell.rb +1 -1
  85. data/lib/chef/property.rb +2 -2
  86. data/lib/chef/provider.rb +3 -3
  87. data/lib/chef/provider/batch.rb +3 -10
  88. data/lib/chef/provider/cron.rb +2 -14
  89. data/lib/chef/provider/directory.rb +1 -1
  90. data/lib/chef/provider/execute.rb +2 -1
  91. data/lib/chef/provider/file.rb +1 -1
  92. data/lib/chef/provider/group/dscl.rb +2 -2
  93. data/lib/chef/provider/group/windows.rb +1 -1
  94. data/lib/chef/provider/ifconfig.rb +7 -7
  95. data/lib/chef/provider/launchd.rb +11 -9
  96. data/lib/chef/provider/mount/aix.rb +1 -1
  97. data/lib/chef/provider/mount/windows.rb +2 -2
  98. data/lib/chef/provider/noop.rb +1 -1
  99. data/lib/chef/provider/package/cab.rb +1 -1
  100. data/lib/chef/provider/package/chocolatey.rb +1 -1
  101. data/lib/chef/provider/package/dpkg.rb +1 -1
  102. data/lib/chef/provider/package/openbsd.rb +1 -1
  103. data/lib/chef/provider/package/portage.rb +3 -2
  104. data/lib/chef/provider/package/powershell.rb +6 -2
  105. data/lib/chef/provider/package/rubygems.rb +3 -3
  106. data/lib/chef/provider/package/snap.rb +96 -27
  107. data/lib/chef/provider/package/windows.rb +2 -2
  108. data/lib/chef/provider/package/windows/msi.rb +3 -3
  109. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  110. data/lib/chef/provider/package/yum.rb +1 -1
  111. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  112. data/lib/chef/provider/powershell_script.rb +11 -15
  113. data/lib/chef/provider/remote_directory.rb +2 -2
  114. data/lib/chef/provider/remote_file/http.rb +4 -1
  115. data/lib/chef/provider/script.rb +4 -75
  116. data/lib/chef/provider/service/arch.rb +2 -2
  117. data/lib/chef/provider/service/debian.rb +2 -2
  118. data/lib/chef/provider/service/macosx.rb +9 -0
  119. data/lib/chef/provider/service/openbsd.rb +4 -4
  120. data/lib/chef/provider/service/redhat.rb +1 -1
  121. data/lib/chef/provider/service/upstart.rb +1 -1
  122. data/lib/chef/provider/service/windows.rb +1 -1
  123. data/lib/chef/provider/subversion.rb +2 -2
  124. data/lib/chef/provider/user/aix.rb +1 -1
  125. data/lib/chef/provider/user/dscl.rb +6 -6
  126. data/lib/chef/provider/user/linux.rb +3 -3
  127. data/lib/chef/provider/user/mac.rb +15 -11
  128. data/lib/chef/provider/windows_script.rb +87 -25
  129. data/lib/chef/provider/windows_task.rb +4 -2
  130. data/lib/chef/provider/zypper_repository.rb +30 -10
  131. data/lib/chef/resource.rb +25 -14
  132. data/lib/chef/resource/alternatives.rb +1 -1
  133. data/lib/chef/resource/apt_package.rb +1 -1
  134. data/lib/chef/resource/archive_file.rb +28 -8
  135. data/lib/chef/resource/bash.rb +0 -1
  136. data/lib/chef/resource/batch.rb +4 -2
  137. data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
  138. data/lib/chef/resource/chef_gem.rb +57 -21
  139. data/lib/chef/resource/chef_handler.rb +2 -2
  140. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  141. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  142. data/lib/chef/resource/cron/cron.rb +46 -0
  143. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  144. data/lib/chef/resource/cron_access.rb +11 -3
  145. data/lib/chef/resource/csh.rb +0 -1
  146. data/lib/chef/resource/dmg_package.rb +2 -2
  147. data/lib/chef/resource/execute.rb +478 -8
  148. data/lib/chef/resource/file.rb +10 -8
  149. data/lib/chef/resource/freebsd_package.rb +1 -1
  150. data/lib/chef/resource/gem_package.rb +35 -2
  151. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  152. data/lib/chef/resource/homebrew_package.rb +30 -1
  153. data/lib/chef/resource/homebrew_update.rb +107 -0
  154. data/lib/chef/resource/hostname.rb +7 -20
  155. data/lib/chef/resource/kernel_module.rb +14 -1
  156. data/lib/chef/resource/launchd.rb +1 -1
  157. data/lib/chef/resource/locale.rb +3 -3
  158. data/lib/chef/resource/macos_userdefaults.rb +11 -6
  159. data/lib/chef/resource/mount.rb +1 -1
  160. data/lib/chef/resource/perl.rb +0 -1
  161. data/lib/chef/resource/plist.rb +23 -4
  162. data/lib/chef/resource/powershell_script.rb +4 -2
  163. data/lib/chef/resource/python.rb +0 -1
  164. data/lib/chef/resource/remote_file.rb +26 -10
  165. data/lib/chef/resource/ruby.rb +0 -1
  166. data/lib/chef/resource/scm/git.rb +1 -1
  167. data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
  168. data/lib/chef/resource/sudo.rb +29 -2
  169. data/lib/chef/resource/swap_file.rb +17 -0
  170. data/lib/chef/resource/template.rb +1 -1
  171. data/lib/chef/resource/timezone.rb +15 -0
  172. data/lib/chef/resource/windows_ad_join.rb +30 -1
  173. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  174. data/lib/chef/resource/windows_auto_run.rb +11 -0
  175. data/lib/chef/resource/windows_certificate.rb +27 -1
  176. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  177. data/lib/chef/resource/windows_font.rb +3 -3
  178. data/lib/chef/resource/windows_package.rb +1 -1
  179. data/lib/chef/resource/windows_pagefile.rb +2 -2
  180. data/lib/chef/resource/windows_script.rb +2 -16
  181. data/lib/chef/resource/windows_security_policy.rb +47 -16
  182. data/lib/chef/resource/windows_shortcut.rb +1 -2
  183. data/lib/chef/resource/windows_task.rb +10 -10
  184. data/lib/chef/resource/windows_user_privilege.rb +70 -5
  185. data/lib/chef/resource/yum_repository.rb +9 -9
  186. data/lib/chef/resource_inspector.rb +4 -3
  187. data/lib/chef/resources.rb +4 -2
  188. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  189. data/lib/chef/search/query.rb +1 -1
  190. data/lib/chef/shell/ext.rb +1 -1
  191. data/lib/chef/util/diff.rb +2 -2
  192. data/lib/chef/util/windows/net_user.rb +1 -1
  193. data/lib/chef/util/windows/volume.rb +1 -1
  194. data/lib/chef/version.rb +1 -1
  195. data/lib/chef/win32/api.rb +2 -2
  196. data/lib/chef/win32/api/error.rb +3 -1
  197. data/lib/chef/win32/api/file.rb +1 -1
  198. data/lib/chef/win32/api/net.rb +1 -0
  199. data/lib/chef/win32/file.rb +1 -1
  200. data/lib/chef/win32/mutex.rb +1 -1
  201. data/lib/chef/win32/net.rb +1 -0
  202. data/lib/chef/win32/registry.rb +2 -2
  203. data/lib/chef/win32/security.rb +1 -1
  204. data/lib/chef/win32/security/sid.rb +4 -4
  205. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  206. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  207. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  208. data/spec/functional/knife/configure_spec.rb +1 -1
  209. data/spec/functional/resource/aix_service_spec.rb +10 -1
  210. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  211. data/spec/functional/resource/bash_spec.rb +3 -2
  212. data/spec/functional/resource/bff_spec.rb +1 -1
  213. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  214. data/spec/functional/resource/cron_spec.rb +20 -1
  215. data/spec/functional/resource/dnf_package_spec.rb +6 -3
  216. data/spec/functional/resource/execute_spec.rb +1 -1
  217. data/spec/functional/resource/git_spec.rb +6 -6
  218. data/spec/functional/resource/group_spec.rb +9 -1
  219. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  220. data/spec/functional/resource/insserv_spec.rb +3 -2
  221. data/spec/functional/resource/launchd_spec.rb +232 -0
  222. data/spec/functional/resource/link_spec.rb +2 -5
  223. data/spec/functional/resource/mount_spec.rb +9 -1
  224. data/spec/functional/resource/msu_package_spec.rb +9 -3
  225. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  226. data/spec/functional/resource/remote_file_spec.rb +8 -8
  227. data/spec/functional/resource/rpm_spec.rb +1 -1
  228. data/spec/functional/resource/timezone_spec.rb +2 -0
  229. data/spec/functional/resource/windows_package_spec.rb +0 -1
  230. data/spec/functional/resource/windows_path_spec.rb +4 -0
  231. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  232. data/spec/functional/resource/windows_service_spec.rb +4 -0
  233. data/spec/functional/resource/windows_task_spec.rb +16 -15
  234. data/spec/functional/resource/windows_user_privilege_spec.rb +0 -1
  235. data/spec/functional/resource/yum_package_spec.rb +4 -1
  236. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  237. data/spec/functional/shell_spec.rb +0 -1
  238. data/spec/functional/win32/crypto_spec.rb +1 -1
  239. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  240. data/spec/integration/knife/cookbook_upload_spec.rb +1 -1
  241. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  242. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  243. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  244. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  245. data/spec/integration/recipes/recipe_dsl_spec.rb +4 -0
  246. data/spec/integration/recipes/resource_load_spec.rb +2 -2
  247. data/spec/support/chef_helpers.rb +1 -1
  248. data/spec/support/platform_helpers.rb +1 -1
  249. data/spec/support/platforms/win32/spec_service.rb +1 -1
  250. data/spec/support/shared/functional/execute_resource.rb +1 -1
  251. data/spec/support/shared/functional/securable_resource.rb +1 -2
  252. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  253. data/spec/support/shared/functional/windows_script.rb +3 -3
  254. data/spec/support/shared/unit/execute_resource.rb +1 -1
  255. data/spec/support/shared/unit/provider/file.rb +12 -8
  256. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  257. data/spec/unit/application/solo_spec.rb +4 -2
  258. data/spec/unit/application_spec.rb +7 -0
  259. data/spec/unit/chef_fs/config_spec.rb +2 -2
  260. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  261. data/spec/unit/client_spec.rb +4 -1
  262. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  263. data/spec/unit/data_bag_spec.rb +6 -3
  264. data/spec/unit/decorator_spec.rb +23 -23
  265. data/spec/unit/environment_spec.rb +5 -1
  266. data/spec/unit/guard_interpreter_spec.rb +1 -1
  267. data/spec/unit/http/api_versions_spec.rb +1 -1
  268. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  269. data/spec/unit/knife/bootstrap_spec.rb +3 -2
  270. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  271. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  272. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  273. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  274. data/spec/unit/lwrp_spec.rb +5 -2
  275. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  276. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  277. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  278. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  279. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  280. data/spec/unit/mixin/uris_spec.rb +1 -1
  281. data/spec/unit/mixin/user_context_spec.rb +1 -9
  282. data/spec/unit/node/attribute_spec.rb +1 -1
  283. data/spec/unit/property_spec.rb +1 -1
  284. data/spec/unit/provider/batch_spec.rb +130 -0
  285. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  286. data/spec/unit/provider/cron_spec.rb +9 -49
  287. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  288. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  289. data/spec/unit/provider/execute_spec.rb +1 -1
  290. data/spec/unit/provider/git_spec.rb +3 -3
  291. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  292. data/spec/unit/provider/launchd_spec.rb +0 -42
  293. data/spec/unit/provider/mdadm_spec.rb +1 -3
  294. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  295. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  296. data/spec/unit/provider/package/portage_spec.rb +2 -2
  297. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  298. data/spec/unit/provider/package/snap_spec.rb +1 -1
  299. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  300. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  301. data/spec/unit/provider/script_spec.rb +20 -110
  302. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  303. data/spec/unit/provider/windows_env_spec.rb +5 -4
  304. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  305. data/spec/unit/resource/archive_file_spec.rb +11 -2
  306. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  307. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  308. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  309. data/spec/unit/resource/cron_spec.rb +2 -2
  310. data/spec/unit/resource/file/verification_spec.rb +2 -1
  311. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  312. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  313. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  314. data/spec/unit/resource/timezone_spec.rb +1 -1
  315. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  316. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  317. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  318. data/spec/unit/resource/windows_task_spec.rb +1 -1
  319. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  320. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  321. data/spec/unit/resource_spec.rb +84 -1
  322. data/spec/unit/role_spec.rb +23 -21
  323. data/spec/unit/util/backup_spec.rb +1 -1
  324. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  325. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  326. data/spec/unit/util/selinux_spec.rb +2 -1
  327. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  328. data/spec/unit/win32/registry_spec.rb +1 -1
  329. metadata +37 -31
  330. data/lib/chef/resource/cron.rb +0 -157
  331. data/spec/functional/resource/base.rb +0 -28
@@ -202,10 +202,12 @@ If !ERRORLEVEL!==0 (
202
202
  ) else (
203
203
  @echo Installation completed successfully
204
204
  del /f /q "%CHEF_CLIENT_MSI_LOG_PATH%"
205
- )
205
+ )
206
206
 
207
207
  <% end %>
208
208
 
209
+ @rem This line is required to separate the key_create label from the "block boundary"
210
+ @rem Removing these lines will cause the error "The system cannot find the batch label specified - key_create"
209
211
  :key_create
210
212
  @endlocal
211
213
 
@@ -44,7 +44,7 @@ class Chef
44
44
  clients_to_delete = {}
45
45
  validators_to_delete = {}
46
46
  all_clients.each do |name, client|
47
- next unless name =~ matcher
47
+ next unless name&.match?(matcher)
48
48
 
49
49
  if client.validator
50
50
  validators_to_delete[client.name] = client
@@ -75,7 +75,7 @@ class Chef
75
75
  # It's a regex.
76
76
  filter_re = Regexp.new($1, $2 ? Regexp::IGNORECASE : 0)
77
77
  config_data.each do |key, value|
78
- output_data[key] = value if key.to_s =~ filter_re
78
+ output_data[key] = value if key.to_s&.match?(filter_re)
79
79
  end
80
80
  else
81
81
  # It's a dotted path string.
@@ -33,17 +33,27 @@ class Chef
33
33
  end
34
34
 
35
35
  def run
36
+ credentials_data = self.class.config_loader.parse_credentials_file
36
37
  context_file = ChefConfig::PathHelper.home(".chef", "context").freeze
37
38
  profile = @name_args[0]&.strip
38
- if profile && !profile.empty?
39
+ if profile.nil? || profile.empty?
40
+ show_usage
41
+ ui.fatal("You must specify a profile")
42
+ exit 1
43
+ end
44
+
45
+ if credentials_data.nil? || credentials_data.empty?
46
+ ui.fatal("No profiles found, #{self.class.config_loader.credentials_file_path} does not exist or is empty")
47
+ exit 1
48
+ end
49
+
50
+ if credentials_data[profile].nil?
51
+ raise ChefConfig::ConfigurationError, "Profile #{profile} doesn't exist. Please add it to #{self.class.config_loader.credentials_file_path} and if it is profile with DNS name check that you are not missing single quotes around it as per docs https://docs.chef.io/workstation/knife_setup/#knife-profiles."
52
+ else
39
53
  # Ensure the .chef/ folder exists.
40
54
  FileUtils.mkdir_p(File.dirname(context_file))
41
55
  IO.write(context_file, "#{profile}\n")
42
56
  ui.msg("Set default profile to #{profile}")
43
- else
44
- show_usage
45
- ui.fatal("You must specify a profile")
46
- exit 1
47
57
  end
48
58
  end
49
59
 
@@ -89,7 +89,7 @@ class Chef
89
89
  url_and_version["versions"].map { |url_by_version| url_by_version["version"] }
90
90
  end.flatten
91
91
  rescue Net::HTTPClientException => e
92
- if e.to_s =~ /^404/
92
+ if /^404/.match?(e.to_s)
93
93
  ui.error("Cannot find a cookbook named #{@cookbook_name} to delete.")
94
94
  nil
95
95
  else
@@ -23,9 +23,6 @@ require_relative "../knife"
23
23
  class Chef
24
24
  class Knife
25
25
  class CookbookUpload < Knife
26
- CHECKSUM = "checksum".freeze
27
- MATCH_CHECKSUM = /[0-9a-f]{32,}/.freeze
28
-
29
26
  deps do
30
27
  require_relative "../mixin/file_class"
31
28
  include Chef::Mixin::FileClass
@@ -245,7 +242,7 @@ class Chef
245
242
  # manifest object, but the manifest becomes invalid when you
246
243
  # regenerate the metadata
247
244
  broken_files = cookbook.dup.manifest_records_by_path.select do |path, info|
248
- info[CHECKSUM].nil? || info[CHECKSUM] !~ MATCH_CHECKSUM
245
+ !/[0-9a-f]{32,}/.match?(info["checksum"])
249
246
  end
250
247
  unless broken_files.empty?
251
248
  broken_filenames = Array(broken_files).map { |path, info| path }
@@ -28,7 +28,7 @@ class Chef
28
28
  # bootstrap templates. For backwards compatibility, they +must+ set the
29
29
  # following instance variables:
30
30
  # * @config - a hash of knife's config values
31
- # * @run_list - the run list for the node to boostrap
31
+ # * @run_list - the run list for the node to bootstrap
32
32
  #
33
33
  class BootstrapContext
34
34
 
@@ -58,7 +58,7 @@ class Chef
58
58
  exit 1
59
59
  end
60
60
  cmd = git("status --porcelain")
61
- if cmd.stdout =~ DIRTY_REPO
61
+ if DIRTY_REPO.match?(cmd.stdout)
62
62
  ui.error "You have uncommitted changes to your cookbook repo (#{repo_path}):"
63
63
  ui.msg cmd.stdout
64
64
  ui.info "Commit or stash your changes before importing cookbooks"
@@ -44,7 +44,7 @@ class Chef
44
44
  else
45
45
  commands = manifest[KEY]["plugins_by_category"]
46
46
  end
47
- # If any of the specified plugins in the manifest dont have a valid path we will
47
+ # If any of the specified plugins in the manifest don't have a valid path we will
48
48
  # eventually get an error and the user will need to rehash - instead, lets just
49
49
  # print out 1 error here telling them to rehash
50
50
  errors = {}
@@ -94,7 +94,7 @@ class Chef
94
94
  def summarize(data)
95
95
  if data.is_a?(Chef::Node)
96
96
  node = data
97
- # special case clouds with their split horizon whatsis.
97
+ # special case clouds with their split horizon thing.
98
98
  ip = (node[:cloud] && node[:cloud][:public_ipv4_addrs] && node[:cloud][:public_ipv4_addrs].first) || node[:ipaddress]
99
99
 
100
100
  summarized = <<~SUMMARY
@@ -95,7 +95,7 @@ class Chef
95
95
  summarized = ""
96
96
  list.each do |data|
97
97
  node = data
98
- # special case clouds with their split horizon whatsis.
98
+ # special case clouds with their split horizon thing.
99
99
  ip = (node[:cloud] && node[:cloud][:public_ipv4_addrs] && node[:cloud][:public_ipv4_addrs].first) || node[:ipaddress]
100
100
  fqdn = (node[:cloud] && node[:cloud][:public_hostname]) || node[:fqdn]
101
101
  name = node["name"] || node.name
@@ -32,7 +32,7 @@ class Chef
32
32
  # optionally filtering by category
33
33
  # subcommand_files - returns an array of all subcommand files
34
34
  # that could be loaded
35
- # commnad_class_from(args) - returns the subcommand class for the
35
+ # command_class_from(args) - returns the subcommand class for the
36
36
  # user-requested command
37
37
  #
38
38
  class SubcommandLoader
@@ -24,10 +24,10 @@ class Chef
24
24
  class Knife
25
25
  module Core
26
26
  # Instances of BootstrapContext are the context objects (i.e., +self+) for
27
- # bootstrap templates. For backwards compatability, they +must+ set the
27
+ # bootstrap templates. For backwards compatibility, they +must+ set the
28
28
  # following instance variables:
29
29
  # * @config - a hash of knife's config values
30
- # * @run_list - the run list for the node to boostrap
30
+ # * @run_list - the run list for the node to bootstrap
31
31
  #
32
32
  class WindowsBootstrapContext < BootstrapContext
33
33
  attr_accessor :config
@@ -41,6 +41,21 @@ class Chef
41
41
  super(config, run_list, chef_config, secret)
42
42
  end
43
43
 
44
+ # This is a duplicate of ChefConfig::PathHelper.cleanpath, however
45
+ # this presumes Windows so we can avoid changing the method definitions
46
+ # across Chef, ChefConfig, and ChefUtils for the circumstance where
47
+ # the methods are being run for a system other than the one Ruby is
48
+ # executing on.
49
+ #
50
+ # We only need to cleanpath the paths that we are passing to cmd.exe,
51
+ # anything written to a configuration file or passed as an argument
52
+ # will be interpreted by ruby later and do the right thing.
53
+ def cleanpath(path)
54
+ path = Pathname.new(path).cleanpath.to_s
55
+ path = path.gsub(File::SEPARATOR, '\\')
56
+ path
57
+ end
58
+
44
59
  def validation_key
45
60
  if File.exist?(File.expand_path(chef_config[:validation_key]))
46
61
  IO.read(File.expand_path(chef_config[:validation_key]))
@@ -160,7 +175,7 @@ class Chef
160
175
 
161
176
  def start_chef
162
177
  bootstrap_environment_option = bootstrap_environment.nil? ? "" : " -E #{bootstrap_environment}"
163
- start_chef = "SET \"PATH=%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;%SYSTEMROOT%\\System32\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;#{ChefConfig::Config.c_opscode_dir}\\#{ChefConfig::Dist::DIR_SUFFIX}\\bin;#{ChefConfig::Config.c_opscode_dir}\\#{ChefConfig::Dist::DIR_SUFFIX}\\embedded\\bin\;%PATH%\"\n"
178
+ start_chef = "SET \"PATH=%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;%SYSTEMROOT%\\System32\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;#{ChefConfig::Config.c_opscode_dir}\\bin;#{ChefConfig::Config.c_opscode_dir}\\embedded\\bin\;%PATH%\"\n"
164
179
  start_chef << "#{Chef::Dist::CLIENT} -c #{ChefConfig::Config.etc_chef_dir(true)}/client.rb -j #{ChefConfig::Config.etc_chef_dir(true)}/first-boot.json#{bootstrap_environment_option}\n"
165
180
  end
166
181
 
@@ -262,7 +277,7 @@ class Chef
262
277
  end
263
278
 
264
279
  def bootstrap_directory
265
- ChefConfig::Config.etc_chef_dir(true)
280
+ cleanpath(ChefConfig::Config.etc_chef_dir(true))
266
281
  end
267
282
 
268
283
  def local_download_path
@@ -54,7 +54,7 @@ class Chef
54
54
  rest.get("data/#{@data_bag_name}")
55
55
  ui.info("Data bag #{@data_bag_name} already exists")
56
56
  rescue Net::HTTPClientException => e
57
- raise unless e.to_s =~ /^404/
57
+ raise unless /^404/.match?(e.to_s)
58
58
 
59
59
  # if it doesn't exists, try to create it
60
60
  rest.post("data", { "name" => @data_bag_name })
@@ -42,7 +42,7 @@ class Chef
42
42
  option :expiration_date,
43
43
  short: "-e DATE",
44
44
  long: "--expiration-date DATE",
45
- description: "Optionally pass the expiration date for the key in ISO 8601 fomatted string: YYYY-MM-DDTHH:MM:SSZ e.g. 2013-12-24T21:00:00Z. Defaults to infinity if not passed. UTC timezone assumed."
45
+ description: "Optionally pass the expiration date for the key in ISO 8601 formatted string: YYYY-MM-DDTHH:MM:SSZ e.g. 2013-12-24T21:00:00Z. Defaults to infinity if not passed. UTC timezone assumed."
46
46
  end
47
47
  end
48
48
  end
@@ -47,7 +47,7 @@ class Chef
47
47
  option :expiration_date,
48
48
  short: "-e DATE",
49
49
  long: "--expiration-date DATE",
50
- description: "Updates the expiration_date field of your key if passed. Pass in ISO 8601 fomatted string: YYYY-MM-DDTHH:MM:SSZ e.g. 2013-12-24T21:00:00Z or infinity. UTC timezone assumed."
50
+ description: "Updates the expiration_date field of your key if passed. Pass in ISO 8601 formatted string: YYYY-MM-DDTHH:MM:SSZ e.g. 2013-12-24T21:00:00Z or infinity. UTC timezone assumed."
51
51
  end
52
52
  end
53
53
  end
@@ -39,7 +39,7 @@ class Chef
39
39
  matcher = /#{name_args[0]}/
40
40
 
41
41
  all_nodes.each do |name, node|
42
- next unless name =~ matcher
42
+ next unless name&.match?(matcher)
43
43
 
44
44
  nodes_to_delete[name] = node
45
45
  end
@@ -49,7 +49,7 @@ class Chef
49
49
  node.run_list.remove(e)
50
50
  else
51
51
  ui.warn "#{e} is not in the run list"
52
- unless e =~ /^(recipe|role)\[/
52
+ unless /^(recipe|role)\[/.match?(e)
53
53
  ui.warn "(did you forget recipe[] or role[] around it?)"
54
54
  end
55
55
  end
@@ -40,7 +40,7 @@ class Chef
40
40
  matcher = /#{@name_args[0]}/
41
41
  roles_to_delete = {}
42
42
  all_roles.each do |name, role|
43
- next unless name =~ matcher
43
+ next unless name&.match?(matcher)
44
44
 
45
45
  roles_to_delete[role.name] = role
46
46
  end
@@ -59,7 +59,7 @@ class Chef
59
59
 
60
60
  option :prefix_attribute,
61
61
  long: "--prefix-attribute ATTR",
62
- description: "The attribute to use for prefixing the ouput - default depends on the context."
62
+ description: "The attribute to use for prefixing the output - default depends on the context."
63
63
 
64
64
  option :ssh_user,
65
65
  short: "-x USERNAME",
@@ -364,7 +364,7 @@ class Chef
364
364
 
365
365
  ch.on_data do |ichannel, data|
366
366
  print_data(ichannel.connection[:prefix], data)
367
- if data =~ /^knife sudo password: /
367
+ if /^knife sudo password: /.match?(data)
368
368
  print_data(ichannel.connection[:prefix], "\n")
369
369
  ichannel.send_data("#{get_password}\n")
370
370
  end
@@ -132,7 +132,7 @@ class Chef
132
132
  res = Chef::JSONCompat.from_json(http_resp.body)
133
133
  if http_resp.code.to_i != 201
134
134
  if res["error_messages"]
135
- if res["error_messages"][0] =~ /Version already exists/
135
+ if /Version already exists/.match?(res["error_messages"][0])
136
136
  ui.error "The same version of this cookbook already exists on Supermarket."
137
137
  exit(1)
138
138
  else
@@ -48,7 +48,7 @@ class Chef
48
48
  begin
49
49
  rest.delete "#{config[:supermarket_site]}/api/v1/cookbooks/#{@name_args[0]}"
50
50
  rescue Net::HTTPClientException => e
51
- raise e unless e.message =~ /Forbidden/
51
+ raise e unless /Forbidden/.match?(e.message)
52
52
 
53
53
  ui.error "Forbidden: You must be the maintainer of #{@cookbook_name} to unshare it."
54
54
  exit 1
@@ -21,7 +21,7 @@ require "logger"
21
21
  require_relative "monologger"
22
22
  require_relative "exceptions"
23
23
  require "mixlib/log"
24
- require_relative "log/syslog" unless RUBY_PLATFORM =~ /mswin|mingw|windows/
24
+ require_relative "log/syslog" unless RUBY_PLATFORM.match?(/mswin|mingw|windows/)
25
25
  require_relative "log/winevt"
26
26
 
27
27
  class Chef
@@ -53,7 +53,7 @@ class Chef
53
53
  <<~EOH
54
54
  The reregister command only supports server API version 0.
55
55
  The server that received the request supports a min version of #{min_version} and a max version of #{max_version}.
56
- User keys are now managed via the key rotation commmands.
56
+ User keys are now managed via the key rotation commands.
57
57
  Please refer to the documentation on how to manage your keys via the key rotation commands:
58
58
  https://docs.chef.io/ctl_chef_server/#key-rotation
59
59
  EOH
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "digest/sha2" unless defined?(Digest::SHA2)
20
19
  require_relative "../digester"
21
20
 
22
21
  class Chef
@@ -218,7 +218,7 @@ class Chef
218
218
  # Chef 12 backward compatibility
219
219
  ::OpenSSL::PKey::EC.send(:alias_method, :private?, :private_key?)
220
220
 
221
- request.sign(key, ::OpenSSL::Digest::SHA256.new)
221
+ request.sign(key, ::OpenSSL::Digest.new("SHA256"))
222
222
  request
223
223
  end
224
224
 
@@ -289,7 +289,7 @@ class Chef
289
289
  cert.add_extension ef.create_extension("authorityKeyIdentifier",
290
290
  "keyid:always,issuer:always")
291
291
 
292
- cert.sign(key, ::OpenSSL::Digest::SHA256.new)
292
+ cert.sign(key, ::OpenSSL::Digest.new("SHA256"))
293
293
  cert
294
294
  end
295
295
 
@@ -319,7 +319,7 @@ class Chef
319
319
  crl.add_extension ::OpenSSL::X509::Extension.new("crlNumber", ::OpenSSL::ASN1::Integer(1))
320
320
  crl.add_extension ef.create_extension("authorityKeyIdentifier",
321
321
  "keyid:always,issuer:always")
322
- crl.sign(ca_private_key, ::OpenSSL::Digest::SHA256.new)
322
+ crl.sign(ca_private_key, ::OpenSSL::Digest.new("SHA256"))
323
323
  crl
324
324
  end
325
325
 
@@ -398,7 +398,7 @@ class Chef
398
398
  ::OpenSSL::ASN1::Integer(get_next_crl_number(crl)))]
399
399
  crl.add_extension ef.create_extension("authorityKeyIdentifier",
400
400
  "keyid:always,issuer:always")
401
- crl.sign(ca_private_key, ::OpenSSL::Digest::SHA256.new)
401
+ crl.sign(ca_private_key, ::OpenSSL::Digest.new("SHA256"))
402
402
  crl
403
403
  end
404
404
 
@@ -264,7 +264,7 @@ class Chef
264
264
  end
265
265
 
266
266
  result = properties.values.select(&:identity?)
267
- # if there are no other identity properites set, then the name_property becomes the identity, or
267
+ # if there are no other identity properties set, then the name_property becomes the identity, or
268
268
  # failing that we use the actual name.
269
269
  if result.empty?
270
270
  result = name_property ? [ properties[name_property] ] : [ properties[:name] ]
@@ -355,7 +355,7 @@ class Chef
355
355
  #
356
356
  # @param other [Object] the other object (Chef::Resource) which implements the properties API
357
357
  # @param includes [Array<Symbol>] splat-args list of symbols of the properties to copy.
358
- # @param exclude [Array<Symbol>] list of symbosl of the properties to exclude.
358
+ # @param exclude [Array<Symbol>] list of symbols of the properties to exclude.
359
359
  # @return the self object the properties were copied to for method chaining
360
360
  #
361
361
  def copy_properties_from(other, *includes, exclude: [ :name ])
@@ -172,14 +172,14 @@ class Chef
172
172
  end
173
173
  end
174
174
 
175
- if RUBY_PLATFORM =~ /mswin|mingw|windows/
175
+ if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
176
176
  include WindowsSecurableAttributes
177
177
  end
178
178
 
179
179
  # Callback that fires when included; will extend the including class
180
180
  # with WindowsMacros and define #rights and #deny_rights on it.
181
181
  def self.included(including_class)
182
- if RUBY_PLATFORM =~ /mswin|mingw|windows/
182
+ if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
183
183
  including_class.extend(WindowsMacros)
184
184
  # create a default 'rights' attribute
185
185
  including_class.rights_attribute(:rights)
@@ -71,7 +71,7 @@ class Chef
71
71
  default_val = 900
72
72
  return options if options.key?(:timeout)
73
73
 
74
- # FIXME: need to nuke descendents tracker out of Chef::Provider so we can just define that class here without requiring the
74
+ # FIXME: need to nuke descendent tracker out of Chef::Provider so we can just define that class here without requiring the
75
75
  # world, and then just use symbol lookup
76
76
  if obj.class.ancestors.map(&:name).include?("Chef::Provider") && obj.respond_to?(:new_resource) && obj.new_resource.respond_to?(:timeout) && !options.key?(:timeout)
77
77
  options[:timeout] = obj.new_resource.timeout ? obj.new_resource.timeout.to_f : default_val
@@ -184,7 +184,7 @@ class Chef
184
184
  # return the role level override attribute component
185
185
  attr_reader :role_override
186
186
 
187
- # return the enviroment level override attribute component
187
+ # return the environment level override attribute component
188
188
  attr_reader :env_override
189
189
 
190
190
  # return the force override level attribute component
@@ -535,7 +535,7 @@ class Chef
535
535
  e
536
536
  end
537
537
 
538
- # Deep merge all attribute levels using hash-only merging between different precidence
538
+ # Deep merge all attribute levels using hash-only merging between different precedence
539
539
  # levels (so override arrays completely replace arrays set at any default level).
540
540
  #
541
541
  # The path allows for selectively deep-merging a subtree of the node object.
@@ -120,7 +120,7 @@ class Chef
120
120
  # ImmutableMash acts like a Mash (Hash that is indifferent to String or
121
121
  # Symbol keys), with some important exceptions:
122
122
  # * Methods that mutate state are overridden to raise an error instead.
123
- # * Methods that read from the collection are overriden so that they check
123
+ # * Methods that read from the collection are overridden so that they check
124
124
  # if the Chef::Node::Attribute has been modified since an instance of
125
125
  # this class was generated. An error is raised if the object detects that
126
126
  # it is stale.
@@ -328,7 +328,7 @@ class Chef
328
328
  end
329
329
  end
330
330
 
331
- # Do some mimimal validation of the policyfile we fetched from the
331
+ # Do some minimal validation of the policyfile we fetched from the
332
332
  # server. Compatibility mode relies on using data bags to store policy
333
333
  # files; therefore no real validation will be performed server-side and
334
334
  # we need to make additional checks to ensure the data will be formatted