chef 16.4.38 → 16.7.61

Sign up to get free protection for your applications and to get access to all the features.
Files changed (457) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -12
  3. data/Rakefile +22 -15
  4. data/bin/knife +1 -1
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +2 -1
  7. data/lib/chef/application.rb +19 -17
  8. data/lib/chef/application/apply.rb +12 -7
  9. data/lib/chef/application/base.rb +26 -23
  10. data/lib/chef/application/client.rb +16 -5
  11. data/lib/chef/application/exit_code.rb +13 -4
  12. data/lib/chef/application/knife.rb +22 -11
  13. data/lib/chef/application/solo.rb +2 -1
  14. data/lib/chef/application/windows_service.rb +14 -14
  15. data/lib/chef/application/windows_service_manager.rb +6 -6
  16. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  17. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
  18. data/lib/chef/chef_fs/file_pattern.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  20. data/lib/chef/chef_fs/knife.rb +2 -2
  21. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  22. data/lib/chef/client.rb +13 -43
  23. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  24. data/lib/chef/cookbook/gem_installer.rb +1 -1
  25. data/lib/chef/cookbook/synchronizer.rb +2 -2
  26. data/lib/chef/cookbook_manifest.rb +1 -1
  27. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  28. data/lib/chef/cookbook_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +2 -5
  30. data/lib/chef/data_collector.rb +7 -6
  31. data/lib/chef/data_collector/config_validation.rb +22 -13
  32. data/lib/chef/data_collector/run_end_message.rb +2 -2
  33. data/lib/chef/data_collector/run_start_message.rb +1 -1
  34. data/lib/chef/deprecated.rb +1 -1
  35. data/lib/chef/deprecation/warnings.rb +2 -2
  36. data/lib/chef/digester.rb +2 -2
  37. data/lib/chef/dsl/chef_vault.rb +1 -1
  38. data/lib/chef/dsl/data_query.rb +2 -2
  39. data/lib/chef/dsl/platform_introspection.rb +1 -1
  40. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  41. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  42. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  43. data/lib/chef/environment.rb +3 -3
  44. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  45. data/lib/chef/exceptions.rb +5 -5
  46. data/lib/chef/file_access_control/windows.rb +6 -5
  47. data/lib/chef/file_content_management/tempfile.rb +1 -1
  48. data/lib/chef/formatters/doc.rb +7 -6
  49. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  50. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +2 -2
  51. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  52. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  53. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +6 -6
  54. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  55. data/lib/chef/formatters/indentable_output_stream.rb +2 -2
  56. data/lib/chef/formatters/minimal.rb +5 -4
  57. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +28 -39
  58. data/lib/chef/http.rb +6 -14
  59. data/lib/chef/http/auth_credentials.rb +5 -1
  60. data/lib/chef/http/authenticator.rb +1 -1
  61. data/lib/chef/http/basic_client.rb +4 -2
  62. data/lib/chef/http/decompressor.rb +1 -1
  63. data/lib/chef/http/http_request.rb +7 -5
  64. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  65. data/lib/chef/http/ssl_policies.rb +1 -1
  66. data/lib/chef/json_compat.rb +3 -8
  67. data/lib/chef/key.rb +1 -1
  68. data/lib/chef/knife.rb +4 -4
  69. data/lib/chef/knife/bootstrap.rb +18 -15
  70. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  71. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  72. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +9 -9
  73. data/lib/chef/knife/client_create.rb +3 -3
  74. data/lib/chef/knife/config_get.rb +8 -97
  75. data/lib/chef/knife/config_get_profile.rb +9 -9
  76. data/lib/chef/knife/config_list.rb +139 -0
  77. data/lib/chef/knife/config_list_profiles.rb +8 -98
  78. data/lib/chef/knife/config_show.rb +127 -0
  79. data/lib/chef/knife/config_use.rb +61 -0
  80. data/lib/chef/knife/config_use_profile.rb +9 -24
  81. data/lib/chef/knife/configure.rb +4 -2
  82. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  83. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  84. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  85. data/lib/chef/knife/core/object_loader.rb +1 -1
  86. data/lib/chef/knife/core/ui.rb +1 -1
  87. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -15
  88. data/lib/chef/knife/exec.rb +2 -2
  89. data/lib/chef/knife/node_policy_set.rb +2 -2
  90. data/lib/chef/knife/node_run_list_add.rb +1 -1
  91. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  92. data/lib/chef/knife/node_run_list_set.rb +1 -1
  93. data/lib/chef/knife/node_show.rb +2 -2
  94. data/lib/chef/knife/role_env_run_list_add.rb +1 -1
  95. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  96. data/lib/chef/knife/role_run_list_add.rb +1 -1
  97. data/lib/chef/knife/role_run_list_set.rb +1 -1
  98. data/lib/chef/knife/search.rb +0 -1
  99. data/lib/chef/knife/serve.rb +3 -3
  100. data/lib/chef/knife/ssh.rb +18 -3
  101. data/lib/chef/knife/ssl_check.rb +3 -3
  102. data/lib/chef/knife/status.rb +2 -2
  103. data/lib/chef/knife/tag_create.rb +1 -1
  104. data/lib/chef/knife/tag_delete.rb +1 -1
  105. data/lib/chef/knife/user_create.rb +2 -2
  106. data/lib/chef/knife/yaml_convert.rb +1 -1
  107. data/lib/chef/local_mode.rb +2 -2
  108. data/lib/chef/log/syslog.rb +2 -2
  109. data/lib/chef/log/winevt.rb +2 -2
  110. data/lib/chef/mixin/convert_to_class_name.rb +0 -56
  111. data/lib/chef/mixin/deep_merge.rb +0 -12
  112. data/lib/chef/mixin/openssl_helper.rb +2 -5
  113. data/lib/chef/mixin/powershell_exec.rb +22 -10
  114. data/lib/chef/mixin/powershell_out.rb +12 -5
  115. data/lib/chef/mixin/properties.rb +2 -0
  116. data/lib/chef/mixin/template.rb +3 -3
  117. data/lib/chef/mixin/unformatter.rb +1 -1
  118. data/lib/chef/mixin/uris.rb +4 -2
  119. data/lib/chef/mixin/versioned_api.rb +1 -2
  120. data/lib/chef/node/attribute_collections.rb +2 -6
  121. data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
  122. data/lib/chef/node_map.rb +4 -4
  123. data/lib/chef/policy_builder/dynamic.rb +2 -0
  124. data/lib/chef/policy_builder/policyfile.rb +2 -2
  125. data/lib/chef/powershell.rb +8 -4
  126. data/lib/chef/property.rb +1 -1
  127. data/lib/chef/provider.rb +1 -5
  128. data/lib/chef/provider/cron.rb +2 -13
  129. data/lib/chef/provider/file.rb +2 -2
  130. data/lib/chef/provider/group.rb +14 -6
  131. data/lib/chef/provider/group/windows.rb +12 -1
  132. data/lib/chef/provider/ifconfig.rb +9 -9
  133. data/lib/chef/provider/ifconfig/debian.rb +38 -22
  134. data/lib/chef/provider/ifconfig/redhat.rb +54 -18
  135. data/lib/chef/provider/launchd.rb +3 -13
  136. data/lib/chef/provider/link.rb +0 -9
  137. data/lib/chef/provider/mount.rb +18 -1
  138. data/lib/chef/provider/mount/linux.rb +67 -0
  139. data/lib/chef/provider/mount/mount.rb +41 -43
  140. data/lib/chef/provider/package.rb +3 -0
  141. data/lib/chef/provider/package/apt.rb +1 -1
  142. data/lib/chef/provider/package/chocolatey.rb +6 -6
  143. data/lib/chef/provider/package/dpkg.rb +3 -12
  144. data/lib/chef/provider/package/freebsd/base.rb +3 -2
  145. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
  146. data/lib/chef/provider/package/homebrew.rb +1 -1
  147. data/lib/chef/provider/package/ips.rb +1 -1
  148. data/lib/chef/provider/package/powershell.rb +2 -3
  149. data/lib/chef/provider/package/rubygems.rb +22 -19
  150. data/lib/chef/provider/package/snap.rb +1 -4
  151. data/lib/chef/provider/package/solaris.rb +0 -2
  152. data/lib/chef/provider/package/windows.rb +2 -2
  153. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
  154. data/lib/chef/provider/package/yum/rpm_utils.rb +1 -1
  155. data/lib/chef/provider/package/zypper.rb +99 -72
  156. data/lib/chef/provider/powershell_script.rb +12 -1
  157. data/lib/chef/provider/registry_key.rb +4 -3
  158. data/lib/chef/provider/remote_file/content.rb +3 -0
  159. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  160. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  161. data/lib/chef/provider/route.rb +4 -8
  162. data/lib/chef/provider/service/debian.rb +2 -1
  163. data/lib/chef/provider/service/macosx.rb +2 -2
  164. data/lib/chef/provider/service/redhat.rb +1 -1
  165. data/lib/chef/provider/template_finder.rb +2 -10
  166. data/lib/chef/provider/user.rb +17 -9
  167. data/lib/chef/provider/user/aix.rb +1 -1
  168. data/lib/chef/provider/user/dscl.rb +5 -5
  169. data/lib/chef/provider/user/mac.rb +15 -7
  170. data/lib/chef/provider/user/solaris.rb +1 -1
  171. data/lib/chef/provider/user/windows.rb +10 -3
  172. data/lib/chef/provider/zypper_repository.rb +2 -2
  173. data/lib/chef/provider_resolver.rb +1 -1
  174. data/lib/chef/providers.rb +1 -3
  175. data/lib/chef/pwsh.rb +71 -0
  176. data/lib/chef/recipe.rb +2 -2
  177. data/lib/chef/resource.rb +2 -2
  178. data/lib/chef/resource/apt_repository.rb +6 -5
  179. data/lib/chef/resource/bash.rb +119 -1
  180. data/lib/chef/resource/batch.rb +1 -1
  181. data/lib/chef/resource/bff_package.rb +22 -0
  182. data/lib/chef/resource/breakpoint.rb +59 -2
  183. data/lib/chef/resource/build_essential.rb +5 -8
  184. data/lib/chef/resource/cab_package.rb +29 -0
  185. data/lib/chef/resource/chef_client_config.rb +313 -0
  186. data/lib/chef/resource/chef_client_cron.rb +35 -28
  187. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  188. data/lib/chef/resource/chef_client_scheduled_task.rb +24 -21
  189. data/lib/chef/resource/chef_client_systemd_timer.rb +27 -20
  190. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  191. data/lib/chef/resource/chef_gem.rb +10 -10
  192. data/lib/chef/resource/chef_handler.rb +149 -4
  193. data/lib/chef/resource/chef_sleep.rb +3 -3
  194. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  195. data/lib/chef/resource/cookbook_file.rb +2 -2
  196. data/lib/chef/resource/cron/_cron_shared.rb +1 -0
  197. data/lib/chef/resource/cron/cron_d.rb +2 -3
  198. data/lib/chef/resource/csh.rb +2 -2
  199. data/lib/chef/resource/dnf_package.rb +2 -2
  200. data/lib/chef/resource/dsc_resource.rb +0 -1
  201. data/lib/chef/resource/dsc_script.rb +2 -2
  202. data/lib/chef/resource/execute.rb +10 -8
  203. data/lib/chef/resource/file.rb +4 -4
  204. data/lib/chef/resource/gem_package.rb +5 -5
  205. data/lib/chef/resource/homebrew_package.rb +3 -3
  206. data/lib/chef/resource/homebrew_update.rb +9 -6
  207. data/lib/chef/resource/hostname.rb +4 -4
  208. data/lib/chef/resource/ifconfig.rb +52 -5
  209. data/lib/chef/resource/kernel_module.rb +1 -1
  210. data/lib/chef/resource/ksh.rb +3 -3
  211. data/lib/chef/resource/launchd.rb +17 -16
  212. data/lib/chef/resource/locale.rb +2 -2
  213. data/lib/chef/resource/lwrp_base.rb +3 -5
  214. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  215. data/lib/chef/resource/mount.rb +8 -2
  216. data/lib/chef/resource/notify_group.rb +0 -1
  217. data/lib/chef/resource/ohai.rb +46 -3
  218. data/lib/chef/resource/ohai_hint.rb +33 -0
  219. data/lib/chef/resource/openssl_dhparam.rb +27 -5
  220. data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
  221. data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
  222. data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
  223. data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
  224. data/lib/chef/resource/openssl_x509_crl.rb +19 -10
  225. data/lib/chef/resource/openssl_x509_request.rb +14 -16
  226. data/lib/chef/resource/osx_profile.rb +77 -13
  227. data/lib/chef/resource/perl.rb +2 -2
  228. data/lib/chef/resource/plist.rb +3 -7
  229. data/lib/chef/resource/powershell_package_source.rb +24 -23
  230. data/lib/chef/resource/powershell_script.rb +14 -11
  231. data/lib/chef/resource/python.rb +2 -2
  232. data/lib/chef/resource/reboot.rb +2 -2
  233. data/lib/chef/resource/registry_key.rb +93 -2
  234. data/lib/chef/resource/remote_file.rb +3 -3
  235. data/lib/chef/resource/rhsm_register.rb +22 -10
  236. data/lib/chef/resource/route.rb +1 -1
  237. data/lib/chef/resource/ruby.rb +2 -2
  238. data/lib/chef/resource/ruby_block.rb +2 -2
  239. data/lib/chef/resource/scm/_scm.rb +2 -1
  240. data/lib/chef/resource/scm/git.rb +82 -1
  241. data/lib/chef/resource/scm/subversion.rb +14 -2
  242. data/lib/chef/resource/script.rb +2 -2
  243. data/lib/chef/resource/service.rb +3 -3
  244. data/lib/chef/resource/solaris_package.rb +0 -2
  245. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  246. data/lib/chef/resource/sudo.rb +1 -1
  247. data/lib/chef/resource/support/client.erb +64 -0
  248. data/lib/chef/resource/support/cron.d.erb +1 -1
  249. data/lib/chef/resource/support/cron_access.erb +1 -1
  250. data/lib/chef/resource/support/sudoer.erb +1 -1
  251. data/lib/chef/resource/support/ulimit.erb +1 -1
  252. data/lib/chef/resource/sysctl.rb +1 -5
  253. data/lib/chef/resource/systemd_unit.rb +44 -3
  254. data/lib/chef/resource/template.rb +2 -2
  255. data/lib/chef/resource/timezone.rb +112 -73
  256. data/lib/chef/resource/windows_ad_join.rb +19 -12
  257. data/lib/chef/resource/windows_audit_policy.rb +26 -24
  258. data/lib/chef/resource/windows_certificate.rb +12 -10
  259. data/lib/chef/resource/windows_dfs_server.rb +7 -4
  260. data/lib/chef/resource/windows_env.rb +173 -0
  261. data/lib/chef/resource/windows_feature.rb +2 -0
  262. data/lib/chef/resource/windows_firewall_profile.rb +28 -31
  263. data/lib/chef/resource/windows_firewall_rule.rb +9 -11
  264. data/lib/chef/resource/windows_font.rb +1 -1
  265. data/lib/chef/resource/windows_package.rb +29 -5
  266. data/lib/chef/resource/windows_path.rb +38 -0
  267. data/lib/chef/resource/windows_printer.rb +5 -3
  268. data/lib/chef/resource/windows_printer_port.rb +6 -4
  269. data/lib/chef/resource/windows_security_policy.rb +5 -5
  270. data/lib/chef/resource/windows_service.rb +108 -0
  271. data/lib/chef/resource/windows_share.rb +18 -18
  272. data/lib/chef/resource/windows_task.rb +629 -28
  273. data/lib/chef/resource/windows_user_privilege.rb +53 -54
  274. data/lib/chef/resource/windows_workgroup.rb +9 -7
  275. data/lib/chef/resource/yum_package.rb +2 -2
  276. data/lib/chef/resource/yum_repository.rb +1 -1
  277. data/lib/chef/resource_collection/resource_set.rb +1 -5
  278. data/lib/chef/resource_inspector.rb +77 -75
  279. data/lib/chef/resource_reporter.rb +0 -2
  280. data/lib/chef/resources.rb +4 -1
  281. data/lib/chef/run_context.rb +2 -2
  282. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  283. data/lib/chef/run_lock.rb +3 -3
  284. data/lib/chef/search/query.rb +6 -5
  285. data/lib/chef/server_api.rb +0 -4
  286. data/lib/chef/shell.rb +31 -26
  287. data/lib/chef/shell/ext.rb +12 -12
  288. data/lib/chef/shell/shell_session.rb +2 -2
  289. data/lib/chef/train_transport.rb +5 -104
  290. data/lib/chef/util/backup.rb +1 -1
  291. data/lib/chef/util/diff.rb +3 -3
  292. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -3
  293. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  294. data/lib/chef/util/powershell/cmdlet.rb +6 -10
  295. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  296. data/lib/chef/util/threaded_job_queue.rb +0 -2
  297. data/lib/chef/version.rb +1 -1
  298. data/lib/chef/win32/crypto.rb +1 -1
  299. data/lib/chef/win32/file.rb +1 -1
  300. data/lib/chef/win32/registry.rb +1 -2
  301. data/lib/chef/win32/security/sid.rb +1 -1
  302. data/lib/chef/win32/unicode.rb +1 -1
  303. data/spec/data/shef-config.rb +1 -1
  304. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  305. data/spec/functional/mixin/powershell_out_spec.rb +11 -3
  306. data/spec/functional/resource/aix_service_spec.rb +2 -2
  307. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  308. data/spec/functional/resource/apt_package_spec.rb +4 -6
  309. data/spec/functional/resource/chocolatey_package_spec.rb +3 -3
  310. data/spec/functional/resource/cron_spec.rb +3 -3
  311. data/spec/functional/resource/dsc_script_spec.rb +3 -3
  312. data/spec/functional/resource/insserv_spec.rb +1 -1
  313. data/spec/functional/resource/mount_spec.rb +10 -2
  314. data/spec/functional/resource/powershell_package_source_spec.rb +107 -0
  315. data/spec/functional/resource/powershell_script_spec.rb +57 -14
  316. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  317. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  318. data/spec/functional/resource/windows_certificate_spec.rb +10 -6
  319. data/spec/functional/resource/windows_firewall_rule_spec.rb +93 -0
  320. data/spec/functional/resource/windows_package_spec.rb +36 -10
  321. data/spec/functional/resource/windows_share_spec.rb +103 -0
  322. data/spec/functional/resource/windows_task_spec.rb +15 -16
  323. data/spec/functional/resource/zypper_package_spec.rb +11 -0
  324. data/spec/functional/version_spec.rb +3 -3
  325. data/spec/integration/client/client_spec.rb +4 -4
  326. data/spec/integration/client/exit_code_spec.rb +3 -2
  327. data/spec/integration/client/ipv6_spec.rb +1 -1
  328. data/spec/integration/knife/client_key_create_spec.rb +1 -1
  329. data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
  330. data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
  331. data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
  332. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  333. data/spec/integration/knife/node_create_spec.rb +1 -1
  334. data/spec/integration/knife/node_environment_set_spec.rb +1 -1
  335. data/spec/integration/knife/node_run_list_add_spec.rb +4 -4
  336. data/spec/integration/knife/node_run_list_remove_spec.rb +1 -1
  337. data/spec/integration/knife/node_run_list_set_spec.rb +1 -1
  338. data/spec/integration/knife/node_show_spec.rb +1 -1
  339. data/spec/integration/ohai/ohai_spec.rb +61 -0
  340. data/spec/integration/recipes/notifies_spec.rb +1 -1
  341. data/spec/integration/recipes/provider_choice.rb +2 -2
  342. data/spec/integration/recipes/remote_directory.rb +1 -1
  343. data/spec/integration/solo/solo_spec.rb +5 -5
  344. data/spec/spec_helper.rb +8 -6
  345. data/spec/stress/win32/file_spec.rb +1 -1
  346. data/spec/support/chef_helpers.rb +2 -2
  347. data/spec/support/lib/chef/resource/cat.rb +1 -1
  348. data/spec/support/lib/chef/resource/one_two_three_four.rb +1 -1
  349. data/spec/support/matchers/leak.rb +2 -2
  350. data/spec/support/mock/platform.rb +24 -16
  351. data/spec/support/platform_helpers.rb +27 -38
  352. data/spec/support/shared/functional/securable_resource.rb +108 -27
  353. data/spec/support/shared/functional/win32_service.rb +1 -1
  354. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  355. data/spec/support/shared/unit/knife_shared.rb +1 -1
  356. data/spec/support/shared/unit/script_resource.rb +4 -4
  357. data/spec/support/shared/unit/windows_script_resource.rb +1 -1
  358. data/spec/tiny_server.rb +0 -1
  359. data/spec/unit/application/client_spec.rb +2 -2
  360. data/spec/unit/application/exit_code_spec.rb +10 -0
  361. data/spec/unit/application_spec.rb +4 -6
  362. data/spec/unit/chef_fs/config_spec.rb +1 -1
  363. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  364. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  365. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  366. data/spec/unit/client_spec.rb +16 -0
  367. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  368. data/spec/unit/cookbook_spec.rb +2 -2
  369. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  370. data/spec/unit/data_collector_spec.rb +0 -117
  371. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  372. data/spec/unit/file_access_control_spec.rb +1 -1
  373. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +11 -11
  374. data/spec/unit/knife/bootstrap_spec.rb +6 -6
  375. data/spec/unit/knife/client_create_spec.rb +2 -2
  376. data/spec/unit/knife/configure_client_spec.rb +5 -5
  377. data/spec/unit/knife/configure_spec.rb +3 -3
  378. data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
  379. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  380. data/spec/unit/knife/cookbook_list_spec.rb +2 -2
  381. data/spec/unit/knife/cookbook_metadata_spec.rb +3 -3
  382. data/spec/unit/knife/core/ui_spec.rb +1 -0
  383. data/spec/unit/knife/environment_compare_spec.rb +3 -3
  384. data/spec/unit/knife/ssh_spec.rb +2 -2
  385. data/spec/unit/knife/supermarket_download_spec.rb +8 -8
  386. data/spec/unit/knife/supermarket_list_spec.rb +3 -3
  387. data/spec/unit/knife/supermarket_search_spec.rb +1 -1
  388. data/spec/unit/knife/tag_create_spec.rb +1 -1
  389. data/spec/unit/knife/tag_delete_spec.rb +1 -1
  390. data/spec/unit/knife/user_create_spec.rb +1 -1
  391. data/spec/unit/lwrp_spec.rb +3 -3
  392. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  393. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  394. data/spec/unit/mixin/powershell_exec_spec.rb +39 -2
  395. data/spec/unit/mixin/powershell_out_spec.rb +14 -0
  396. data/spec/unit/mixin/securable_spec.rb +2 -2
  397. data/spec/unit/mixin/which.rb +1 -1
  398. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  399. data/spec/unit/provider/group/windows_spec.rb +6 -0
  400. data/spec/unit/provider/group_spec.rb +1 -1
  401. data/spec/unit/provider/mount/linux_spec.rb +107 -0
  402. data/spec/unit/provider/mount/mount_spec.rb +21 -10
  403. data/spec/unit/provider/mount/solaris_spec.rb +1 -1
  404. data/spec/unit/provider/mount_spec.rb +31 -0
  405. data/spec/unit/provider/package/chocolatey_spec.rb +2 -3
  406. data/spec/unit/provider/package/powershell_spec.rb +88 -96
  407. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  408. data/spec/unit/provider/package/zypper_spec.rb +0 -25
  409. data/spec/unit/provider/package_spec.rb +2 -2
  410. data/spec/unit/provider/powershell_script_spec.rb +11 -0
  411. data/spec/unit/provider/route_spec.rb +0 -2
  412. data/spec/unit/provider/subversion_spec.rb +0 -3
  413. data/spec/unit/provider/user_spec.rb +7 -1
  414. data/spec/unit/provider/windows_env_spec.rb +18 -34
  415. data/spec/unit/provider/windows_path_spec.rb +6 -11
  416. data/spec/unit/provider/windows_task_spec.rb +7 -6
  417. data/spec/unit/recipe_spec.rb +1 -1
  418. data/spec/unit/resource/breakpoint_spec.rb +1 -1
  419. data/spec/unit/resource/build_essential_spec.rb +0 -12
  420. data/spec/unit/resource/chef_client_config_spec.rb +137 -0
  421. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  422. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  423. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  424. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  425. data/spec/unit/resource/ifconfig_spec.rb +2 -10
  426. data/spec/unit/resource/launchd_spec.rb +8 -0
  427. data/spec/unit/resource/mount_spec.rb +18 -5
  428. data/spec/unit/resource/osx_profile_spec.rb +67 -1
  429. data/spec/unit/resource/powershell_package_source_spec.rb +20 -20
  430. data/spec/unit/resource/powershell_script_spec.rb +4 -74
  431. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  432. data/spec/unit/resource/service_spec.rb +2 -2
  433. data/spec/unit/resource/solaris_package_spec.rb +8 -10
  434. data/spec/unit/resource/timezone_spec.rb +63 -0
  435. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  436. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  437. data/spec/unit/resource_inspector_spec.rb +3 -3
  438. data/spec/unit/run_lock_spec.rb +5 -1
  439. data/spec/unit/runner_spec.rb +1 -2
  440. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  441. data/spec/unit/shell/shell_session_spec.rb +35 -64
  442. data/spec/unit/shell_spec.rb +18 -21
  443. data/spec/unit/train_transport_spec.rb +14 -13
  444. data/spec/unit/util/selinux_spec.rb +2 -0
  445. data/tasks/rspec.rb +1 -3
  446. metadata +49 -27
  447. data/lib/chef/dist.rb +0 -68
  448. data/lib/chef/monkey_patches/net_http.rb +0 -22
  449. data/lib/chef/provider/windows_env.rb +0 -210
  450. data/lib/chef/provider/windows_path.rb +0 -61
  451. data/lib/chef/provider/windows_task.rb +0 -632
  452. data/spec/integration/knife/config_get_profile_spec.rb +0 -114
  453. data/spec/support/mock/constant.rb +0 -52
  454. data/spec/unit/monkey_patches/uri_spec.rb +0 -34
  455. data/spec/unit/provider_resolver_spec.rb +0 -885
  456. data/spec/unit/resource/data/InstallHistory_with_CLT.plist +0 -92
  457. data/spec/unit/resource/data/InstallHistory_without_CLT.plist +0 -38
