chef 16.3.45-universal-mingw32 → 16.5.77-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 (424) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Rakefile +2 -2
  4. data/bin/knife +1 -1
  5. data/chef-universal-mingw32.gemspec +0 -1
  6. data/chef.gemspec +2 -1
  7. data/distro/templates/powershell/chef/chef.psm1.erb +18 -18
  8. data/ext/win32-eventlog/Rakefile +2 -2
  9. data/ext/win32-eventlog/chef-log.man.erb +4 -4
  10. data/lib/chef/action_collection.rb +4 -0
  11. data/lib/chef/api_client/registration.rb +2 -2
  12. data/lib/chef/application.rb +20 -18
  13. data/lib/chef/application/apply.rb +17 -12
  14. data/lib/chef/application/base.rb +26 -23
  15. data/lib/chef/application/client.rb +10 -4
  16. data/lib/chef/application/exit_code.rb +13 -4
  17. data/lib/chef/application/knife.rb +22 -11
  18. data/lib/chef/application/solo.rb +2 -1
  19. data/lib/chef/application/windows_service.rb +39 -39
  20. data/lib/chef/application/windows_service_manager.rb +6 -6
  21. data/lib/chef/chef_class.rb +0 -1
  22. data/lib/chef/chef_fs/chef_fs_data_store.rb +55 -55
  23. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  24. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  25. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  26. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  27. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +2 -2
  28. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  29. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  30. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  31. data/lib/chef/chef_fs/knife.rb +2 -2
  32. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  33. data/lib/chef/client.rb +21 -22
  34. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  35. data/lib/chef/cookbook/gem_installer.rb +1 -1
  36. data/lib/chef/cookbook/synchronizer.rb +2 -2
  37. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  38. data/lib/chef/cookbook_uploader.rb +1 -1
  39. data/lib/chef/data_collector.rb +6 -5
  40. data/lib/chef/data_collector/config_validation.rb +22 -13
  41. data/lib/chef/data_collector/run_end_message.rb +13 -3
  42. data/lib/chef/data_collector/run_start_message.rb +1 -1
  43. data/lib/chef/deprecated.rb +1 -1
  44. data/lib/chef/deprecation/warnings.rb +2 -2
  45. data/lib/chef/digester.rb +2 -2
  46. data/lib/chef/dsl/chef_vault.rb +1 -1
  47. data/lib/chef/dsl/data_query.rb +2 -2
  48. data/lib/chef/dsl/platform_introspection.rb +9 -9
  49. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  50. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  51. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  52. data/lib/chef/environment.rb +4 -4
  53. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  54. data/lib/chef/exceptions.rb +5 -5
  55. data/lib/chef/file_access_control/windows.rb +5 -1
  56. data/lib/chef/file_content_management/tempfile.rb +10 -10
  57. data/lib/chef/formatters/doc.rb +7 -6
  58. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  59. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  60. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  61. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  62. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  63. data/lib/chef/formatters/indentable_output_stream.rb +2 -2
  64. data/lib/chef/formatters/minimal.rb +5 -4
  65. data/lib/chef/http.rb +6 -3
  66. data/lib/chef/http/auth_credentials.rb +5 -1
  67. data/lib/chef/http/authenticator.rb +1 -1
  68. data/lib/chef/http/basic_client.rb +4 -2
  69. data/lib/chef/http/decompressor.rb +1 -1
  70. data/lib/chef/http/http_request.rb +7 -5
  71. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  72. data/lib/chef/http/ssl_policies.rb +1 -1
  73. data/lib/chef/json_compat.rb +2 -2
  74. data/lib/chef/knife.rb +4 -4
  75. data/lib/chef/knife/bootstrap.rb +18 -16
  76. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  77. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  78. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  79. data/lib/chef/knife/client_create.rb +3 -3
  80. data/lib/chef/knife/config_get.rb +8 -97
  81. data/lib/chef/knife/config_get_profile.rb +9 -9
  82. data/lib/chef/knife/config_list.rb +139 -0
  83. data/lib/chef/knife/config_list_profiles.rb +8 -98
  84. data/lib/chef/knife/config_show.rb +127 -0
  85. data/lib/chef/knife/config_use.rb +61 -0
  86. data/lib/chef/knife/config_use_profile.rb +9 -24
  87. data/lib/chef/knife/configure.rb +4 -2
  88. data/lib/chef/knife/cookbook_download.rb +1 -1
  89. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  90. data/lib/chef/knife/cookbook_upload.rb +23 -23
  91. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  92. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  93. data/lib/chef/knife/core/hashed_command_loader.rb +2 -2
  94. data/lib/chef/knife/core/object_loader.rb +1 -1
  95. data/lib/chef/knife/core/ui.rb +1 -1
  96. data/lib/chef/knife/core/windows_bootstrap_context.rb +42 -34
  97. data/lib/chef/knife/delete.rb +15 -15
  98. data/lib/chef/knife/exec.rb +4 -4
  99. data/lib/chef/knife/node_policy_set.rb +2 -2
  100. data/lib/chef/knife/node_run_list_add.rb +1 -1
  101. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  102. data/lib/chef/knife/node_run_list_set.rb +1 -1
  103. data/lib/chef/knife/node_show.rb +2 -2
  104. data/lib/chef/knife/role_env_run_list_add.rb +1 -1
  105. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  106. data/lib/chef/knife/role_run_list_add.rb +1 -1
  107. data/lib/chef/knife/role_run_list_set.rb +1 -1
  108. data/lib/chef/knife/search.rb +0 -1
  109. data/lib/chef/knife/serve.rb +3 -3
  110. data/lib/chef/knife/ssh.rb +24 -9
  111. data/lib/chef/knife/ssl_check.rb +3 -3
  112. data/lib/chef/knife/status.rb +2 -2
  113. data/lib/chef/knife/tag_create.rb +1 -1
  114. data/lib/chef/knife/tag_delete.rb +1 -1
  115. data/lib/chef/knife/user_create.rb +2 -2
  116. data/lib/chef/knife/xargs.rb +19 -19
  117. data/lib/chef/knife/yaml_convert.rb +1 -1
  118. data/lib/chef/local_mode.rb +2 -2
  119. data/lib/chef/log/syslog.rb +2 -2
  120. data/lib/chef/log/winevt.rb +2 -2
  121. data/lib/chef/mixin/checksum.rb +0 -1
  122. data/lib/chef/mixin/deep_merge.rb +35 -18
  123. data/lib/chef/mixin/openssl_helper.rb +4 -5
  124. data/lib/chef/mixin/shell_out.rb +1 -1
  125. data/lib/chef/mixin/template.rb +3 -3
  126. data/lib/chef/mixin/uris.rb +4 -2
  127. data/lib/chef/mixin/versioned_api.rb +1 -2
  128. data/lib/chef/mixin/which.rb +1 -1
  129. data/lib/chef/monkey_patches/net_http.rb +4 -4
  130. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  131. data/lib/chef/node/attribute.rb +2 -4
  132. data/lib/chef/node_map.rb +4 -4
  133. data/lib/chef/platform/service_helpers.rb +1 -1
  134. data/lib/chef/policy_builder/dynamic.rb +2 -0
  135. data/lib/chef/policy_builder/policyfile.rb +2 -2
  136. data/lib/chef/property.rb +1 -1
  137. data/lib/chef/provider.rb +1 -5
  138. data/lib/chef/provider/cron/unix.rb +0 -2
  139. data/lib/chef/provider/file.rb +2 -2
  140. data/lib/chef/provider/git.rb +5 -5
  141. data/lib/chef/provider/group.rb +0 -2
  142. data/lib/chef/provider/group/suse.rb +5 -5
  143. data/lib/chef/provider/ifconfig.rb +1 -4
  144. data/lib/chef/provider/launchd.rb +2 -2
  145. data/lib/chef/provider/link.rb +0 -9
  146. data/lib/chef/provider/mount.rb +0 -2
  147. data/lib/chef/provider/mount/linux.rb +63 -0
  148. data/lib/chef/provider/package.rb +0 -2
  149. data/lib/chef/provider/package/dpkg.rb +3 -12
  150. data/lib/chef/provider/package/homebrew.rb +1 -1
  151. data/lib/chef/provider/package/rubygems.rb +22 -19
  152. data/lib/chef/provider/package/snap.rb +1 -2
  153. data/lib/chef/provider/package/windows.rb +2 -2
  154. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -10
  155. data/lib/chef/provider/package/zypper.rb +1 -1
  156. data/lib/chef/provider/powershell_script.rb +21 -5
  157. data/lib/chef/provider/remote_file/content.rb +3 -0
  158. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  159. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  160. data/lib/chef/provider/route.rb +2 -6
  161. data/lib/chef/provider/service/arch.rb +1 -1
  162. data/lib/chef/provider/service/debian.rb +1 -1
  163. data/lib/chef/provider/service/gentoo.rb +2 -2
  164. data/lib/chef/provider/service/macosx.rb +4 -4
  165. data/lib/chef/provider/service/openbsd.rb +1 -4
  166. data/lib/chef/provider/service/redhat.rb +3 -3
  167. data/lib/chef/provider/service/upstart.rb +1 -1
  168. data/lib/chef/provider/service/windows.rb +10 -10
  169. data/lib/chef/provider/systemd_unit.rb +0 -2
  170. data/lib/chef/provider/template/content.rb +1 -0
  171. data/lib/chef/provider/template_finder.rb +2 -10
  172. data/lib/chef/provider/user/dscl.rb +7 -7
  173. data/lib/chef/provider/user/mac.rb +12 -12
  174. data/lib/chef/provider/windows_task.rb +1 -5
  175. data/lib/chef/provider/zypper_repository.rb +2 -3
  176. data/lib/chef/provider_resolver.rb +1 -1
  177. data/lib/chef/providers.rb +1 -1
  178. data/lib/chef/recipe.rb +2 -2
  179. data/lib/chef/resource.rb +8 -12
  180. data/lib/chef/resource/apt_repository.rb +5 -12
  181. data/lib/chef/resource/bff_package.rb +22 -0
  182. data/lib/chef/resource/breakpoint.rb +57 -2
  183. data/lib/chef/resource/build_essential.rb +1 -1
  184. data/lib/chef/resource/cab_package.rb +29 -0
  185. data/lib/chef/resource/chef_client_cron.rb +32 -25
  186. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  187. data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
  188. data/lib/chef/resource/chef_client_systemd_timer.rb +26 -19
  189. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  190. data/lib/chef/resource/chef_gem.rb +10 -10
  191. data/lib/chef/resource/chef_handler.rb +149 -4
  192. data/lib/chef/resource/chef_sleep.rb +2 -2
  193. data/lib/chef/resource/chef_vault_secret.rb +14 -14
  194. data/lib/chef/resource/cookbook_file.rb +2 -2
  195. data/lib/chef/resource/cron/_cron_shared.rb +1 -0
  196. data/lib/chef/resource/cron/cron_d.rb +0 -1
  197. data/lib/chef/resource/dnf_package.rb +2 -2
  198. data/lib/chef/resource/dsc_resource.rb +0 -1
  199. data/lib/chef/resource/dsc_script.rb +2 -2
  200. data/lib/chef/resource/execute.rb +8 -9
  201. data/lib/chef/resource/file.rb +4 -4
  202. data/lib/chef/resource/gem_package.rb +5 -5
  203. data/lib/chef/resource/homebrew_package.rb +3 -3
  204. data/lib/chef/resource/homebrew_update.rb +7 -7
  205. data/lib/chef/resource/hostname.rb +2 -2
  206. data/lib/chef/resource/launchd.rb +2 -1
  207. data/lib/chef/resource/locale.rb +2 -2
  208. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  209. data/lib/chef/resource/notify_group.rb +0 -1
  210. data/lib/chef/resource/ohai.rb +46 -3
  211. data/lib/chef/resource/ohai_hint.rb +33 -0
  212. data/lib/chef/resource/openssl_dhparam.rb +29 -5
  213. data/lib/chef/resource/openssl_ec_private_key.rb +8 -3
  214. data/lib/chef/resource/openssl_ec_public_key.rb +4 -2
  215. data/lib/chef/resource/openssl_rsa_private_key.rb +8 -3
  216. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  217. data/lib/chef/resource/openssl_x509_certificate.rb +38 -35
  218. data/lib/chef/resource/openssl_x509_crl.rb +21 -10
  219. data/lib/chef/resource/openssl_x509_request.rb +37 -36
  220. data/lib/chef/resource/osx_profile.rb +292 -6
  221. data/lib/chef/resource/plist.rb +1 -1
  222. data/lib/chef/resource/powershell_package_source.rb +6 -6
  223. data/lib/chef/resource/powershell_script.rb +24 -30
  224. data/lib/chef/resource/reboot.rb +2 -2
  225. data/lib/chef/resource/remote_file.rb +3 -3
  226. data/lib/chef/resource/rhsm_register.rb +22 -10
  227. data/lib/chef/resource/ruby_block.rb +2 -2
  228. data/lib/chef/resource/scm/subversion.rb +2 -2
  229. data/lib/chef/resource/service.rb +3 -3
  230. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  231. data/lib/chef/resource/sudo.rb +1 -1
  232. data/lib/chef/resource/support/cron.d.erb +1 -1
  233. data/lib/chef/resource/support/cron_access.erb +1 -1
  234. data/lib/chef/resource/support/sudoer.erb +1 -1
  235. data/lib/chef/resource/support/ulimit.erb +1 -1
  236. data/lib/chef/resource/sysctl.rb +6 -10
  237. data/lib/chef/resource/systemd_unit.rb +2 -2
  238. data/lib/chef/resource/template.rb +2 -2
  239. data/lib/chef/resource/timezone.rb +112 -73
  240. data/lib/chef/resource/windows_ad_join.rb +12 -3
  241. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  242. data/lib/chef/resource/windows_auto_run.rb +2 -0
  243. data/lib/chef/resource/windows_certificate.rb +8 -4
  244. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  245. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  246. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  247. data/lib/chef/resource/windows_dns_record.rb +10 -7
  248. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  249. data/lib/chef/resource/windows_feature.rb +2 -0
  250. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  251. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  252. data/lib/chef/resource/windows_firewall_profile.rb +24 -20
  253. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  254. data/lib/chef/resource/windows_font.rb +3 -1
  255. data/lib/chef/resource/windows_package.rb +28 -5
  256. data/lib/chef/resource/windows_pagefile.rb +4 -0
  257. data/lib/chef/resource/windows_printer.rb +22 -21
  258. data/lib/chef/resource/windows_printer_port.rb +20 -17
  259. data/lib/chef/resource/windows_security_policy.rb +2 -0
  260. data/lib/chef/resource/windows_share.rb +5 -3
  261. data/lib/chef/resource/windows_shortcut.rb +2 -0
  262. data/lib/chef/resource/windows_uac.rb +2 -0
  263. data/lib/chef/resource/windows_user_privilege.rb +54 -53
  264. data/lib/chef/resource/windows_workgroup.rb +5 -6
  265. data/lib/chef/resource/yum_package.rb +2 -2
  266. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  267. data/lib/chef/resource_reporter.rb +0 -2
  268. data/lib/chef/resources.rb +3 -1
  269. data/lib/chef/role.rb +2 -2
  270. data/lib/chef/run_context.rb +2 -2
  271. data/lib/chef/run_context/cookbook_compiler.rb +21 -21
  272. data/lib/chef/run_lock.rb +2 -2
  273. data/lib/chef/run_status.rb +2 -6
  274. data/lib/chef/search/query.rb +6 -5
  275. data/lib/chef/shell.rb +32 -27
  276. data/lib/chef/shell/ext.rb +11 -11
  277. data/lib/chef/shell/shell_session.rb +2 -2
  278. data/lib/chef/train_transport.rb +5 -104
  279. data/lib/chef/util/backup.rb +2 -2
  280. data/lib/chef/util/diff.rb +14 -14
  281. data/lib/chef/util/powershell/cmdlet.rb +4 -2
  282. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  283. data/lib/chef/util/threaded_job_queue.rb +0 -2
  284. data/lib/chef/version.rb +1 -1
  285. data/lib/chef/win32/crypto.rb +1 -1
  286. data/lib/chef/win32/file.rb +3 -3
  287. data/lib/chef/win32/file/version_info.rb +5 -5
  288. data/lib/chef/win32/registry.rb +1 -2
  289. data/lib/chef/win32/unicode.rb +1 -1
  290. data/spec/data/shef-config.rb +1 -1
  291. data/spec/data/ssl/chef-rspec.cert +15 -15
  292. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  293. data/spec/functional/resource/aix_service_spec.rb +2 -2
  294. data/spec/functional/resource/aixinit_service_spec.rb +8 -8
  295. data/spec/functional/resource/bff_spec.rb +2 -2
  296. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  297. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  298. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  299. data/spec/functional/resource/group_spec.rb +6 -6
  300. data/spec/functional/resource/insserv_spec.rb +5 -5
  301. data/spec/functional/resource/link_spec.rb +20 -20
  302. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  303. data/spec/functional/resource/rpm_spec.rb +2 -2
  304. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  305. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  306. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  307. data/spec/functional/resource/windows_font_spec.rb +49 -0
  308. data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
  309. data/spec/functional/resource/windows_task_spec.rb +13 -13
  310. data/spec/functional/run_lock_spec.rb +24 -24
  311. data/spec/functional/version_spec.rb +3 -3
  312. data/spec/functional/win32/registry_spec.rb +8 -8
  313. data/spec/functional/win32/service_manager_spec.rb +1 -1
  314. data/spec/integration/client/client_spec.rb +4 -4
  315. data/spec/integration/client/exit_code_spec.rb +3 -2
  316. data/spec/integration/client/ipv6_spec.rb +1 -1
  317. data/spec/integration/knife/common_options_spec.rb +12 -12
  318. data/spec/integration/knife/config_list_spec.rb +220 -0
  319. data/spec/integration/knife/config_show_spec.rb +192 -0
  320. data/spec/integration/knife/config_use_spec.rb +198 -0
  321. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  322. data/spec/integration/knife/diff_spec.rb +3 -1
  323. data/spec/integration/knife/download_spec.rb +3 -1
  324. data/spec/integration/knife/serve_spec.rb +5 -5
  325. data/spec/integration/knife/upload_spec.rb +3 -1
  326. data/spec/integration/ohai/ohai_spec.rb +61 -0
  327. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  328. data/spec/integration/recipes/remote_directory.rb +1 -1
  329. data/spec/integration/solo/solo_spec.rb +5 -5
  330. data/spec/spec_helper.rb +12 -11
  331. data/spec/stress/win32/file_spec.rb +1 -1
  332. data/spec/support/chef_helpers.rb +2 -2
  333. data/spec/support/matchers/leak.rb +2 -2
  334. data/spec/support/platform_helpers.rb +17 -35
  335. data/spec/support/platforms/win32/spec_service.rb +1 -1
  336. data/spec/support/shared/functional/directory_resource.rb +1 -1
  337. data/spec/support/shared/functional/execute_resource.rb +1 -1
  338. data/spec/support/shared/functional/file_resource.rb +20 -20
  339. data/spec/support/shared/functional/securable_resource.rb +108 -27
  340. data/spec/support/shared/functional/win32_service.rb +2 -2
  341. data/spec/support/shared/functional/windows_script.rb +3 -3
  342. data/spec/support/shared/integration/integration_helper.rb +22 -52
  343. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  344. data/spec/support/shared/unit/script_resource.rb +6 -20
  345. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  346. data/spec/tiny_server.rb +0 -1
  347. data/spec/unit/application/client_spec.rb +2 -2
  348. data/spec/unit/application/exit_code_spec.rb +10 -0
  349. data/spec/unit/application_spec.rb +4 -6
  350. data/spec/unit/chef_fs/config_spec.rb +1 -1
  351. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  352. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  353. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  354. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  355. data/spec/unit/cookbook_spec.rb +2 -2
  356. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  357. data/spec/unit/data_collector_spec.rb +28 -117
  358. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  359. data/spec/unit/environment_spec.rb +7 -7
  360. data/spec/unit/file_access_control_spec.rb +1 -1
  361. data/spec/unit/knife/bootstrap_spec.rb +20 -20
  362. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  363. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  364. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  365. data/spec/unit/knife/core/ui_spec.rb +1 -0
  366. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  367. data/spec/unit/knife/ssh_spec.rb +2 -2
  368. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  369. data/spec/unit/lwrp_spec.rb +3 -3
  370. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  371. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  372. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  373. data/spec/unit/mixin/securable_spec.rb +2 -2
  374. data/spec/unit/mixin/template_spec.rb +30 -30
  375. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  376. data/spec/unit/node/immutable_collections_spec.rb +8 -4
  377. data/spec/unit/node_spec.rb +5 -5
  378. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  379. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  380. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  381. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  382. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  383. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  384. data/spec/unit/provider/route_spec.rb +0 -2
  385. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  386. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  387. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  388. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  389. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  390. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  391. data/spec/unit/provider_resolver_spec.rb +6 -6
  392. data/spec/unit/recipe_spec.rb +1 -1
  393. data/spec/unit/resource/batch_spec.rb +6 -6
  394. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  395. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  396. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  397. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  398. data/spec/unit/resource/execute_spec.rb +113 -118
  399. data/spec/unit/resource/launchd_spec.rb +8 -0
  400. data/spec/unit/resource/osx_profile_spec.rb +299 -0
  401. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  402. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  403. data/spec/unit/resource/script_spec.rb +6 -1
  404. data/spec/unit/resource/timezone_spec.rb +63 -0
  405. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  406. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  407. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  408. data/spec/unit/role_spec.rb +11 -11
  409. data/spec/unit/run_lock_spec.rb +5 -1
  410. data/spec/unit/runner_spec.rb +1 -2
  411. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  412. data/spec/unit/shell/shell_session_spec.rb +35 -64
  413. data/spec/unit/shell_spec.rb +16 -19
  414. data/spec/unit/train_transport_spec.rb +14 -13
  415. data/spec/unit/util/selinux_spec.rb +2 -0
  416. data/tasks/rspec.rb +1 -3
  417. metadata +42 -33
  418. data/lib/chef/dist.rb +0 -68
  419. data/lib/chef/provider/osx_profile.rb +0 -255
  420. data/spec/integration/knife/config_get_profile_spec.rb +0 -113
  421. data/spec/integration/knife/config_get_spec.rb +0 -191
  422. data/spec/integration/knife/config_list_profiles_spec.rb +0 -218
  423. data/spec/integration/knife/config_use_profile_spec.rb +0 -154
  424. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -0,0 +1,127 @@
