chef 16.3.45-universal-mingw32 → 16.5.77-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db6729febd434b9728dea685c0d05d36143e1ee0ccd03e9142cf03ce08ea9eef
4
- data.tar.gz: 81380fee7ddf96c867e00acb9d83703fd9f9200561bd816eeaae56a0c2a72770
3
+ metadata.gz: be66626e9a30881035691daab78994376a8b61f654e3eb3ca07157a35ec4aec4
4
+ data.tar.gz: bc3bf6bb5d75a908c6c8a805c2da1a732c42393a4d35570c6bfdca69845e566e
5
5
  SHA512:
6
- metadata.gz: 7ab132c6f2ecb0d419170246976dedbdffba7679acc50ce4b9eeaf25313cd576b64bacaa6bbd324a73fa035dbd83e066d575d3d5d351f11a82b5a479a20fc148
7
- data.tar.gz: 89f5a714181003a970cf70a114534075cd8fcbb8e96636ec62313d09ccba16d1790d81a798ebd725278a88b9768e7fb1507738e663404d6573de48eda03c6c4f
6
+ metadata.gz: daf306b22d36bb452ae8ad642b3203cea5f1b60b5327a3c5b723e93c36256a18db1c02e8a9b29c119d64d00bbe5b04e28e8880f5af568f3a6cf5d0eda2469610
7
+ data.tar.gz: bb1093f29e376799b9f16b79e60b4ae03005ace97a9559d7820cdb40a97f21deffd2f1469b77721c3873a72df6561adcbedc79ce52f5b8c8500d30e05eca00a5
data/Gemfile CHANGED
@@ -87,7 +87,7 @@ eval_gemfile("./Gemfile.local") if File.exist?("./Gemfile.local")
87
87
  if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
88
88
  instance_eval do
89
89
  ruby_exe_dir = RbConfig::CONFIG["bindir"]
90
- assemblies = Dir.glob(File.expand_path("distro/ruby_bin_folder", Dir.pwd) + "/*.dll")
90
+ assemblies = Dir.glob(File.expand_path("distro/ruby_bin_folder", __dir__) + "/*.dll")
91
91
  FileUtils.cp_r assemblies, ruby_exe_dir, verbose: false unless ENV["_BUNDLER_WINDOWS_DLLS_COPIED"]
92
92
  ENV["_BUNDLER_WINDOWS_DLLS_COPIED"] = "1"
93
93
  end
data/Rakefile CHANGED
@@ -26,7 +26,7 @@ begin
26
26
  require_relative "tasks/announce"
27
27
  require_relative "tasks/docs"
28
28
  require_relative "tasks/spellcheck"
29
- require_relative "lib/chef/dist"
29
+ require_relative "chef-utils/lib/chef-utils/dist" unless defined?(ChefUtils::Dist)
30
30
  rescue LoadError => e
31
31
  puts "Skipping missing rake dep: #{e}"
32
32
  end
@@ -108,4 +108,4 @@ begin
108
108
  end
109
109
  rescue LoadError
110
110
  puts "yard is not available. bundle install first to make sure all dependencies are installed."
111
- end
111
+ end
data/bin/knife CHANGED
@@ -18,7 +18,7 @@
18
18
  # See the License for the specific language governing permissions and
19
19
  # limitations under the License.
20
20
 
21
- $:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "..", "lib")))
21
+ $:.unshift(File.expand_path(File.join(__dir__, "..", "lib")))
22
22
  require "chef/application/knife"
23
23
 
24
24
  Chef::Application::Knife.new.run
@@ -3,7 +3,6 @@ gemspec = eval(IO.read(File.expand_path("chef.gemspec", __dir__)))
3
3
  gemspec.platform = Gem::Platform.new(%w{universal mingw32})
4
4
 
5
5
  gemspec.add_dependency "win32-api", "~> 1.5.3"
6
- gemspec.add_dependency "win32-dir", "~> 0.5.0"
7
6
  gemspec.add_dependency "win32-event", "~> 0.6.1"
8
7
  # TODO: Relax this pin and make the necessary updaets. The issue originally
9
8
  # leading to this pin has been fixed in 0.6.5.
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_dependency "train-core", "~> 3.2", ">= 3.2.28" # 3.2.28 fixes sudo prompts. See https://github.com/chef/chef/pull/9635
21
21
  s.add_dependency "train-winrm", ">= 0.2.5"
22
22
 