@@ -112,7 +112,11 @@ class Chef
112
112
 
113
113
  def get_sid(value)
114
114
  if value.is_a?(String)
115
- SID.from_account(value)
115
+ begin
116
+ Security.convert_string_sid_to_sid(value)
117
+ rescue Chef::Exceptions::Win32APIError
118
+ SID.from_account(value)
119
+ end
116
120
  elsif value.is_a?(SID)
117
121
  value
118
122
  else
@@ -251,10 +255,7 @@ class Chef
251
255
  flags |= CONTAINER_INHERIT_ACE
252
256
  when :objects_only
253
257
  flags |= OBJECT_INHERIT_ACE
254
- when true
255
- flags |= CONTAINER_INHERIT_ACE
256
- flags |= OBJECT_INHERIT_ACE
257
- when nil
258
+ when true, nil
258
259
  flags |= CONTAINER_INHERIT_ACE
259
260
  flags |= OBJECT_INHERIT_ACE
260
261
  end
@@ -76,7 +76,7 @@ class Chef
76
76
  # complexity here is due to supporting mangling non-UTF8 strings (e.g. latin-1 filenames with characters that are illegal in UTF-8)
77
77
  b = File.basename(@new_resource.path)
78
78
  i = b.index(".")
79
- i.nil? ? "" : b[i..-1].scrub
79
+ i.nil? ? "" : b[i..].scrub
80
80
  end