1
+ #
2
+ # Author:: Vivek Singh (<vsingh@chef.io>)
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require_relative "../knife"
20
+
21
+ class Chef
22
+ class Knife
23
+ class ConfigShow < Knife
24
+ banner "knife config show [OPTION...] (options)\nDisplays the value of Chef::Config[OPTION] (or all config values)"
25
+
26
+ option :all,
27
+ short: "-a",
28
+ long: "--all",
29
+ description: "Include options that are not set in the configuration.",
30
+ default: false
31
+
32
+ option :raw,
33
+ short: "-r",
34
+ long: "--raw",
35
+ description: "Display a each value with no formatting.",
36
+ default: false
37
+
38
+ def run
39
+ if config[:format] == "summary" && !config[:raw]
40
+ # If using the default, human-readable output, also show which config files are being loaded.
41
+ # Some of this is a bit hacky since it duplicates
42
+ wcl = self.class.config_loader
43
+ if wcl.credentials_found
44
+ loading_from("credentials", ChefConfig::PathHelper.home(".chef", "credentials"))
45
+ end
46
+ if wcl.config_location
47
+ loading_from("configuration", wcl.config_location)
48
+ end
49
+
50
+ if Chef::Config[:config_d_dir]
51
+ wcl.find_dot_d(Chef::Config[:config_d_dir]).each do |path|
52
+ loading_from(".d/ configuration", path)
53
+ end
54
+ end
55
+ end
56
+
57
+ # Dump the whole config, including defaults is --all was given.
58
+ config_data = Chef::Config.save(config[:all])
59
+ # Two special cases, these are set during knife startup but we don't usually care about them.
60
+ unless config[:all]
61
+ config_data.delete(:color)
62
+ # Only keep these if true, false is much less important because it's the default.
63
+ config_data.delete(:local_mode) unless config_data[:local_mode]
64
+ config_data.delete(:enforce_default_paths) unless config_data[:enforce_default_paths]
65
+ config_data.delete(:enforce_path_sanity) unless config_data[:enforce_path_sanity]
66
+ end
67
+
68
+ # Extract the data to show.
69
+ output_data = {}
70
+ if @name_args.empty?
71
+ output_data = config_data
72
+ else
73
+ @name_args.each do |filter|
74
+ if filter =~ %r{^/(.*)/(i?)$}
75
+ # It's a regex.
76
+ filter_re = Regexp.new($1, $2 ? Regexp::IGNORECASE : 0)
77
+ config_data.each do |key, value|
78
+ output_data[key] = value if key.to_s&.match?(filter_re)
79
+ end
80
+ else
81
+ # It's a dotted path string.
82
+ filter_parts = filter.split(/\./)
83
+ extract = lambda do |memo, filter_part|
84
+ memo.is_a?(Hash) ? memo[filter_part.to_sym] : nil
85
+ end
86
+ # Check against both config_data and all of the data, so that even
87
+ # in non-all mode, if you ask for a key that isn't in the non-all
88
+ # data, it will check against the broader set.
89
+ output_data[filter] = filter_parts.inject(config_data, &extract) || filter_parts.inject(Chef::Config.save(true), &extract)
90
+ end
91
+ end
92
+ end
93
+
94
+ # Fix up some values.
95
+ output_data.each do |key, value|
96
+ if value == STDOUT
97
+ output_data[key] = "STDOUT"
98
+ elsif value == STDERR
99
+ output_data[key] = "STDERR"
100
+ end
101
+ end
102
+
103
+ # Show the data.
104
+ if config[:raw]
105
+ output_data.each_value do |value|
106
+ ui.msg(value)
107
+ end
108
+ else
109
+ ui.output(output_data)
110
+ end
111
+ end
112
+
113
+ private
114
+
115
+ # Display a banner about loading from a config file.
116
+ #
117
+ # @api private
118
+ # @param type_of_file [String] Description of the file for the banner.
119
+ # @param path [String] Path of the file.
120
+ # @return [nil]
121
+ def loading_from(type_of_file, path)
122
+ path = Pathname.new(path).realpath
123
+ ui.msg(ui.color("Loading from #{type_of_file} file #{path}", :yellow))
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,61 @@
1
+ #
2
+ # Author:: Vivek Singh (<vsingh@chef.io>)
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require_relative "../knife"
20
+
21
+ class Chef
22
+ class Knife
23
+ class ConfigUse < Knife
24
+ banner "knife config use [PROFILE]"
25
+
26
+ deps do
27
+ require "fileutils" unless defined?(FileUtils)
28
+ end
29
+
30
+ # Disable normal config loading since this shouldn't fail if the profile
31
+ # doesn't exist of the config is otherwise corrupted.
32
+ def configure_chef
33
+ apply_computed_config
34
+ end
35
+
36
+ def run
37
+ profile = @name_args[0]&.strip
38
+ if profile.nil? || profile.empty?
39
+ ui.msg(self.class.config_loader.credentials_profile(config[:profile]))
40
+ else
41
+ credentials_data = self.class.config_loader.parse_credentials_file
42
+ context_file = ChefConfig::PathHelper.home(".chef", "context").freeze
43
+
44
+ if credentials_data.nil? || credentials_data.empty?
45
+ ui.fatal("No profiles found, #{self.class.config_loader.credentials_file_path} does not exist or is empty")
46
+ exit 1
47
+ end
48
+
49
+ if credentials_data[profile].nil?
50
+ 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."
51
+ else
52
+ # Ensure the .chef/ folder exists.
53
+ FileUtils.mkdir_p(File.dirname(context_file))
54
+ IO.write(context_file, "#{profile}\n")
55
+ ui.msg("Set default profile to #{profile}")
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -16,23 +16,21 @@
16
16
  #