23
- s.add_dependency "license-acceptance", "~> 1.0", ">= 1.0.5"
23
+ s.add_dependency "license-acceptance", ">= 1.0.5", "< 3"
24
24
  s.add_dependency "mixlib-cli", ">= 2.1.1", "< 3.0"
25
25
  s.add_dependency "mixlib-log", ">= 2.0.3", "< 4.0"
26
26
  s.add_dependency "mixlib-authentication", ">= 2.1", "< 4"
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
38
38
  s.add_dependency "highline", ">= 1.6.9", "< 3"
39
39
  s.add_dependency "tty-prompt", "~> 0.21" # knife ui.ask prompt
40
40
  s.add_dependency "tty-screen", "~> 0.6" # knife list
41
+ s.add_dependency "tty-table", "~> 0.11" # knife render table output.
41
42
  s.add_dependency "pastel" # knife ui.color
42
43
  s.add_dependency "erubis", "~> 2.7"
43
44
  s.add_dependency "diff-lcs", ">= 1.2.4", "< 1.4.0" # 1.4 breaks output
@@ -412,40 +412,40 @@ function Run-RubyCommand($command, $argList) {
412
412
  }
413
413
 
414
414
 
415
- function <%= Chef::Dist::APPLY %> {
416
- Run-RubyCommand '<%= Chef::Dist::APPLY %>' $args
415
+ function <%= ChefUtils::Dist::Apply::EXEC %> {
416
+ Run-RubyCommand '<%= ChefUtils::Dist::Apply::EXEC %>' $args
417
417
  }
418
418
 
419
- function <%= Chef::Dist::CLIENT %> {
420
- Run-RubyCommand '<%= Chef::Dist::CLIENT %>' $args
419
+ function <%= ChefUtils::Dist::Infra::CLIENT %> {
420
+ Run-RubyCommand '<%= ChefUtils::Dist::Infra::CLIENT %>' $args
421
421
  }
422
422
 
423
- function <%= Chef::Dist::EXEC %>-service-manager {
424
- Run-RubyCommand '<%= Chef::Dist::EXEC %>-service-manager' $args
423
+ function <%= ChefUtils::Dist::Infra::EXEC %>-service-manager {
424
+ Run-RubyCommand '<%= ChefUtils::Dist::Infra::EXEC %>-service-manager' $args
425
425
  }
426
426
 
427
- function <%= Chef::Dist::SHELL %> {
428
- Run-RubyCommand '<%= Chef::Dist::SHELL %>' $args
427
+ function <%= ChefUtils::Dist::Infra::SHELL %> {
428
+ Run-RubyCommand '<%= ChefUtils::Dist::Infra::SHELL %>' $args
429
429
  }
430
430
 
431
- function <%= Chef::Dist::SOLOEXEC %> {
432
- Run-RubyCommand '<%= Chef::Dist::SOLOEXEC %>' $args
431
+ function <%= ChefUtils::Dist::Solo::EXEC %> {
432
+ Run-RubyCommand '<%= ChefUtils::Dist::Solo::EXEC %>' $args
433
433
  }
434
434
 
435
- function <%= Chef::Dist::EXEC %>-windows-service {
436
- Run-RubyCommand '<%= Chef::Dist::EXEC %>-windows-service' $args
435
+ function <%= ChefUtils::Dist::Infra::EXEC %>-windows-service {
436
+ Run-RubyCommand '<%= ChefUtils::Dist::Infra::EXEC %>-windows-service' $args
437
437
  }
438
438
 
439
439
  function knife {
440
440
  Run-RubyCommand 'knife' $args
441
441
  }
442
442
 
443
- Export-ModuleMember -function <%= Chef::Dist::APPLY %>
444
- Export-ModuleMember -function <%= Chef::Dist::CLIENT %>
445
- Export-ModuleMember -function <%= Chef::Dist::EXEC %>-service-manager
446
- Export-ModuleMember -function <%= Chef::Dist::SHELL %>
447
- Export-ModuleMember -function <%= Chef::Dist::SOLOEXEC %>
448
- Export-ModuleMember -function <%= Chef::Dist::EXEC %>-windows-service
443
+ Export-ModuleMember -function <%= ChefUtils::Dist::Apply::EXEC %>
444
+ Export-ModuleMember -function <%= ChefUtils::Dist::Infra::CLIENT %>
445
+ Export-ModuleMember -function <%= ChefUtils::Dist::Infra::EXEC %>-service-manager
446
+ Export-ModuleMember -function <%= ChefUtils::Dist::Infra::SHELL %>
447
+ Export-ModuleMember -function <%= ChefUtils::Dist::Solo::EXEC %>
448
+ Export-ModuleMember -function <%= ChefUtils::Dist::Infra::EXEC %>-windows-service
449
449
  Export-ModuleMember -function knife
450
450
 
451
451
  # To debug this module, uncomment the line below
@@ -2,7 +2,7 @@ require "rubygems"
2
2
  require "rake"
3
3
  require "mkmf"
4
4
  require "erb"
5
- require_relative "../../lib/chef/dist"
5
+ require "chef-utils/dist"
6
6
 
7
7
  desc "Building event log dll"
8
8
 
@@ -51,7 +51,7 @@ task register: EVT_SHARED_OBJECT do
51
51
  begin
52
52
  Win32::EventLog.add_event_source(
53
53
  source: "Application",
54
- key_name: Chef::Dist::SHORT,
54
+ key_name: ChefUtils::Dist::Infra::SHORT,
55
55
  event_message_file: dll_file,
56
56
  category_message_file: dll_file
57
57
  )
@@ -1,25 +1,25 @@
1
1
  MessageId=10000
2
2
  SymbolicName=RUN_START
3
3
  Language=English
4
- Starting <%= Chef::Dist::PRODUCT %> run v%1
4
+ Starting <%= ChefUtils::Dist::Infra::PRODUCT %> run v%1
5
5
  .
6
6
 
7
7
  MessageId=10001
8
8
  SymbolicName=RUN_STARTED
9
9
  Language=English
10
- Started <%= Chef::Dist::PRODUCT %> run %1
10
+ Started <%= ChefUtils::Dist::Infra::PRODUCT %> run %1
11
11
  .
12
12
 
13
13
  MessageId=10002
14
14
  SymbolicName=RUN_COMPLETED
15
15
  Language=English
16
- Completed <%= Chef::Dist::PRODUCT %> run %1 in %2 seconds
16
+ Completed <%= ChefUtils::Dist::Infra::PRODUCT %> run %1 in %2 seconds
17
17
  .
18
18
 
19
19
  MessageId=10003
20
20
  SymbolicName=RUN_FAILED
21
21
  Language=English
22
- Failed <%= Chef::Dist::PRODUCT %> run %1 in %2 seconds.%n
22
+ Failed <%= ChefUtils::Dist::Infra::PRODUCT %> run %1 in %2 seconds.%n
23
23
  Exception type: %3%n
24
24
  Exception message: %4%n
25
25
  Exception backtrace: %5%n
@@ -44,6 +44,9 @@ class Chef
44
44
  # @return [Exception] The exception that was thrown
45
45
  attr_accessor :exception
46
46
 
47
+ # @return [Hash] JSON-formatted error description from the Chef::Formatters::ErrorMapper
48
+ attr_accessor :error_description
49
+
47
50
  # @return [Numeric] The elapsed time in seconds with machine precision
48
51
  attr_accessor :elapsed_time
49
52
 
@@ -223,6 +226,7 @@ class Chef
223
226
 
224
227
  current_record.status = :failed
225
228
  current_record.exception = exception
229
+ current_record.error_description = Formatters::ErrorMapper.resource_failed(new_resource, action, exception).for_json
226
230
  end
227
231
 
228
232
  # Hook called after an action is completed. This is always called, even if the action fails.
@@ -72,14 +72,14 @@ class Chef
72
72
 
73
73
  def assert_destination_writable!
74
74
  abs_path = File.expand_path(destination)
75
- unless File.exists?(File.dirname(abs_path))
75
+ unless File.exist?(File.dirname(abs_path))
76
76
  begin
77
77
  FileUtils.mkdir_p(File.dirname(abs_path))
78
78
  rescue Errno::EACCES
79
79
  raise Chef::Exceptions::CannotWritePrivateKey, "I can't create the configuration directory at #{File.dirname(abs_path)} - check permissions?"
80
80
  end
81
81
  end
82
- if (File.exists?(abs_path) && !File.writable?(abs_path)) || !File.writable?(File.dirname(abs_path))
82
+ if (File.exist?(abs_path) && !File.writable?(abs_path)) || !File.writable?(File.dirname(abs_path))
83
83
  raise Chef::Exceptions::CannotWritePrivateKey, "I can't write your private key to #{abs_path} - check permissions?"
84
84
  end
85
85
  end
@@ -25,10 +25,12 @@ require_relative "log"
25
25
  require_relative "platform"
26
26
  require "mixlib/cli" unless defined?(Mixlib::CLI)
27
27
  require "tmpdir" unless defined?(Dir.mktmpdir)
28
- require "rbconfig"
28
+ require "rbconfig" unless defined?(RbConfig)
29
29
  require_relative "application/exit_code"
30
- require_relative "dist"
31
- require "license_acceptance/acceptor"
30
+ require "chef-utils" unless defined?(ChefUtils::CANARY)
31
+ module LicenseAcceptance
32
+ autoload :Acceptor, "license_acceptance/acceptor"
33
+ end
32
34
 
33
35
  class Chef
34
36
  class Application
@@ -39,9 +41,6 @@ class Chef
39
41
 
40
42
  @chef_client = nil
41
43
  @chef_client_json = nil
42
-
43
- # Always switch to a readable directory. Keeps subsequent Dir.chdir() {}
44
- # from failing due to permissions when launched as a less privileged user.
45
44
  end
46
45
 
47
46
  # Configure mixlib-cli to always separate defaults from user-supplied CLI options
@@ -96,7 +95,11 @@ class Chef
96
95
  # Parse configuration (options and config file)
97
96
  def configure_chef
98
97
  parse_options
99
- load_config_file
98
+ begin
99
+ load_config_file
100
+ rescue Exception => e
101
+ Chef::Application.fatal!(e.message, Chef::Exceptions::ConfigurationError.new)
102
+ end
100
103
  chef_config.export_proxies
101
104
  chef_config.init_openssl
102
105
  File.umask chef_config[:umask]
@@ -151,8 +154,6 @@ class Chef
151
154
 
152
155
  def apply_extra_config_options(extra_config_options)
153
156
  chef_config.apply_extra_config_options(extra_config_options)
154
- rescue ChefConfig::UnparsableConfigOption => e
155
- Chef::Application.fatal!(e.message)
156
157
  end
157
158
 
158
159
  # Set the specific recipes to Chef::Config if the recipes are valid
@@ -171,7 +172,7 @@ class Chef
171
172
  def configure_logging
172
173
  configure_log_location
173
174
  logger.init(MonoLogger.new(chef_config[:log_location][0]))
174
- chef_config[:log_location][1..-1].each do |log_location|
175
+ chef_config[:log_location][1..].each do |log_location|
175
176
  logger.loggers << MonoLogger.new(log_location)
176
177
  end
177
178
  logger.level = resolve_log_level
@@ -306,7 +307,7 @@ class Chef
306
307
  end
307
308
 
308
309
  def fork_chef_client
309
- logger.info "Forking #{Chef::Dist::PRODUCT} instance to converge..."
310
+ logger.info "Forking #{ChefUtils::Dist::Infra::PRODUCT} instance to converge..."
310
311
  pid = fork do
311
312
  # Want to allow forked processes to finish converging when
312
313
  # TERM singal is received (exit gracefully)
@@ -315,7 +316,7 @@ class Chef
315
316
  " finishing converge to exit normally (send SIGINT to terminate immediately)")
316
317
  end
317
318
 
318
- client_solo = chef_config[:solo] ? "#{Chef::Dist::SOLOEXEC}" : "#{Chef::Dist::CLIENT}"
319
+ client_solo = chef_config[:solo] ? ChefUtils::Dist::Solo::EXEC : ChefUtils::Dist::Infra::CLIENT
319
320
  $0 = "#{client_solo} worker: ppid=#{Process.ppid};start=#{Time.new.strftime("%R:%S")};"
320
321
  begin
321
322
  logger.trace "Forked instance now converging"
@@ -327,7 +328,7 @@ class Chef
327
328
  exit 0
328
329
  end
329
330
  end
330
- logger.trace "Fork successful. Waiting for new #{Chef::Dist::CLIENT} pid: #{pid}"
331
+ logger.trace "Fork successful. Waiting for new #{ChefUtils::Dist::Infra::CLIENT} pid: #{pid}"
331
332
  result = Process.waitpid2(pid)
332
333
  handle_child_exit(result)
333
334
  logger.trace "Forked instance successfully reaped (pid: #{pid})"
@@ -339,9 +340,9 @@ class Chef
339
340
  return true if status.success?
340
341
 
341
342
  message = if status.signaled?
342
- "#{Chef::Dist::PRODUCT} run process terminated by signal #{status.termsig} (#{Signal.list.invert[status.termsig]})"
343
+ "#{ChefUtils::Dist::Infra::PRODUCT} run process terminated by signal #{status.termsig} (#{Signal.list.invert[status.termsig]})"
343
344
  else
344
- "#{Chef::Dist::PRODUCT} run process exited unsuccessfully (exit code #{status.exitstatus})"
345
+ "#{ChefUtils::Dist::Infra::PRODUCT} run process exited unsuccessfully (exit code #{status.exitstatus})"
345
346
  end
346
347
  raise Exceptions::ChildConvergeError, message
347
348
  end
@@ -352,7 +353,8 @@ class Chef
352
353
  logger.fatal("Configuration error #{error.class}: #{error.message}")
353
354
  filtered_trace = error.backtrace.grep(/#{Regexp.escape(config_file_path)}/)
354
355
  filtered_trace.each { |line| logger.fatal(" " + line ) }
355
- Chef::Application.fatal!("Aborting due to error in '#{config_file_path}'", error)
356
+ raise Chef::Exceptions::ConfigurationError.new("Aborting due to error in '#{config_file_path}': #{error}")
357
+ # Chef::Application.fatal!("Aborting due to error in '#{config_file_path}'", Chef::Exceptions::ConfigurationError.new(error))
356
358
  end
357
359
 
358
360
  # This is a hook for testing
@@ -373,8 +375,8 @@ class Chef
373
375
  chef_stacktrace_out = "Generated at #{Time.now}\n"
374
376
  chef_stacktrace_out += message
375
377
 
376
- Chef::FileCache.store("#{Chef::Dist::SHORT}-stacktrace.out", chef_stacktrace_out)
377
- logger.fatal("Stacktrace dumped to #{Chef::FileCache.load("#{Chef::Dist::SHORT}-stacktrace.out", false)}")
378
+ Chef::FileCache.store("#{ChefUtils::Dist::Infra::SHORT}-stacktrace.out", chef_stacktrace_out)
379
+ logger.fatal("Stacktrace dumped to #{Chef::FileCache.load("#{ChefUtils::Dist::Infra::SHORT}-stacktrace.out", false)}")
378
380
  logger.fatal("Please provide the contents of the stacktrace.out file if you file a bug report")
379
381
  if Chef::Config[:always_dump_stacktrace]
380
382
  logger.fatal(message)
@@ -27,13 +27,13 @@ require "fileutils" unless defined?(FileUtils)
27
27
  require "tempfile" unless defined?(Tempfile)
28
28
  require_relative "../providers"
29
29
  require_relative "../resources"
30
- require_relative "../dist"
30
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
31
31
  require "license_acceptance/cli_flags/mixlib_cli"
32
32
 
33
33
  class Chef::Application::Apply < Chef::Application
34
34
  include LicenseAcceptance::CLIFlags::MixlibCLI
35
35
 
36
- banner "Usage: #{Chef::Dist::APPLY} [RECIPE_FILE | -e RECIPE_TEXT | -s] [OPTIONS]"
36
+ banner "Usage: #{ChefUtils::Dist::Apply::EXEC} [RECIPE_FILE | -e RECIPE_TEXT | -s] [OPTIONS]"
37
37
 
38
38
  option :execute,
39
39
  short: "-e RECIPE_TEXT",
@@ -77,6 +77,11 @@ class Chef::Application::Apply < Chef::Application
77
77
  description: "Set the log level (trace, debug, info, warn, error, fatal).",
78
78
  proc: lambda { |l| l.to_sym }
79
79
 
80
+ option :log_location_cli,
81
+ short: "-L LOGLOCATION",
82
+ long: "--logfile LOGLOCATION",
83
+ description: "Set the log file location, defaults to STDOUT - recommended for daemonizing."
84
+
80
85
  option :always_dump_stacktrace,
81
86
  long: "--[no-]always-dump-stacktrace",
82
87
  boolean: true,
@@ -95,9 +100,9 @@ class Chef::Application::Apply < Chef::Application
95
100
  option :version,
96
101
  short: "-v",
97
102
  long: "--version",
98
- description: "Show #{Chef::Dist::PRODUCT} version.",
103
+ description: "Show #{ChefUtils::Dist::Infra::PRODUCT} version.",
99
104
  boolean: true,
100
- proc: lambda { |v| puts "#{Chef::Dist::PRODUCT}: #{::Chef::VERSION}" },
105
+ proc: lambda { |v| puts "#{ChefUtils::Dist::Infra::PRODUCT}: #{::Chef::VERSION}" },
101
106
  exit: 0
102
107
 
103
108
  option :why_run,
@@ -114,7 +119,7 @@ class Chef::Application::Apply < Chef::Application
114
119
 
115
120
  option :profile_ruby,
116
121
  long: "--[no-]profile-ruby",
117
- description: "Dump complete Ruby call graph stack of entire #{Chef::Dist::PRODUCT} run (expert only).",
122
+ description: "Dump complete Ruby call graph stack of entire #{ChefUtils::Dist::Infra::PRODUCT} run (expert only).",
118
123
  boolean: true,
119
124
  default: false
120
125
 
@@ -126,7 +131,7 @@ class Chef::Application::Apply < Chef::Application
126
131
 
127
132
  option :minimal_ohai,
128
133
  long: "--minimal-ohai",
129
- description: "Only run the bare minimum Ohai plugins #{Chef::Dist::PRODUCT} needs to function.",
134
+ description: "Only run the bare minimum Ohai plugins #{ChefUtils::Dist::Infra::PRODUCT} needs to function.",
130
135
  boolean: true
131
136
 
132
137
  attr_reader :json_attribs
@@ -176,7 +181,7 @@ class Chef::Application::Apply < Chef::Application
176
181
  else
177
182
  Chef::RunContext.new(@chef_client.node, {}, @chef_client.events)
178
183
  end
179
- recipe = Chef::Recipe.new("(#{Chef::Dist::APPLY} cookbook)", "(#{Chef::Dist::APPLY} recipe)", run_context)
184
+ recipe = Chef::Recipe.new("(#{ChefUtils::Dist::Apply::EXEC} cookbook)", "(#{ChefUtils::Dist::Apply::EXEC} recipe)", run_context)
180
185
  [recipe, run_context]
181
186
  end
182
187
 
@@ -213,11 +218,11 @@ class Chef::Application::Apply < Chef::Application
213
218
  end
214
219
  runner = Chef::Runner.new(run_context)
215
220
  catch(:end_client_run_early) do
216
- begin
217
- runner.converge
218
- ensure
219
- @recipe_fh.close
220
- end
221
+
222
+ runner.converge
223
+ ensure
224
+ @recipe_fh.close
225
+
221
226
  end
222
227
  Chef::Platform::Rebooter.reboot_if_needed!(runner)
223
228
  end
@@ -20,11 +20,13 @@ require_relative "../log"
20
20
  require_relative "../config"
21
21
  require_relative "../mixin/shell_out"
22
22
  require_relative "../config_fetcher"
23
- require_relative "../dist"
23
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
24
24
  require_relative "../daemon"
25
25
  require "chef-config/mixin/dot_d"
26
26
  require "license_acceptance/cli_flags/mixlib_cli"
27
- require "mixlib/archive" unless defined?(Mixlib::Archive)
27
+ module Mixlib
28
+ autoload :Archive, "mixlib/archive"
29
+ end
28
30
 
29
31
  # This is a temporary class being used as a part of an effort to reduce duplication
30
32
  # between Chef::Application::Client and Chef::Application::Solo.
@@ -55,7 +57,7 @@ class Chef::Application::Base < Chef::Application
55
57
 
56
58
  option :once,
57
59
  long: "--once",
58
- description: "Cancel any interval or splay options, run #{Chef::Dist::PRODUCT} once and exit.",
60
+ description: "Cancel any interval or splay options, run #{ChefUtils::Dist::Infra::PRODUCT} once and exit.",
59
61
  boolean: true
60
62
 
61
63
  option :formatter,
@@ -78,7 +80,7 @@ class Chef::Application::Base < Chef::Application
78
80
 
79
81
  option :profile_ruby,
80
82
  long: "--[no-]profile-ruby",
81
- description: "Dump complete Ruby call graph stack of entire #{Chef::Dist::PRODUCT} run (expert only).",
83
+ description: "Dump complete Ruby call graph stack of entire #{ChefUtils::Dist::Infra::PRODUCT} run (expert only).",
82
84
  boolean: true,
83
85
  default: false
84
86
 
@@ -134,7 +136,7 @@ class Chef::Application::Base < Chef::Application
134
136
  option :interval,
135
137
  short: "-i SECONDS",
136
138
  long: "--interval SECONDS",
137
- description: "Run #{Chef::Dist::PRODUCT} periodically, in seconds.",
139
+ description: "Run #{ChefUtils::Dist::Infra::PRODUCT} periodically, in seconds.",
138
140
  proc: lambda { |s| s.to_i }
139
141
 
140
142
  option :json_attribs,
@@ -158,12 +160,12 @@ class Chef::Application::Base < Chef::Application
158
160
  option :environment,
159
161
  short: "-E ENVIRONMENT",
160
162
  long: "--environment ENVIRONMENT",
161
- description: "Set the #{Chef::Dist::PRODUCT} environment on the node."
163
+ description: "Set the #{ChefUtils::Dist::Infra::PRODUCT} environment on the node."
162
164
 
163
165
  option :client_fork,
164
166
  short: "-f",
165
167
  long: "--[no-]fork",
166
- description: "Fork #{Chef::Dist::PRODUCT} process."
168
+ description: "Fork #{ChefUtils::Dist::Infra::PRODUCT} process."
167
169
 
168
170
  option :why_run,
169
171
  short: "-W",
@@ -190,14 +192,14 @@ class Chef::Application::Base < Chef::Application
190
192
  option :version,
191
193
  short: "-v",
192
194
  long: "--version",
193
- description: "Show #{Chef::Dist::PRODUCT} version.",
195
+ description: "Show #{ChefUtils::Dist::Infra::PRODUCT} version.",
194
196
  boolean: true,
195
- proc: lambda { |v| puts "#{Chef::Dist::PRODUCT}: #{::Chef::VERSION}" },
197
+ proc: lambda { |v| puts "#{ChefUtils::Dist::Infra::PRODUCT}: #{::Chef::VERSION}" },
196
198
  exit: 0
197
199
 
198
200
  option :minimal_ohai,
199
201
  long: "--minimal-ohai",
200
- description: "Only run the bare minimum Ohai plugins #{Chef::Dist::PRODUCT} needs to function.",
202
+ description: "Only run the bare minimum Ohai plugins #{ChefUtils::Dist::Infra::PRODUCT} needs to function.",
201
203
  boolean: true
202
204
 
203
205
  option :delete_entire_chef_repo,
@@ -213,7 +215,7 @@ class Chef::Application::Base < Chef::Application
213
215
  option :target,
214
216
  short: "-t TARGET",
215
217
  long: "--target TARGET",
216
- description: "Target #{Chef::Dist::PRODUCT} against a remote system or device",
218
+ description: "Target #{ChefUtils::Dist::Infra::PRODUCT} against a remote system or device",
217
219
  proc: lambda { |target|
218
220
  Chef::Log.warn "-- EXPERIMENTAL -- Target mode activated, resources and dsl may change without warning -- EXPERIMENTAL --"
219
221
  target
@@ -228,7 +230,7 @@ class Chef::Application::Base < Chef::Application
228
230
  option :fatal_windows_admin_check,
229
231
  short: "-A",
230
232
  long: "--fatal-windows-admin-check",
231
- description: "Fail the run when #{Chef::Dist::CLIENT} doesn't have administrator privileges on Windows.",
233
+ description: "Fail the run when #{ChefUtils::Dist::Infra::CLIENT} doesn't have administrator privileges on Windows.",
232
234
  boolean: true
233
235
  end
234
236
 
@@ -245,7 +247,7 @@ class Chef::Application::Base < Chef::Application
245
247
  option :chef_server_url,
246
248
  short: "-S CHEFSERVERURL",
247
249
  long: "--server CHEFSERVERURL",
248
- description: "The #{Chef::Dist::SERVER_PRODUCT} URL.",
250
+ description: "The #{ChefUtils::Dist::Server::PRODUCT} URL.",
249
251
  proc: nil
250
252
 
251
253
  option :validation_key,
@@ -263,7 +265,7 @@ class Chef::Application::Base < Chef::Application
263
265
  option :enable_reporting,
264
266
  short: "-R",
265
267
  long: "--enable-reporting",
266
- description: "(#{Chef::Dist::CLIENT} only) reporting data collection for runs.",
268
+ description: "(#{ChefUtils::Dist::Infra::CLIENT} only) reporting data collection for runs.",
267
269
  boolean: true
268
270
 
269
271
  option :local_mode,
@@ -274,11 +276,11 @@ class Chef::Application::Base < Chef::Application
274
276
 
275
277
  option :chef_zero_host,
276
278
  long: "--chef-zero-host HOST",
277
- description: "Host to start #{Chef::Dist::ZERO} on."
279
+ description: "Host to start #{ChefUtils::Dist::Zero::PRODUCT} on."
278
280
 
279
281
  option :chef_zero_port,
280
282
  long: "--chef-zero-port PORT",
281
- description: "Port (or port range) to start #{Chef::Dist::ZERO} on. Port ranges like 1000,1010 or 8889-9999 will try all given ports until one works."
283
+ description: "Port (or port range) to start #{ChefUtils::Dist::Zero::PRODUCT} on. Port ranges like 1000,1010 or 8889-9999 will try all given ports until one works."
282
284
 
283
285
  option :listen,
284
286
  long: "--[no-]listen",
@@ -287,7 +289,7 @@ class Chef::Application::Base < Chef::Application
287
289
 
288
290
  option :skip_cookbook_sync,
289
291
  long: "--[no-]skip-cookbook-sync",
290
- description: "(#{Chef::Dist::CLIENT} only) Use cached cookbooks without overwriting local differences from the #{Chef::Dist::SERVER_PRODUCT}.",
292
+ description: "(#{ChefUtils::Dist::Infra::CLIENT} only) Use cached cookbooks without overwriting local differences from the #{ChefUtils::Dist::Server::PRODUCT}.",
291
293
  boolean: false
292
294
 
293
295
  option :named_run_list,
@@ -326,7 +328,7 @@ class Chef::Application::Base < Chef::Application
326
328
  # Run the chef client, optionally daemonizing or looping at intervals.
327
329
  def run_application
328
330
  if Chef::Config[:version]
329
- puts "#{Chef::Dist::PRODUCT} version: #{::Chef::VERSION}"
331
+ puts "#{ChefUtils::Dist::Infra::PRODUCT} version: #{::Chef::VERSION}"
330
332
  end
331
333
 
332
334
  if !Chef::Config[:client_fork] || Chef::Config[:once]
@@ -346,20 +348,21 @@ class Chef::Application::Base < Chef::Application
346
348
  private
347
349
 
348
350
  def windows_interval_error_message
349
- "Windows #{Chef::Dist::PRODUCT} interval runs are not supported in #{Chef::Dist::PRODUCT} 15 and later." +
351
+ "Windows #{ChefUtils::Dist::Infra::PRODUCT} interval runs are not supported in #{ChefUtils::Dist::Infra::PRODUCT} 15 and later." +
350
352
  "\nConfiguration settings:" +
351
353
  ("\n interval = #{Chef::Config[:interval]} seconds" if Chef::Config[:interval]).to_s +
352
- "\nPlease manage #{Chef::Dist::PRODUCT} as a scheduled task instead."
354
+ "\nPlease manage #{ChefUtils::Dist::Infra::PRODUCT} as a scheduled task instead."
353
355
  end
354
356
 
355
357
  def unforked_interval_error_message
356
- "Unforked #{Chef::Dist::PRODUCT} interval runs are disabled by default." +
358
+ "Unforked #{ChefUtils::Dist::Infra::PRODUCT} interval runs are disabled by default." +
357
359
  "\nConfiguration settings:" +
358
360
  ("\n interval = #{Chef::Config[:interval]} seconds" if Chef::Config[:interval]).to_s +
359
- "\nEnable #{Chef::Dist::PRODUCT} interval runs by setting `:client_fork = true` in your config file or adding `--fork` to your command line options."
361
+ "\nEnable #{ChefUtils::Dist::Infra::PRODUCT} interval runs by setting `:client_fork = true` in your config file or adding `--fork` to your command line options."
360
362
  end
361
363
 
362
364
  def fetch_recipe_tarball(url, path)
365
+ require "open-uri" unless defined?(OpenURI)
363
366
  Chef::Log.trace("Download recipes tarball from #{url} to #{path}")
364
367
  if File.exist?(url)
365
368
  FileUtils.cp(url, path)
@@ -377,7 +380,7 @@ class Chef::Application::Base < Chef::Application
377
380
 
378
381
  def interval_run_chef_client
379
382
  if Chef::Config[:daemonize]
380
- Chef::Daemon.daemonize(Chef::Dist::PRODUCT)
383
+ Chef::Daemon.daemonize(ChefUtils::Dist::Infra::PRODUCT)
381
384
 
382
385
  # Start first daemonized run after configured number of seconds
383
386
  if Chef::Config[:daemonize].is_a?(Integer)