81
81
 
82
82
  # Returns the possible directories for the tempfile to be created in.
@@ -1,6 +1,6 @@
1
1
  require_relative "base"
2
2
  require_relative "../config"
3
- require_relative "../dist"
3
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
4
4
 
5
5
  class Chef
6
6
  module Formatters
@@ -41,7 +41,8 @@ class Chef
41
41
  end
42
42
 
43
43
  def run_start(version, run_status)
44
- puts_line "Starting #{Chef::Dist::PRODUCT}, version #{version}"
44
+ puts_line "Starting #{ChefUtils::Dist::Infra::PRODUCT}, version #{version}"
45
+ puts_line "Patents: #{ChefUtils::Dist::Org::PATENTS}"
45
46
  puts_line "Targeting node: #{Chef::Config.target_mode.host}" if Chef::Config.target_mode?
46
47
  puts_line "OpenSSL FIPS 140 mode enabled" if Chef::Config[:fips]
47
48
  end
@@ -77,18 +78,18 @@ class Chef
77
78
  puts_line ""
78
79
  end
79
80
  if Chef::Config[:why_run]
80
- puts_line "#{Chef::Dist::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources would have been updated"
81
+ puts_line "#{ChefUtils::Dist::Infra::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources would have been updated"
81
82
  else