17
17
 
18
18
  require_relative "../knife"
19
+ require_relative "./config_use"
19
20
 
20
21
  class Chef
21
22
  class Knife
22
- class ConfigUseProfile < Knife
23
- banner "knife config use-profile PROFILE"
23
+ class ConfigUseProfile < ConfigUse
24
24
 
25
- deps do
26
- require "fileutils" unless defined?(FileUtils)
27
- end
25
+ # Handle the subclassing (knife doesn't do this :()
26
+ dependency_loaders.concat(superclass.dependency_loaders)
28
27
 
29
- # Disable normal config loading since this shouldn't fail if the profile
30
- # doesn't exist of the config is otherwise corrupted.
31
- def configure_chef
32
- apply_computed_config
33
- end
28
+ banner "knife config use-profile PROFILE"
29
+ category "deprecated"
34
30
 
35
31
  def run
32
+ Chef::Log.warn("knife config use-profile has been deprecated in favor of knife config use. This will be removed in the major release version!")
33
+
36
34
  credentials_data = self.class.config_loader.parse_credentials_file
37
35
  context_file = ChefConfig::PathHelper.home(".chef", "context").freeze
38
36
  profile = @name_args[0]&.strip
@@ -42,21 +40,8 @@ class Chef
42
40
  exit 1
