chef 16.0.275-universal-mingw32 → 16.2.50-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -102,7 +102,7 @@ class Chef
102
102
  config[:bootstrap_vault_item]
103
103
  end
104
104
 
105
- # Helper to return a ruby object represeting all the data bags and items
105
+ # Helper to return a ruby object representing all the data bags and items
106
106
  # to update via chef-vault.
107
107
  #
108
108
  # @return [Hash] deserialized ruby hash with all the vault items
@@ -86,7 +86,7 @@ class Chef
86
86
  config[:chef_node_name]
87
87
  end
88
88
 
89
- # @return [String] enviroment from the config
89
+ # @return [String] environment from the config
90
90
  def environment
91
91
  config[:environment]
92
92
  end
@@ -185,50 +185,50 @@ if test "x$tmp_dir" != "x"; then
185
185
  rm -r "$tmp_dir"
186
186
  fi
187
187
 
188
- mkdir -p <%= ChefConfig::Config.etc_chef_dir(false) %>
188
+ mkdir -p /etc/chef
189
189
 
190
190
  <% if client_pem -%>
191
- (umask 077 && (cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/client.pem <<'EOP'
191
+ (umask 077 && (cat > /etc/chef/client.pem <<'EOP'
192
192
  <%= ::File.read(::File.expand_path(client_pem)) %>
193
193
  EOP
194
194
  )) || exit 1
195
195
  <% end -%>
196
196
 
197
197
  <% if validation_key -%>
198
- (umask 077 && (cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/validation.pem <<'EOP'
198
+ (umask 077 && (cat > /etc/chef/validation.pem <<'EOP'
199
199
  <%= validation_key %>
200
200
  EOP
201
201
  )) || exit 1
202
202
  <% end -%>
203
203
 
204
204
  <% if encrypted_data_bag_secret -%>
205
- (umask 077 && (cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/encrypted_data_bag_secret <<'EOP'
205
+ (umask 077 && (cat > /etc/chef/encrypted_data_bag_secret <<'EOP'
206
206
  <%= encrypted_data_bag_secret %>
207
207
  EOP
208
208
  )) || exit 1
209
209
  <% end -%>
210
210
 
211
211
  <% unless trusted_certs.empty? -%>
212
- mkdir -p <%= ChefConfig::Config.etc_chef_dir(false) %>/trusted_certs
212
+ mkdir -p /etc/chef/trusted_certs
213
213
  <%= trusted_certs %>
214
214
  <% end -%>
215
215
 
216
216
  <%# Generate Ohai Hints -%>
217
217
  <% unless @config[:hints].nil? || @config[:hints].empty? -%>
218
- mkdir -p <%= ChefConfig::Config.etc_chef_dir(false) %>/ohai/hints
218
+ mkdir -p /etc/chef/ohai/hints
219
219
 
220
220
  <% @config[:hints].each do |name, hash| -%>
221
- cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/ohai/hints/<%= name %>.json <<'EOP'
221
+ cat > /etc/chef/ohai/hints/<%= name %>.json <<'EOP'
222
222
  <%= Chef::JSONCompat.to_json(hash) %>
223
223
  EOP
224
224
  <% end -%>
225
225
  <% end -%>
226
226
 
227
- cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/client.rb <<'EOP'
227
+ cat > /etc/chef/client.rb <<'EOP'
228
228
  <%= config_content %>
229
229
  EOP
230
230
 
231
- cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/first-boot.json <<'EOP'
231
+ cat > /etc/chef/first-boot.json <<'EOP'
232
232
  <%= Chef::JSONCompat.to_json(first_boot) %>
233
233
  EOP
234
234
 
@@ -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
@@ -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,7 +24,7 @@ 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
30
  # * @run_list - the run list for the node to boostrap
@@ -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
@@ -20,14 +20,14 @@ require_relative "../knife"
20
20
 
21
21
  class Chef
22
22
  class Knife
23
- class UserInviteRecind < Chef::Knife
23
+ class UserInviteRescind < Chef::Knife
24
24
  category "user"
25
- banner "knife user invite recind [USERNAMES] (options)"
25
+ banner "knife user invite rescind [USERNAMES] (options)"
26
26
 
27
27
  option :all,
28
28
  short: "-a",
29
29
  long: "--all",
30
- description: "Recind all invites!"
30
+ description: "Rescind all invites!"
31
31
 
32
32
  def run
33
33
  if (name_args.length < 1) && ! config.key?(:all)
@@ -36,18 +36,18 @@ class Chef
36
36
  exit 1
37
37
  end
38
38
 
39
- # To recind we need to send a DELETE to association_requests/INVITE_ID
39
+ # To rescind we need to send a DELETE to association_requests/INVITE_ID
40
40
  # For user friendliness we look up the invite ID based on username.
41
41
  @invites = {}
42
42
  usernames = name_args
43
43
  rest.get_rest("association_requests").each { |i| @invites[i["username"]] = i["id"] }
44
44
  if config[:all]
45
- ui.confirm("Are you sure you want to recind all association requests")
45
+ ui.confirm("Are you sure you want to rescind all association requests")
46
46
  @invites.each do |u, i|
47
47
  rest.delete_rest("association_requests/#{i}")
48
48
  end
49
49
  else
50
- ui.confirm("Are you sure you want to recind the association requests for: #{usernames.join(", ")}")
50
+ ui.confirm("Are you sure you want to rescind the association requests for: #{usernames.join(", ")}")
51
51
  usernames.each do |u|
52
52
  if @invites.key?(u)
53
53
  rest.delete_rest("association_requests/#{@invites[u]}")
@@ -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
@@ -53,14 +53,14 @@ class Chef
53
53
  private
54
54
 
55
55
  def create_dir(path)
56
- # When doing multithreaded downloads into the file cache, the following
57
- # interleaving raises an error here:
58
- #
59
- # thread1 thread2
60
- # File.directory?(create_path) <- false
61
- # File.directory?(create_path) <- false
62
- # Dir.mkdir(create_path)
63
- # Dir.mkdir(create_path) <- raises Errno::EEXIST
56
+ # When doing multithreaded downloads into the file cache, the following
57
+ # interleaving raises an error here:
58
+ #
59
+ # thread1 thread2
60
+ # File.directory?(create_path) <- false
61
+ # File.directory?(create_path) <- false
62
+ # Dir.mkdir(create_path)
63
+ # Dir.mkdir(create_path) <- raises Errno::EEXIST
64
64
  Chef::Log.trace("Creating directory #{path}")
65
65
  Dir.mkdir(path)
66
66
  rescue Errno::EEXIST
@@ -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