82
- puts_line "#{Chef::Dist::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources updated in #{pretty_elapsed_time}"
83
+ puts_line "#{ChefUtils::Dist::Infra::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources updated in #{pretty_elapsed_time}"
83
84
  end
84
85
  end
85
86
 
86
87
  def run_failed(exception)
87
88
  @end_time = Time.now
88
89
  if Chef::Config[:why_run]
89
- puts_line "#{Chef::Dist::PRODUCT} failed. #{@updated_resources} resources would have been updated"
90
+ puts_line "#{ChefUtils::Dist::Infra::PRODUCT} failed. #{@updated_resources} resources would have been updated"
90
91
  else
91
- puts_line "#{Chef::Dist::PRODUCT} failed. #{@updated_resources} resources updated in #{pretty_elapsed_time}"
92
+ puts_line "#{ChefUtils::Dist::Infra::PRODUCT} failed. #{@updated_resources} resources updated in #{pretty_elapsed_time}"
92
93
  end
93
94
  end
94
95
 
@@ -17,7 +17,8 @@
17
17
  #
18
18
 
19
19
  require_relative "../../http/authenticator"
20
- require_relative "../../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
+ require "timeout" unless defined?(Timeout)
21
22
 
22
23
  class Chef
23
24
  module Formatters