43
41
  end
44
42
 
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
53
- # Ensure the .chef/ folder exists.
54
- FileUtils.mkdir_p(File.dirname(context_file))
55
- IO.write(context_file, "#{profile}\n")
56
- ui.msg("Set default profile to #{profile}")
57
- end
43
+ super
58
44
  end
59
-
60
45
  end
61
46
  end
62
47
  end
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "../knife"
20
- require_relative "../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  class Knife
@@ -27,6 +27,8 @@ class Chef
27
27
 
28
28
  deps do
29
29
  require_relative "../util/path_helper"
30
+ require_relative "client_create"
31
+ require_relative "user_create"
30
32
  require "ohai" unless defined?(Ohai::System)
31
33
  Chef::Knife::ClientCreate.load_deps
32
34
  Chef::Knife::UserCreate.load_deps
@@ -117,7 +119,7 @@ class Chef
117
119
  if config[:initial]
118
120
  @new_client_name = config[:node_name] || ask_question("Please enter a name for the new user: ", default: Etc.getlogin)
119
121
  @admin_client_name = config[:admin_client_name] || ask_question("Please enter the existing admin name: ", default: "admin")
120
- @admin_client_key = config[:admin_client_key] || ask_question("Please enter the location of the existing admin's private key: ", default: "#{Chef::Dist::SERVER_CONF_DIR}/admin.pem")
122
+ @admin_client_key = config[:admin_client_key] || ask_question("Please enter the location of the existing admin's private key: ", default: "#{ChefUtils::Dist::Server::CONF_DIR}/admin.pem")
121
123
  @admin_client_key = File.expand_path(@admin_client_key)
122
124
  else
123
125
  @new_client_name = config[:node_name] || ask_question("Please enter an existing username or clientname for the API: ", default: Etc.getlogin)
@@ -73,7 +73,7 @@ class Chef
73
73
  manifest = cookbook.cookbook_manifest
74
74
 
75
75
  basedir = File.join(config[:download_directory], "#{@cookbook_name}-#{cookbook.version}")
76
- if File.exists?(basedir)
76
+ if File.exist?(basedir)
77
77
  if config[:force]
78
78
  Chef::Log.trace("Deleting #{basedir}")
79
79
  FileUtils.rm_rf(basedir)
@@ -62,7 +62,7 @@ class Chef
62
62
  def generate_metadata(cookbook)
63
63
  Array(config[:cookbook_path]).reverse_each do |path|
64
64
  file = File.expand_path(File.join(path, cookbook, "metadata.rb"))
65
- if File.exists?(file)
65
+ if File.exist?(file)
66
66
  generate_metadata_from_file(cookbook, file)
67
67
  else
68
68
  validate_metadata_json(path, cookbook)
@@ -132,20 +132,20 @@ class Chef
132
132
  end
133
133
  else
134
134
  tmp_cl.each do |cookbook_name, cookbook|
135
- begin
136
- upload([cookbook], justify_width)
137
- upload_ok += 1
138
- rescue Exceptions::CookbookNotFoundInRepo => e
139
- upload_failures += 1
140
- ui.error("Could not find cookbook #{cookbook_name} in your cookbook path, skipping it")
141
- Log.debug(e)
142
- upload_failures += 1
143
- rescue Exceptions::CookbookFrozen
144
- ui.warn("Not updating version constraints for #{cookbook_name} in the environment as the cookbook is frozen.")
145
- upload_failures += 1
146
- rescue SystemExit => e
147
- raise exit e.status
148
- end
135
+
136
+ upload([cookbook], justify_width)
137
+ upload_ok += 1
138
+ rescue Exceptions::CookbookNotFoundInRepo => e
139
+ upload_failures += 1
140
+ ui.error("Could not find cookbook #{cookbook_name} in your cookbook path, skipping it")
141
+ Log.debug(e)
142
+ upload_failures += 1
143
+ rescue Exceptions::CookbookFrozen
144
+ ui.warn("Not updating version constraints for #{cookbook_name} in the environment as the cookbook is frozen.")
145
+ upload_failures += 1
146
+ rescue SystemExit => e
147
+ raise exit e.status
148
+
149
149
  end