@@ -40,7 +41,7 @@ class Chef
40
41
  def describe_eof_error(error_description)
41
42
  error_description.section("Authentication Error:", <<~E)
42
43
  Received an EOF on transport socket. This almost always indicates a network
43
- error external to #{Chef::Dist::CLIENT}. Some causes include:
44
+ error external to #{ChefUtils::Dist::Infra::CLIENT}. Some causes include:
44
45
 
45
46
  - Blocking ICMP Dest Unreachable (breaking Path MTU Discovery)
46
47
  - IPsec or VPN tunnelling / TCP Encapsulation MTU issues
@@ -114,8 +115,8 @@ class Chef
114
115
  error_description.section("Incompatible server API version:", <<~E)
115
116
  This version of the API that this request specified is not supported by the server you sent this request to.
116
117
  The server supports a min API version of #{min_server_version} and a max API version of #{max_server_version}.
117
- #{Chef::Dist::PRODUCT} just made a request with an API version of #{client_api_version}.
118
- Please either update your #{Chef::Dist::PRODUCT} or the server to be a compatible set.
118
+ #{ChefUtils::Dist::Infra::PRODUCT} just made a request with an API version of #{client_api_version}.
119
+ Please either update your #{ChefUtils::Dist::Infra::PRODUCT} or the server to be a compatible set.
119
120
  E