150
150
 
151
151
  if upload_failures == 0
@@ -172,17 +172,17 @@ class Chef
172
172
  else
173
173
  upload_set = {}
174
174
  @name_args.each do |cookbook_name|
175
- begin
176
- unless upload_set.key?(cookbook_name)
177
- upload_set[cookbook_name] = cookbook_repo[cookbook_name]
178
- if config[:depends]
179
- upload_set[cookbook_name].metadata.dependencies.each_key { |dep| @name_args << dep }
180
- end
175
+
176
+ unless upload_set.key?(cookbook_name)
177
+ upload_set[cookbook_name] = cookbook_repo[cookbook_name]
178
+ if config[:depends]
179
+ upload_set[cookbook_name].metadata.dependencies.each_key { |dep| @name_args << dep }
181
180
  end
182
- rescue Exceptions::CookbookNotFoundInRepo => e
183
- ui.error(e.message)
184
- Log.debug(e)
185
181
  end
182
+ rescue Exceptions::CookbookNotFoundInRepo => e
183
+ ui.error(e.message)
184
+ Log.debug(e)
185
+
186
186
  end
187
187
  upload_set
188
188
  end
@@ -19,7 +19,7 @@
19
19
  require_relative "../../run_list"
20
20
  require_relative "../../util/path_helper"
21
21
  require "pathname" unless defined?(Pathname)
22
- require_relative "../../dist"
22
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
23
23
 
24
24
  class Chef
25
25
  class Knife
@@ -184,7 +184,7 @@ class Chef
184
184
 
185
185
  def start_chef
186
186
  # If the user doesn't have a client path configure, let bash use the PATH for what it was designed for
187
- client_path = chef_config[:chef_client_path] || "#{Chef::Dist::CLIENT}"
187
+ client_path = chef_config[:chef_client_path] || ChefUtils::Dist::Infra::CLIENT
188
188
  s = "#{client_path} -j /etc/chef/first-boot.json"
189
189
  if config[:verbosity] && config[:verbosity] >= 3
190
190
  s << " -l trace"
@@ -87,7 +87,7 @@ class Chef
87
87
  when :json
88
88
  Chef::JSONCompat.to_json_pretty(data)
89
89
  when :yaml
90
- require "yaml"
90
+ require "yaml" unless defined?(YAML)
91
91
  YAML.dump(data)
92
92
  when :pp
93
93
  require "stringio" unless defined?(StringIO)
@@ -53,7 +53,7 @@ class Chef
53
53
  paths = manifest[KEY]["plugins_paths"][command]
54
54
  if paths && paths.is_a?(Array)
55
55
  # It is only an error if all the paths don't exist
56
- if paths.all? { |sc| !File.exists?(sc) }
56
+ if paths.all? { |sc| !File.exist?(sc) }
57
57
  errors[command] = paths
58
58
  end
59
59
  end
@@ -77,7 +77,7 @@ class Chef
77
77
  false
78
78
  else
79
79
  paths.each do |sc|
80
- if File.exists?(sc)
80
+ if File.exist?(sc)
81
81
  Kernel.load sc
82
82
  else
83
83
  return false
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "ffi_yajl" unless defined?(FFI_Yajl)
19
+ autoload :FFI_Yajl, "ffi_yajl"
20
20
  require_relative "../../util/path_helper"
21
21
  require_relative "../../data_bag_item"
22
22
 
@@ -70,7 +70,7 @@ class Chef
70
70
  # pastel.decorate is a lightweight replacement for highline.color
71
71
  def pastel
72
72
  @pastel ||= begin
73
- require "pastel"
73
+ require "pastel" unless defined?(Pastel)
74
74
  Pastel.new
75
75
  end
76
76
  end
@@ -18,7 +18,7 @@
18
18
 
19
19
  require_relative "bootstrap_context"
20
20
  require_relative "../../util/path_helper"
21
- require_relative "../../dist"
21
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
22
22
 
23
23
  class Chef
24
24
  class Knife
@@ -41,20 +41,6 @@ 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.gsub(File::SEPARATOR, '\\')
56
- end
57
-
58
44
  def validation_key
59
45
  if File.exist?(File.expand_path(chef_config[:validation_key]))
60
46
  IO.read(File.expand_path(chef_config[:validation_key]))
@@ -72,12 +58,21 @@ class Chef
72
58
  end
73
59
 
74
60
  def config_content
61
+ # The windows: true / windows: false in the block that follows is more than a bit weird. The way to read this is that we need
62
+ # the e.g. var_chef_dir to be rendered for the windows value ("C:\chef"), but then we are rendering into a file to be read by
63
+ # ruby, so we don't actually care about forward-vs-backslashes and by rendering into unix we avoid having to deal with the
64
+ # double-backwhacking of everything. So we expect to see:
65
+ #
66
+ # file_cache_path "C:/chef"
67
+ #
68
+ # Which is mildly odd, but should be entirely correct as far as ruby cares.
69
+ #
75
70
  client_rb = <<~CONFIG
76
71
  chef_server_url "#{chef_config[:chef_server_url]}"
77
72
  validation_client_name "#{chef_config[:validation_client_name]}"
78
- file_cache_path "#{ChefConfig::Config.var_chef_dir(true)}/cache"
79
- file_backup_path "#{ChefConfig::Config.var_chef_dir(true)}/backup"
80
- cache_options ({:path => "#{ChefConfig::Config.etc_chef_dir(true)}/cache/checksums", :skip_expires => true})
73
+ file_cache_path "#{ChefConfig::PathHelper.escapepath(ChefConfig::Config.var_chef_dir(windows: true))}\\\\cache"
74
+ file_backup_path "#{ChefConfig::PathHelper.escapepath(ChefConfig::Config.var_chef_dir(windows: true))}\\\\backup"
75
+ cache_options ({:path => "#{ChefConfig::PathHelper.escapepath(ChefConfig::Config.etc_chef_dir(windows: true))}\\\\cache\\\\checksums", :skip_expires => true})
81
76
  CONFIG
82
77
 
83
78
  unless chef_config[:chef_license].nil?
@@ -90,8 +85,8 @@ class Chef
90
85
  client_rb << "# Using default node name (fqdn)\n"
91
86
  end
92
87
 