120
121
  else
121
122
  describe_http_error(error_description)
@@ -130,7 +131,7 @@ class Chef
130
131
  end
131
132
 
132
133
  def describe_503_error(error_description)
133
- error_description.section("Server Unavailable", "The #{Chef::Dist::SERVER_PRODUCT} is temporarily unavailable")
134
+ error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
134
135
  error_description.section("Server Response:", format_rest_error)
135
136
  end
136
137
 
@@ -115,14 +115,14 @@ class Chef
115
115
 
116
116
  def culprit_line
117
117
  @culprit_line ||= begin
118
- line_number = culprit_backtrace_entry[/^(?:.\:)?[^:]+:([\d]+)/, 1].to_i
118
+ line_number = culprit_backtrace_entry[/^(?:.\:)?[^:]+:(\d+)/, 1].to_i
119
119
  Chef::Log.trace("Line number of compile error: '#{line_number}'")
120
120
  line_number
121
121
  end
122
122
  end
123
123
 
124
124
  def culprit_file
125
- @culprit_file ||= culprit_backtrace_entry[/^((?:.\:)?[^:]+):([\d]+)/, 1]
125
+ @culprit_file ||= culprit_backtrace_entry[/^((?:.\:)?[^:]+):(\d+)/, 1]
126
126
  end
127
127
 
128
128
  def filtered_bt
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "api_error_formatting"
20
- require_relative "../../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  module Formatters
@@ -46,7 +46,7 @@ class Chef
46
46
  when Chef::Exceptions::PrivateKeyMissing
47
47
  error_description.section("Private Key Not Found:", <<~E)
48
48
  Your private key could not be loaded. If the key file exists, ensure that it is
49
- readable by #{Chef::Dist::PRODUCT}.
49
+ readable by #{ChefUtils::Dist::Infra::PRODUCT}.
50
50
  E
51
51
  error_description.section("Relevant Config Settings:", <<~E)
52
52
  client_key "#{api_key}"
@@ -99,7 +99,7 @@ class Chef
99
99
  # redirect.
100
100
  def describe_404_error(error_description)
101
101
  error_description.section("Resource Not Found:", <<~E)
102
- The #{Chef::Dist::SERVER_PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url is incorrect.
102
+ The #{ChefUtils::Dist::Server::PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url is incorrect.
103
103
  E
104
104
  error_description.section("Relevant Config Settings:", <<~E)
105
105
  chef_server_url "#{server_url}"
@@ -1,4 +1,4 @@
1
- require_relative "../../dist"
1
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
2
2
 
3
3
  class Chef
4
4
  module Formatters
@@ -28,7 +28,7 @@ class Chef
28
28
  humanize_http_exception(error_description)
29
29
  when Errno::ECONNREFUSED, Timeout::Error, Errno::ETIMEDOUT, SocketError
30
30
  error_description.section("Network Error:", <<~E)
31
- There was a network error connecting to the #{Chef::Dist::SERVER_PRODUCT}:
31
+ There was a network error connecting to the #{ChefUtils::Dist::Server::PRODUCT}:
32
32
  #{exception.message}
33
33
  E
34
34
  error_description.section("Relevant Config Settings:", <<~E)
@@ -39,14 +39,14 @@ class Chef
39
39
  when Chef::Exceptions::PrivateKeyMissing
40
40
  error_description.section("Private Key Not Found:", <<~E)
41
41
  Your private key could not be loaded. If the key file exists, ensure that it is
42
- readable by #{Chef::Dist::PRODUCT}.
42
+ readable by #{ChefUtils::Dist::Infra::PRODUCT}.
43
43
  E
44
44
  error_description.section("Relevant Config Settings:", <<~E)
45
45
  validation_key "#{api_key}"
46
46
  E
47
47
  when Chef::Exceptions::InvalidRedirect
48
48
  error_description.section("Invalid Redirect:", <<~E)
49
- Change your #{Chef::Dist::SERVER_PRODUCT} location in client.rb to the #{Chef::Dist::SERVER_PRODUCT}'s FQDN to avoid unwanted redirections.
49
+ Change your #{ChefUtils::Dist::Server::PRODUCT} location in client.rb to the #{ChefUtils::Dist::Server::PRODUCT}'s FQDN to avoid unwanted redirections.
50
50
  E
51
51
  when EOFError
52
52
  describe_eof_error(error_description)
@@ -61,13 +61,13 @@ class Chef
61
61
  when Net::HTTPUnauthorized
62
62
  if clock_skew?
63
63
  error_description.section("Authentication Error:", <<~E)