93
- if chef_config[:config_log_level]
94
- client_rb << %Q{log_level :#{chef_config[:config_log_level]}\n}
88
+ if config[:config_log_level]
89
+ client_rb << %Q{log_level :#{config[:config_log_level]}\n}
95
90
  else
96
91
  client_rb << "log_level :auto\n"
97
92
  end
@@ -140,11 +135,11 @@ class Chef
140
135
  end
141
136
 
142
137
  if config[:secret]
143
- client_rb << %Q{encrypted_data_bag_secret "#{ChefConfig::Config.etc_chef_dir(true)}/encrypted_data_bag_secret"\n}
138
+ client_rb << %Q{encrypted_data_bag_secret "#{ChefConfig::Config.etc_chef_dir(windows: true)}/encrypted_data_bag_secret"\n}
144
139
  end
145
140
 
146
141
  unless trusted_certs_script.empty?
147
- client_rb << %Q{trusted_certs_dir "#{ChefConfig::Config.etc_chef_dir(true)}/trusted_certs"\n}
142
+ client_rb << %Q{trusted_certs_dir "#{ChefConfig::Config.etc_chef_dir(windows: true)}/trusted_certs"\n}
148
143
  end
149
144
 
150
145
  if chef_config[:fips]
@@ -173,9 +168,14 @@ class Chef
173
168
  end
174
169
 
175
170
  def start_chef
171
+ c_opscode_dir = ChefConfig::PathHelper.cleanpath(ChefConfig::Config.c_opscode_dir, windows: true)
172
+ client_rb = clean_etc_chef_file("client.rb")
173
+ first_boot = clean_etc_chef_file("first-boot.json")
174
+
176
175
  bootstrap_environment_option = bootstrap_environment.nil? ? "" : " -E #{bootstrap_environment}"
177
- 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"
178
- 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"
176
+
177
+ start_chef = "SET \"PATH=%SYSTEM32%;%SystemRoot%;%SYSTEM32%\\Wbem;%SYSTEM32%\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;#{c_opscode_dir}\\bin;#{c_opscode_dir}\\embedded\\bin\;%PATH%\"\n"
178
+ start_chef << "#{ChefUtils::Dist::Infra::CLIENT} -c #{client_rb} -j #{first_boot}#{bootstrap_environment_option}\n"
179
179
  end
180
180
 
181
181
  def win_wget
@@ -275,12 +275,20 @@ class Chef
275
275
  install_command('"') + "\n" + fallback_install_task_command
276
276
  end
277
277
 
278
+ def clean_etc_chef_file(path)
279
+ ChefConfig::PathHelper.cleanpath(etc_chef_file(path), windows: true)
280
+ end
281
+
282
+ def etc_chef_file(path)
283
+ "#{bootstrap_directory}/#{path}"
284
+ end
285
+
278
286
  def bootstrap_directory
279
- cleanpath(ChefConfig::Config.etc_chef_dir(true))
287
+ ChefConfig::Config.etc_chef_dir(windows: true)
280
288
  end
281
289
 
282
290
  def local_download_path
283
- "%TEMP%\\#{Chef::Dist::CLIENT}-latest.msi"
291
+ "%TEMP%\\#{ChefUtils::Dist::Infra::CLIENT}-latest.msi"
284
292
  end
285
293
 
286
294
  # Build a URL to query www.chef.io that will redirect to the correct
@@ -357,7 +365,7 @@ class Chef
357
365
  <<~EOH
358
366
  @set MSIERRORCODE=!ERRORLEVEL!
359
367
  @if ERRORLEVEL 1 (
360
- @echo WARNING: Failed to install #{Chef::Dist::PRODUCT} MSI package in remote context with status code !MSIERRORCODE!.
368
+ @echo WARNING: Failed to install #{ChefUtils::Dist::Infra::PRODUCT} MSI package in remote context with status code !MSIERRORCODE!.
361
369
  @echo WARNING: This may be due to a defect in operating system update KB2918614: http://support.microsoft.com/kb/2918614
362
370
  @set OLDLOGLOCATION="%CHEF_CLIENT_MSI_LOG_PATH%-fail.log"
363
371
  @move "%CHEF_CLIENT_MSI_LOG_PATH%" "!OLDLOGLOCATION!" > NUL
@@ -366,26 +374,26 @@ class Chef
366
374
  @schtasks /create /f /sc once /st 00:00:00 /tn chefclientbootstraptask /ru SYSTEM /rl HIGHEST /tr \"cmd /c #{command} & sleep 2 & waitfor /s %computername% /si chefclientinstalldone\"
367
375
 
368
376
  @if ERRORLEVEL 1 (
369
- @echo ERROR: Failed to create #{Chef::Dist::PRODUCT} installation scheduled task with status code !ERRORLEVEL! > "&2"
377
+ @echo ERROR: Failed to create #{ChefUtils::Dist::Infra::PRODUCT} installation scheduled task with status code !ERRORLEVEL! > "&2"
370
378
  ) else (
371
- @echo Successfully created scheduled task to install #{Chef::Dist::PRODUCT}.
379
+ @echo Successfully created scheduled task to install #{ChefUtils::Dist::Infra::PRODUCT}.
372
380
  @schtasks /run /tn chefclientbootstraptask
373
381
  @if ERRORLEVEL 1 (
374
- @echo ERROR: Failed to execute #{Chef::Dist::PRODUCT} installation scheduled task with status code !ERRORLEVEL!. > "&2"
382
+ @echo ERROR: Failed to execute #{ChefUtils::Dist::Infra::PRODUCT} installation scheduled task with status code !ERRORLEVEL!. > "&2"
375
383
  ) else (
376
- @echo Successfully started #{Chef::Dist::PRODUCT} installation scheduled task.
384
+ @echo Successfully started #{ChefUtils::Dist::Infra::PRODUCT} installation scheduled task.
377
385
  @echo Waiting for installation to complete -- this may take a few minutes...
378
386
  waitfor chefclientinstalldone /t 600
379
387
  if ERRORLEVEL 1 (
380
- @echo ERROR: Timed out waiting for #{Chef::Dist::PRODUCT} package to install
388
+ @echo ERROR: Timed out waiting for #{ChefUtils::Dist::Infra::PRODUCT} package to install
381
389
  ) else (
382
- @echo Finished waiting for #{Chef::Dist::PRODUCT} package to install.
390
+ @echo Finished waiting for #{ChefUtils::Dist::Infra::PRODUCT} package to install.
383
391
  )
384
392
  @schtasks /delete /f /tn chefclientbootstraptask > NUL
385
393
  )
386
394
  )
387
395
  ) else (
388
- @echo Successfully installed #{Chef::Dist::PRODUCT} package.
396
+ @echo Successfully installed #{ChefUtils::Dist::Infra::PRODUCT} package.
389
397
  )
390
398
  EOH
391
399
  end