64
- Failed to authenticate to the #{Chef::Dist::SERVER_PRODUCT} (http 401).
64
+ Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
65
65
  The request failed because your clock has drifted by more than 15 minutes.
66
66
  Syncing your clock to an NTP Time source should resolve the issue.
67
67
  E
68
68
  else
69
69
  error_description.section("Authentication Error:", <<~E)
70
- Failed to authenticate to the #{Chef::Dist::SERVER_PRODUCT} (http 401).
70
+ Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
71
71
  E
72
72
 
73
73
  error_description.section("Server Response:", format_rest_error)
@@ -81,7 +81,7 @@ class Chef
81
81
  end
82
82
  when Net::HTTPForbidden
83
83
  error_description.section("Authorization Error:", <<~E)
84
- Your validation client is not authorized to create the client for this node on the #{Chef::Dist::SERVER_PRODUCT} (HTTP 403).
84
+ Your validation client is not authorized to create the client for this node on the #{ChefUtils::Dist::Server::PRODUCT} (HTTP 403).
85
85
  E
86
86
  error_description.section("Possible Causes:", <<~E)
87
87
  * There may already be a client named "#{config[:node_name]}"
@@ -94,7 +94,7 @@ class Chef
94
94
  error_description.section("Server Response:", format_rest_error)
95
95
  when Net::HTTPNotFound
96
96
  error_description.section("Resource Not Found:", <<~E)
97
- The #{Chef::Dist::SERVER_PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url configuration is incorrect.
97
+ The #{ChefUtils::Dist::Server::PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url configuration is incorrect.
98
98
  E
99
99
  error_description.section("Relevant Config Settings:", <<~E)
100
100
  chef_server_url "#{server_url}"
@@ -107,7 +107,7 @@ class Chef
107
107
  E
108
108
  error_description.section("Server Response:", format_rest_error)
109
109
  when Net::HTTPBadGateway, Net::HTTPServiceUnavailable
110
- error_description.section("Server Unavailable", "The #{Chef::Dist::SERVER_PRODUCT} is temporarily unavailable")
110
+ error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
111
111
  error_description.section("Server Response:", format_rest_error)
112
112
  else
113
113
  error_description.section("Unexpected API Request Failure:", format_rest_error)
@@ -16,7 +16,7 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
  #
19
- require_relative "../../dist"
19
+ require "chef-utils" unless defined?(ChefUtils::CANARY)
20
20
 
21
21
  class Chef
22
22
  module Formatters
@@ -56,7 +56,7 @@ class Chef
56
56
  require_relative "../../win32/security"
57
57
 
58
58
  unless Chef::ReservedNames::Win32::Security.has_admin_privileges?
59
- error_description.section("Missing Windows Admin Privileges", "#{Chef::Dist::CLIENT} doesn't have administrator privileges. This can be a possible reason for the resource failure.")
59
+ error_description.section("Missing Windows Admin Privileges", "#{ChefUtils::Dist::Infra::CLIENT} doesn't have administrator privileges. This can be a possible reason for the resource failure.")
60
60
  end
61
61
  end
62
62
  end
@@ -79,8 +79,8 @@ class Chef
79
79
  loop do
80
80
 
81
81
  # low rent parser. try to gracefully handle nested blocks in resources
82
- nesting += 1 if /[\s]+do[\s]*/.match?(lines[current_line])
83
- nesting -= 1 if /end[\s]*$/.match?(lines[current_line])
82
+ nesting += 1 if /\s+do\s*/.match?(lines[current_line])
83
+ nesting -= 1 if /end\s*$/.match?(lines[current_line])
84
84
 
85
85
  relevant_lines << format_line(current_line, lines[current_line])
86
86
 
@@ -114,11 +114,11 @@ class Chef
114
114
  end
115
115
 
116
116
  def parse_source
117
- resource.source_line[/^(([\w]:)?[^:]+):([\d]+)/, 1]
117
+ resource.source_line[/^((\w:)?[^:]+):(\d+)/, 1]
118
118
  end
119
119
 
120
120
  def parse_line(source)
121
- resource.source_line[/^#{Regexp.escape(source)}:([\d]+)/, 1].to_i
121
+ resource.source_line[/^#{Regexp.escape(source)}:(\d+)/, 1].to_i
122
122
  end
123
123
 
124
124
  end
@@ -18,7 +18,7 @@
18
18
  #
19
19
 
20
20
  require_relative "api_error_formatting"
21
- require_relative "../../dist"
21
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
22
22
 
23
23
  class Chef
24
24
  module Formatters
@@ -78,7 +78,7 @@ class Chef
78
78
  case response
79
79
  when Net::HTTPUnauthorized
80
80
  error_description.section("Authentication Error:", <<~E)
81
- Failed to authenticate to the #{Chef::Dist::SERVER_PRODUCT} (http 401).
81
+ Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
82
82
  E
83
83
 
84
84
  error_description.section("Server Response:", format_rest_error)
@@ -109,7 +109,7 @@ class Chef
109
109
  E
110
110
  error_description.section("Server Response:", format_rest_error)
111
111
  when Net::HTTPBadGateway, Net::HTTPServiceUnavailable
112
- error_description.section("Server Unavailable", "The #{Chef::Dist::SERVER_PRODUCT} is temporarily unavailable")
112
+ error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
113
113
  error_description.section("Server Response:", format_rest_error)
114
114
  else
115
115
  error_description.section("Unexpected API Request Failure:", format_rest_error)
@@ -20,7 +20,7 @@ class Chef
20
20
  # pastel.decorate is a lightweight replacement for highline.color
21
21
  def pastel
22
22
  @pastel ||= begin
23
- require "pastel"
23
+ require "pastel" unless defined?(Pastel)
24
24
  Pastel.new
25
25
  end
26
26
  end
@@ -126,7 +126,7 @@ class Chef
126
126
  indent_line(options)
127
127
 
128
128
  # Note that the next line will need to be started
129
- if line[-1..-1] == "\n"
129
+ if line[-1..] == "\n"
130
130
  @line_started = false
131
131
  end
132
132
 
@@ -1,5 +1,5 @@
1
1
  require_relative "base"
2
- require_relative "../dist"
2
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
3
3
 
4
4
  class Chef
5
5
 
@@ -28,19 +28,20 @@ class Chef
28
28
 
29
29
  # Called at the very start of a Chef Run
30
30
  def run_start(version, run_status)
31
- puts_line "Starting #{Chef::Dist::PRODUCT}, version #{version}"
31
+ puts_line "Starting #{ChefUtils::Dist::Infra::PRODUCT}, version #{version}"
32
+ puts_line "Patents: #{ChefUtils::Dist::Org::PATENTS}"
32
33
  puts_line "Targeting node: #{Chef::Config.target_mode.host}" if Chef::Config.target_mode?
33
34
  puts_line "OpenSSL FIPS 140 mode enabled" if Chef::Config[:fips]
34
35
  end
35
36
 
36
37
  # Called at the end of the Chef run.
37
38
  def run_completed(node)
38
- puts "#{Chef::Dist::PRODUCT} finished, #{@updated_resources.size} resources updated"
39
+ puts "#{ChefUtils::Dist::Infra::PRODUCT} finished, #{@updated_resources.size} resources updated"
39
40
  end
40
41
 
41
42
  # called at the end of a failed run
42
43
  def run_failed(exception)
43
- puts "#{Chef::Dist::PRODUCT} failed. #{@updated_resources.size} resources updated"
44
+ puts "#{ChefUtils::Dist::Infra::PRODUCT} failed. #{@updated_resources.size} resources updated"
44
45
  end
45
46
 
46
47
  # Called right after ohai runs.
@@ -20,19 +20,30 @@ require_relative "../guard_interpreter"
20
20
 
21
21
  class Chef
22
22
  class GuardInterpreter
23
- class ResourceGuardInterpreter < DefaultGuardInterpreter
24
-
23
+ class ResourceGuardInterpreter
25
24
  def initialize(parent_resource, command, opts)
26
- super(command, opts)
25
+ @command = command
26
+ @opts = opts
27
+
27
28
  @parent_resource = parent_resource
28
29
  @resource = get_interpreter_resource(parent_resource)
29
30
  end
30
31
 
32
+ # This class used to inherit from DefaultGuardInterpreter and it responds
33
+ # to #output, so leave this in for potential backwards compatibility.
34
+ def output
35
+ nil
36
+ end
37
+
31
38
  def evaluate
32
39
  # Add attributes inherited from the parent class
33
40
  # to the resource
34
41
  merge_inherited_attributes
35
42
 
43
+ @opts.each do |attribute, value|
44
+ @resource.send(attribute, value)
45
+ end
46
+
36
47
  # Only execute and script resources and use guard attributes.
37
48
  # The command to be executed on them are passed via different attributes.
38
49
  # Script resources use code attribute and execute resources use
@@ -42,9 +53,9 @@ class Chef
42
53
  # We need to make sure we check for Script first because any resource
43
54
  # that can get to here is an Execute resource.
44
55
  if @resource.is_a? Chef::Resource::Script
45
- block_attributes = @command_opts.merge({ code: @command })
56
+ @resource.code @command
46
57
  else
47
- block_attributes = @command_opts.merge({ command: @command })
58
+ @resource.command @command
48
59
  end
49
60
 
50
61
  # Handles cases like powershell_script where default
@@ -53,33 +64,24 @@ class Chef
53
64
  # the one attribute that causes this changes its default to be
54
65
  # the same after some period to prepare for deprecation
55
66
  if @resource.class.respond_to?(:get_default_attributes)
56
- block_attributes = @resource.class.send(:get_default_attributes, @command_opts).merge(block_attributes)
67
+ @resource.class.send(:get_default_attributes).each do |attribute, value|
68
+ @resource.send(attribute, value)
69
+ end
57
70
  end
58
71
 
59
- resource_block = block_from_attributes(block_attributes)
60
- evaluate_action(nil, &resource_block)
61
- end
62
-
63
- protected
64
-
65
- def evaluate_action(action = nil, &block)
66
- @resource.instance_eval(&block)
67
-
68
- run_action = action || @resource.action
69
-
70
72
  begin
71
73
  # Coerce to an array to be safe. This could happen with a legacy
72
74
  # resource or something overriding the default_action code in a
73
75
  # subclass.
74
- Array(run_action).each { |action_to_run| @resource.run_action(action_to_run) }
75
- resource_updated = @resource.updated
76
+ Array(@resource.action).each { |action_to_run| @resource.run_action(action_to_run) }
77
+ @resource.updated
76
78
  rescue Mixlib::ShellOut::ShellCommandFailed
77
- resource_updated = nil
79
+ nil
78
80
  end
79
-
80
- resource_updated
81
81
  end
82
82
 
83
+ private
84
+
83
85
  def get_interpreter_resource(parent_resource)
84
86
  if parent_resource.nil? || parent_resource.node.nil?
85
87
  raise ArgumentError, "Node for guard resource parent must not be nil"
@@ -106,14 +108,6 @@ class Chef
106
108
  interpreter_resource
107
109
  end
108
110
 
109
- def block_from_attributes(attributes)
110
- Proc.new do
111
- attributes.each_key do |attribute_name|
112
- send(attribute_name, attributes[attribute_name]) if respond_to?(attribute_name)
113
- end
114
- end
115
- end
116
-
117
111
  def merge_inherited_attributes
118
112
  inherited_attributes = []
119
113
 
@@ -121,15 +115,10 @@ class Chef
121
115
  inherited_attributes = @parent_resource.class.send(:guard_inherited_attributes)
122
116
  end
123
117
 
124
- if inherited_attributes && !inherited_attributes.empty?
125
- inherited_attributes.each do |attribute|
126
- if @parent_resource.respond_to?(attribute) && @resource.respond_to?(attribute)
127
- parent_value = @parent_resource.send(attribute)
128
- child_value = @resource.send(attribute)
129
- if parent_value || child_value
130
- @resource.send(attribute, parent_value)
131
- end
132
- end
118
+ inherited_attributes.each do |attribute|
119
+ if @parent_resource.respond_to?(attribute) && @resource.respond_to?(attribute)
120
+ parent_value = @parent_resource.send(attribute)
121
+ @resource.send(attribute, parent_value)
133
122
  end
134
123
  end
135
124
  end