chef 16.2.50-universal-mingw32 → 16.4.38-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (377) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +3 -16
  4. data/chef-universal-mingw32.gemspec +2 -3
  5. data/chef.gemspec +4 -3
  6. data/lib/chef/action_collection.rb +4 -0
  7. data/lib/chef/api_client/registration.rb +2 -2
  8. data/lib/chef/application.rb +13 -1
  9. data/lib/chef/application/apply.rb +6 -5
  10. data/lib/chef/application/windows_service.rb +27 -27
  11. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  12. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  13. data/lib/chef/chef_class.rb +0 -1
  14. data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
  15. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  16. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  17. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  19. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  20. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  21. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  22. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  25. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  26. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  27. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  28. data/lib/chef/client.rb +14 -14
  29. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  30. data/lib/chef/cookbook/syntax_check.rb +1 -2
  31. data/lib/chef/cookbook_loader.rb +15 -29
  32. data/lib/chef/data_bag.rb +1 -2
  33. data/lib/chef/data_collector/run_end_message.rb +11 -1
  34. data/lib/chef/deprecated.rb +8 -0
  35. data/lib/chef/digester.rb +3 -2
  36. data/lib/chef/dsl/platform_introspection.rb +9 -7
  37. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  38. data/lib/chef/environment.rb +3 -4
  39. data/lib/chef/exceptions.rb +4 -1
  40. data/lib/chef/file_access_control/windows.rb +2 -2
  41. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  42. data/lib/chef/file_content_management/tempfile.rb +9 -9
  43. data/lib/chef/handler.rb +2 -0
  44. data/lib/chef/http.rb +12 -12
  45. data/lib/chef/http/authenticator.rb +3 -1
  46. data/lib/chef/json_compat.rb +1 -1
  47. data/lib/chef/knife.rb +4 -4
  48. data/lib/chef/knife/bootstrap.rb +18 -15
  49. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  50. data/lib/chef/knife/config_get.rb +1 -0
  51. data/lib/chef/knife/config_list_profiles.rb +4 -1
  52. data/lib/chef/knife/configure.rb +1 -1
  53. data/lib/chef/knife/cookbook_download.rb +1 -1
  54. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  55. data/lib/chef/knife/cookbook_upload.rb +29 -37
  56. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  57. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  58. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  59. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  60. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  61. data/lib/chef/knife/core/ui.rb +8 -2
  62. data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
  63. data/lib/chef/knife/delete.rb +15 -15
  64. data/lib/chef/knife/exec.rb +2 -2
  65. data/lib/chef/knife/rehash.rb +3 -21
  66. data/lib/chef/knife/ssh.rb +11 -7
  67. data/lib/chef/knife/xargs.rb +19 -19
  68. data/lib/chef/knife/yaml_convert.rb +1 -1
  69. data/lib/chef/log.rb +7 -2
  70. data/lib/chef/mixin/checksum.rb +0 -1
  71. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  72. data/lib/chef/mixin/deep_merge.rb +35 -6
  73. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  74. data/lib/chef/mixin/openssl_helper.rb +30 -6
  75. data/lib/chef/mixin/path_sanity.rb +5 -4
  76. data/lib/chef/mixin/shell_out.rb +4 -188
  77. data/lib/chef/mixin/template.rb +1 -0
  78. data/lib/chef/mixin/which.rb +6 -3
  79. data/lib/chef/mixins.rb +1 -0
  80. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  81. data/lib/chef/node.rb +36 -12
  82. data/lib/chef/node/attribute.rb +2 -4
  83. data/lib/chef/node_map.rb +21 -18
  84. data/lib/chef/platform/service_helpers.rb +31 -28
  85. data/lib/chef/property.rb +1 -1
  86. data/lib/chef/provider/cron/unix.rb +0 -2
  87. data/lib/chef/provider/git.rb +17 -9
  88. data/lib/chef/provider/group.rb +0 -2
  89. data/lib/chef/provider/group/suse.rb +5 -5
  90. data/lib/chef/provider/ifconfig.rb +1 -4
  91. data/lib/chef/provider/mount.rb +0 -2
  92. data/lib/chef/provider/mount/solaris.rb +0 -1
  93. data/lib/chef/provider/package.rb +0 -2
  94. data/lib/chef/provider/package/rubygems.rb +1 -1
  95. data/lib/chef/provider/package/snap.rb +3 -4
  96. data/lib/chef/provider/package/windows.rb +9 -4
  97. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  98. data/lib/chef/provider/package/zypper.rb +0 -1
  99. data/lib/chef/provider/powershell_script.rb +21 -5
  100. data/lib/chef/provider/route.rb +1 -1
  101. data/lib/chef/provider/service.rb +2 -2
  102. data/lib/chef/provider/service/arch.rb +1 -1
  103. data/lib/chef/provider/service/debian.rb +1 -1
  104. data/lib/chef/provider/service/gentoo.rb +2 -2
  105. data/lib/chef/provider/service/macosx.rb +2 -2
  106. data/lib/chef/provider/service/openbsd.rb +1 -4
  107. data/lib/chef/provider/service/redhat.rb +2 -2
  108. data/lib/chef/provider/service/upstart.rb +1 -1
  109. data/lib/chef/provider/service/windows.rb +10 -10
  110. data/lib/chef/provider/systemd_unit.rb +0 -2
  111. data/lib/chef/provider/template/content.rb +1 -0
  112. data/lib/chef/provider/user/dscl.rb +2 -2
  113. data/lib/chef/provider/user/mac.rb +9 -9
  114. data/lib/chef/provider/windows_task.rb +0 -3
  115. data/lib/chef/provider/yum_repository.rb +1 -1
  116. data/lib/chef/provider/zypper_repository.rb +1 -2
  117. data/lib/chef/providers.rb +0 -1
  118. data/lib/chef/recipe.rb +1 -1
  119. data/lib/chef/resource.rb +9 -11
  120. data/lib/chef/resource/apt_repository.rb +1 -10
  121. data/lib/chef/resource/build_essential.rb +2 -2
  122. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  123. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  124. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  125. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  126. data/lib/chef/resource/cron/cron_d.rb +1 -1
  127. data/lib/chef/resource/cron_access.rb +2 -2
  128. data/lib/chef/resource/dmg_package.rb +1 -1
  129. data/lib/chef/resource/execute.rb +4 -5
  130. data/lib/chef/resource/homebrew_update.rb +2 -2
  131. data/lib/chef/resource/hostname.rb +18 -18
  132. data/lib/chef/resource/launchd.rb +1 -1
  133. data/lib/chef/resource/lwrp_base.rb +1 -0
  134. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  135. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  136. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  137. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  138. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  139. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  140. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  141. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  142. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  143. data/lib/chef/resource/osx_profile.rb +227 -5
  144. data/lib/chef/resource/powershell_package_source.rb +1 -1
  145. data/lib/chef/resource/powershell_script.rb +24 -30
  146. data/lib/chef/resource/service.rb +2 -2
  147. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  148. data/lib/chef/resource/sudo.rb +2 -2
  149. data/lib/chef/resource/sysctl.rb +5 -5
  150. data/lib/chef/resource/user_ulimit.rb +1 -1
  151. data/lib/chef/resource/windows_ad_join.rb +2 -0
  152. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  153. data/lib/chef/resource/windows_auto_run.rb +2 -0
  154. data/lib/chef/resource/windows_certificate.rb +2 -0
  155. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  156. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  157. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  158. data/lib/chef/resource/windows_dns_record.rb +25 -5
  159. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  160. data/lib/chef/resource/windows_feature.rb +2 -0
  161. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  162. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  163. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  164. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  165. data/lib/chef/resource/windows_font.rb +3 -1
  166. data/lib/chef/resource/windows_pagefile.rb +4 -0
  167. data/lib/chef/resource/windows_printer.rb +17 -18
  168. data/lib/chef/resource/windows_printer_port.rb +14 -13
  169. data/lib/chef/resource/windows_security_policy.rb +51 -20
  170. data/lib/chef/resource/windows_share.rb +5 -3
  171. data/lib/chef/resource/windows_shortcut.rb +2 -0
  172. data/lib/chef/resource/windows_uac.rb +2 -0
  173. data/lib/chef/resource/windows_user_privilege.rb +27 -2
  174. data/lib/chef/resource/windows_workgroup.rb +2 -3
  175. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  176. data/lib/chef/resource_inspector.rb +7 -1
  177. data/lib/chef/resources.rb +1 -0
  178. data/lib/chef/role.rb +3 -4
  179. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  180. data/lib/chef/run_status.rb +2 -6
  181. data/lib/chef/server_api_versions.rb +4 -0
  182. data/lib/chef/shell.rb +1 -1
  183. data/lib/chef/shell/shell_session.rb +2 -0
  184. data/lib/chef/util/backup.rb +1 -1
  185. data/lib/chef/util/diff.rb +11 -12
  186. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  187. data/lib/chef/version.rb +2 -2
  188. data/lib/chef/win32/file.rb +2 -2
  189. data/lib/chef/win32/file/version_info.rb +5 -5
  190. data/lib/chef/win32/registry.rb +1 -2
  191. data/spec/data/ssl/chef-rspec.cert +15 -15
  192. data/spec/functional/knife/configure_spec.rb +1 -1
  193. data/spec/functional/knife/ssh_spec.rb +5 -16
  194. data/spec/functional/resource/aix_service_spec.rb +9 -2
  195. data/spec/functional/resource/aixinit_service_spec.rb +8 -9
  196. data/spec/functional/resource/apt_package_spec.rb +0 -1
  197. data/spec/functional/resource/bash_spec.rb +3 -2
  198. data/spec/functional/resource/bff_spec.rb +3 -3
  199. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  200. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  201. data/spec/functional/resource/cron_spec.rb +10 -2
  202. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  203. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  204. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  205. data/spec/functional/resource/execute_spec.rb +1 -1
  206. data/spec/functional/resource/git_spec.rb +23 -1
  207. data/spec/functional/resource/group_spec.rb +21 -9
  208. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  209. data/spec/functional/resource/insserv_spec.rb +7 -7
  210. data/spec/functional/resource/link_spec.rb +22 -25
  211. data/spec/functional/resource/mount_spec.rb +9 -1
  212. data/spec/functional/resource/msu_package_spec.rb +9 -3
  213. data/spec/functional/resource/powershell_script_spec.rb +8 -8
  214. data/spec/functional/resource/remote_file_spec.rb +7 -13
  215. data/spec/functional/resource/rpm_spec.rb +3 -3
  216. data/spec/functional/resource/timezone_spec.rb +2 -0
  217. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  218. data/spec/functional/resource/windows_font_spec.rb +49 -0
  219. data/spec/functional/resource/windows_package_spec.rb +0 -1
  220. data/spec/functional/resource/windows_path_spec.rb +4 -0
  221. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  222. data/spec/functional/resource/windows_service_spec.rb +4 -0
  223. data/spec/functional/resource/windows_task_spec.rb +4 -3
  224. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  225. data/spec/functional/resource/yum_package_spec.rb +4 -1
  226. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  227. data/spec/functional/run_lock_spec.rb +26 -25
  228. data/spec/functional/shell_spec.rb +5 -6
  229. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  230. data/spec/functional/version_spec.rb +1 -1
  231. data/spec/functional/win32/crypto_spec.rb +1 -1
  232. data/spec/functional/win32/registry_spec.rb +8 -8
  233. data/spec/functional/win32/service_manager_spec.rb +1 -1
  234. data/spec/integration/knife/common_options_spec.rb +12 -12
  235. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  236. data/spec/integration/knife/config_get_spec.rb +126 -125
  237. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  238. data/spec/integration/knife/config_use_profile_spec.rb +110 -109
  239. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  240. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  241. data/spec/integration/knife/diff_spec.rb +3 -1
  242. data/spec/integration/knife/download_spec.rb +3 -1
  243. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  244. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  245. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  246. data/spec/integration/knife/serve_spec.rb +5 -5
  247. data/spec/integration/knife/upload_spec.rb +3 -1
  248. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  249. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  250. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  251. data/spec/integration/recipes/notifies_spec.rb +1 -1
  252. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  253. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  254. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  255. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  256. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  257. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  258. data/spec/scripts/ssl-serve.rb +1 -1
  259. data/spec/spec_helper.rb +16 -10
  260. data/spec/support/chef_helpers.rb +1 -20
  261. data/spec/support/platform_helpers.rb +9 -11
  262. data/spec/support/platforms/win32/spec_service.rb +1 -1
  263. data/spec/support/shared/functional/directory_resource.rb +1 -1
  264. data/spec/support/shared/functional/execute_resource.rb +1 -1
  265. data/spec/support/shared/functional/file_resource.rb +20 -21
  266. data/spec/support/shared/functional/securable_resource.rb +1 -2
  267. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  268. data/spec/support/shared/functional/win32_service.rb +1 -1
  269. data/spec/support/shared/functional/windows_script.rb +5 -5
  270. data/spec/support/shared/integration/integration_helper.rb +22 -52
  271. data/spec/support/shared/integration/knife_support.rb +2 -9
  272. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  273. data/spec/support/shared/unit/provider/file.rb +12 -8
  274. data/spec/support/shared/unit/script_resource.rb +6 -20
  275. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  276. data/spec/unit/application/solo_spec.rb +4 -2
  277. data/spec/unit/application_spec.rb +4 -2
  278. data/spec/unit/chef_fs/config_spec.rb +2 -2
  279. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  280. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  281. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  282. data/spec/unit/client_spec.rb +4 -1
  283. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  284. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  285. data/spec/unit/data_bag_spec.rb +6 -3
  286. data/spec/unit/data_collector_spec.rb +29 -1
  287. data/spec/unit/decorator_spec.rb +23 -23
  288. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  289. data/spec/unit/environment_spec.rb +12 -8
  290. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  291. data/spec/unit/guard_interpreter_spec.rb +1 -1
  292. data/spec/unit/http/api_versions_spec.rb +20 -2
  293. data/spec/unit/json_compat_spec.rb +1 -1
  294. data/spec/unit/knife/bootstrap_spec.rb +17 -20
  295. data/spec/unit/knife/cookbook_download_spec.rb +6 -6
  296. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  297. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  298. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  299. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  300. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  301. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  302. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  303. data/spec/unit/log/syslog_spec.rb +6 -10
  304. data/spec/unit/log/winevt_spec.rb +21 -13
  305. data/spec/unit/lwrp_spec.rb +9 -6
  306. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  307. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  308. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  309. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  310. data/spec/unit/mixin/securable_spec.rb +0 -1
  311. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  312. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  313. data/spec/unit/mixin/template_spec.rb +30 -30
  314. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  315. data/spec/unit/mixin/uris_spec.rb +1 -1
  316. data/spec/unit/mixin/which.rb +8 -0
  317. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  318. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  319. data/spec/unit/node_spec.rb +103 -16
  320. data/spec/unit/property_spec.rb +5 -5
  321. data/spec/unit/provider/batch_spec.rb +1 -1
  322. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  323. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  324. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  325. data/spec/unit/provider/execute_spec.rb +1 -8
  326. data/spec/unit/provider/git_spec.rb +3 -3
  327. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  328. data/spec/unit/provider/mdadm_spec.rb +1 -3
  329. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  330. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  331. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  332. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  333. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  334. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  335. data/spec/unit/provider/package/windows_spec.rb +30 -53
  336. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  337. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  338. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  339. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  340. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  341. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  342. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  343. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  344. data/spec/unit/provider/service/windows_spec.rb +2 -6
  345. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  346. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  347. data/spec/unit/provider/windows_env_spec.rb +5 -4
  348. data/spec/unit/provider_resolver_spec.rb +6 -6
  349. data/spec/unit/provider_spec.rb +1 -0
  350. data/spec/unit/resource/batch_spec.rb +6 -6
  351. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  352. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  353. data/spec/unit/resource/execute_spec.rb +123 -118
  354. data/spec/unit/resource/file/verification_spec.rb +2 -1
  355. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  356. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  357. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  358. data/spec/unit/resource/script_spec.rb +6 -1
  359. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  360. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  361. data/spec/unit/resource/windows_package_spec.rb +1 -0
  362. data/spec/unit/resource_reporter_spec.rb +1 -1
  363. data/spec/unit/resource_spec.rb +25 -8
  364. data/spec/unit/role_spec.rb +30 -28
  365. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  366. data/spec/unit/run_lock_spec.rb +1 -1
  367. data/spec/unit/scan_access_control_spec.rb +1 -1
  368. data/spec/unit/server_api_spec.rb +43 -16
  369. data/spec/unit/util/backup_spec.rb +1 -1
  370. data/spec/unit/util/diff_spec.rb +1 -15
  371. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  372. data/spec/unit/util/selinux_spec.rb +2 -1
  373. data/spec/unit/win32/security_spec.rb +4 -3
  374. data/tasks/rspec.rb +1 -1
  375. metadata +53 -40
  376. data/lib/chef/provider/osx_profile.rb +0 -255
  377. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -86,7 +86,7 @@ class Chef
86
86
  end
87
87
 
88
88
  action :periodic do
89
- return unless mac_os_x?
89
+ return unless macos?
90
90
 
91
91
  unless brew_up_to_date?
92
92
  converge_by "update new lists of packages" do
@@ -96,7 +96,7 @@ class Chef
96
96
  end
97
97
 
98
98
  action :update do
99
- return unless mac_os_x?
99
+ return unless macos?
100
100
 
101
101
  converge_by "force update new lists of packages" do
102
102
  do_update
@@ -87,8 +87,7 @@ class Chef
87
87
  def updated_ec2_config_xml
88
88
  begin
89
89
  require "rexml/document" unless defined?(REXML::Document)
90
- config_file = 'C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml'
91
- config = REXML::Document.new(::File.read(config_file))
90
+ config = REXML::Document.new(::File.read(WINDOWS_EC2_CONFIG))
92
91
  # find an element named State with a sibling element whose value is Ec2SetComputerName
93
92
  REXML::XPath.each(config, "//Plugin/State[../Name/text() = 'Ec2SetComputerName']") do |element|
94
93
  element.text = "Disabled"
@@ -223,35 +222,36 @@ class Chef
223
222
  end
224
223
 
225
224
  else # windows
225
+ WINDOWS_EC2_CONFIG = 'C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml'.freeze
226
+
226
227
  raise "Windows hostnames cannot contain a period." if new_resource.hostname.match?(/\./)
227
228
 
228
229
  # suppress EC2 config service from setting our hostname
229
- if ::File.exist?('C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml')
230
+ if ::File.exist?(WINDOWS_EC2_CONFIG)
230
231
  xml_contents = updated_ec2_config_xml
231
232
  if xml_contents.empty?
232
233
  Chef::Log.warn('Unable to properly parse and update C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml contents. Skipping file update.')
233
234
  else
234
- declare_resource(:file, 'C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml') do
235
+ file WINDOWS_EC2_CONFIG do
235
236
  content xml_contents
236
237
  end
237
238
  end
238
239
  end
239
240
 
240
- # update via netdom
241
- declare_resource(:powershell_script, "set hostname") do
242
- code <<-EOH
243
- $sysInfo = Get-WmiObject -Class Win32_ComputerSystem
244
- $sysInfo.Rename("#{new_resource.hostname}")
245
- EOH
246
- notifies :request_reboot, "reboot[setting hostname]"
247
- not_if { Socket.gethostbyname(Socket.gethostname).first == new_resource.hostname }
248
- end
241
+ unless Socket.gethostbyname(Socket.gethostname).first == new_resource.hostname
242
+ converge_by "set hostname to #{new_resource.hostname}" do
243
+ powershell_out! <<~EOH
244
+ $sysInfo = Get-WmiObject -Class Win32_ComputerSystem
245
+ $sysInfo.Rename("#{new_resource.hostname}")
246
+ EOH
247
+ end
249
248
 
250
- # reboot because $windows
251
- declare_resource(:reboot, "setting hostname") do
252
- reason "#{Chef::Dist::PRODUCT} updated system hostname"
253
- action :nothing
254
- only_if { new_resource.windows_reboot }
249
+ # reboot because $windows
250
+ reboot "setting hostname" do
251
+ reason "#{Chef::Dist::PRODUCT} updated system hostname"
252
+ only_if { new_resource.windows_reboot }
253
+ action :request_reboot
254
+ end
255
255
  end
256
256
  end
257
257
  end
@@ -68,7 +68,7 @@ class Chef
68
68
  # check. According to `man 5 launchd.plist`:
69
69
  # StartCalendarInterval <dictionary of integers or array of dictionaries of integers>
70
70
  # ... Missing arguments are considered to be wildcard.
71
- # What the man page doesn't state, but what was observed (OSX 10.11.5, launchctrl v3.4.0)
71
+ # What the man page doesn't state, but what was observed (OSX 10.11.5, launchctl v3.4.0)
72
72
  # Is that keys that are specified, but invalid, will also be treated as a wildcard
73
73
  # this means that an entry like:
74
74
  # { "Hour"=>0, "Weekday"=>"6-7"}
@@ -103,6 +103,7 @@ class Chef
103
103
  protected
104
104
 
105
105
  attr_writer :loaded_lwrps
106
+
106
107
  def loaded_lwrps
107
108
  @loaded_lwrps ||= {}
108
109
  end
@@ -16,6 +16,8 @@
16
16
  #
17
17
 
18
18
  require_relative "../resource"
19
+ require_relative "../dist"
20
+ require "plist"
19
21
 
20
22
  class Chef
21
23
  class Resource
@@ -28,99 +30,210 @@ class Chef
28
30
 
29
31
  description "Use the **macos_userdefaults** resource to manage the macOS user defaults system. The properties of this resource are passed to the defaults command, and the parameters follow the convention of that command. See the defaults(1) man page for details on how the tool works."
30
32
  introduced "14.0"
33
+ examples <<~DOC
34
+ **Specify a global domain value**
35
+
36
+ ```ruby
37
+ macos_userdefaults 'Full keyboard access to all controls' do
38
+ key 'AppleKeyboardUIMode'
39
+ value 2
40
+ end
41
+ ```
42
+
43
+ **Setting a value on a specific domain**
44
+
45
+ ```ruby
46
+ macos_userdefaults 'Enable macOS firewall' do
47
+ domain '/Library/Preferences/com.apple.alf'
48
+ key 'globalstate'
49
+ value 1
50
+ end
51
+ ```
52
+
53
+ **Specifying the type of a key to skip automatic type detection**
54
+
55
+ ```ruby
56
+ macos_userdefaults 'Finder expanded save dialogs' do
57
+ key 'NSNavPanelExpandedStateForSaveMode'
58
+ value 'TRUE'
59
+ type 'bool'
60
+ end
61
+ ```
62
+ DOC
31
63
 
32
64
  property :domain, String,
33
65
  description: "The domain that the user defaults belong to.",
34
- required: true
66
+ default: "NSGlobalDomain",
67
+ default_description: "NSGlobalDomain: the global domain.",
68
+ desired_state: false
35
69
 
36
70
  property :global, [TrueClass, FalseClass],
37
71
  description: "Determines whether or not the domain is global.",
38
- default: false
72
+ deprecated: true,
73
+ default: false,
74
+ desired_state: false
39
75
 
40
76
  property :key, String,
41
- description: "The preference key."
77
+ description: "The preference key.",
78
+ required: true
79
+
80
+ property :host, [String, Symbol],
81
+ description: "Set either :current or a hostname to set the user default at the host level.",
82
+ desired_state: false,
83
+ introduced: "16.3"
42
84
 
43
85
  property :value, [Integer, Float, String, TrueClass, FalseClass, Hash, Array],
44
- description: "The value of the key.",
45
- required: true
86
+ description: "The value of the key. Note: With the `type` property set to `bool`, `String` forms of Boolean true/false values that Apple accepts in the defaults command will be coerced: 0/1, 'TRUE'/'FALSE,' 'true'/false', 'YES'/'NO', or 'yes'/'no'.",
87
+ required: [:write],
88
+ coerce: proc { |v| v.is_a?(Hash) ? v.transform_keys(&:to_s) : v } # make sure keys are all strings for comparison
46
89
 
47
90
  property :type, String,
48
91
  description: "The value type of the preference key.",
49
- default: ""
92
+ equal_to: %w{bool string int float array dict},
93
+ desired_state: false
50
94
 
51
95
  property :user, String,
52
- description: "The system user that the default will be applied to."
96
+ description: "The system user that the default will be applied to.",
97
+ desired_state: false
53
98
 
54
99
  property :sudo, [TrueClass, FalseClass],
55
- description: "Set to true if the setting you wish to modify requires privileged access.",
100
+ description: "Set to true if the setting you wish to modify requires privileged access. This requires passwordless sudo for the '/usr/bin/defaults' command to be setup for the user running #{Chef::Dist::PRODUCT}.",
56
101
  default: false,
57
102
  desired_state: false
58
103
 
59
- # @todo this should get refactored away: https://github.com/chef/chef/issues/7622
60
- property :is_set, [TrueClass, FalseClass],
61
- default: false,
62
- desired_state: false,
63
- skip_docs: true
104
+ load_current_value do |desired|
105
+ Chef::Log.debug "#load_current_value: shelling out \"#{defaults_export_cmd(desired).join(" ")}\" to determine state"
106
+ state = shell_out(defaults_export_cmd(desired), user: desired.user)
64
107
 
65
- # coerce various ways of representing a boolean into either 0 (false) or 1 (true)
66
- # which is what the defaults CLI expects. Why? Well defaults itself accepts a few
67
- # different formats, but when you do a read command it all comes back as 1 or 0.
68
- def coerce_booleans(val)
69
- return 1 if [true, "TRUE", "1", "true", "YES", "yes"].include?(val)
70
- return 0 if [false, "FALSE", "0", "false", "NO", "no"].include?(val)
108
+ if state.error? || state.stdout.empty?
109
+ Chef::Log.debug "#load_current_value: #{defaults_export_cmd(desired).join(" ")} returned stdout: #{state.stdout} and stderr: #{state.stderr}"
110
+ current_value_does_not_exist!
111
+ end
112
+
113
+ plist_data = ::Plist.parse_xml(state.stdout)
114
+
115
+ # handle the situation where the key doesn't exist in the domain
116
+ if plist_data.key?(desired.key)
117
+ key desired.key
118
+ else
119
+ current_value_does_not_exist!
120
+ end
71
121
 
72
- val
122
+ value plist_data[desired.key]
73
123
  end
74
124
 
75
- load_current_value do |desired|
76
- value = coerce_booleans(desired.value)
77
- cmd = "defaults read '#{desired.domain}' "
78
- cmd << "'#{desired.key}' " if desired.key
79
- cmd << " | grep -qx '#{value}'"
80
-
81
- vc = if desired.user.nil?
82
- shell_out(cmd)
83
- else
84
- shell_out(cmd, user: desired.user)
85
- end
86
-
87
- is_set !vc.error?
125
+ #
126
+ # The defaults command to export a domain
127
+ #
128
+ # @return [Array] defaults command
129
+ #
130
+ def defaults_export_cmd(resource)
131
+ state_cmd = ["/usr/bin/defaults"]
132
+
133
+ if resource.host == "current"
134
+ state_cmd.concat(["-currentHost"])
135
+ elsif resource.host # they specified a non-nil value, which is a hostname
136
+ state_cmd.concat(["-host", resource.host])
137
+ end
138
+
139
+ state_cmd.concat(["export", resource.domain, "-"])
140
+ state_cmd
88
141
  end
89
142
 
90
143
  action :write do
91
- description "Write the setting to the specified domain"
92
-
93
- unless current_resource.is_set
94
- cmd = ["defaults write"]
95
- cmd.unshift("sudo") if new_resource.sudo
96
-
97
- cmd << if new_resource.global
98
- "NSGlobalDomain"
99
- else
100
- "'#{new_resource.domain}'"
101
- end
102
-
103
- cmd << "'#{new_resource.key}'" if new_resource.key
104
- value = new_resource.value
105
- type = new_resource.type.empty? ? value_type(value) : new_resource.type
106
- # creates a string of Key1 Value1 Key2 Value2...
107
- value = value.map { |k, v| "\"#{k}\" \"#{v}\"" }.join(" ") if type == "dict"
108
- if type == "array"
109
- value = value.join("' '")
110
- value = "'#{value}'"
111
- end
112
- cmd << "-#{type}" if type
113
- cmd << value
144
+ description "Write the value to the specified domain/key."
114
145
 
115
- # FIXME: this should use cmd directly as an array argument, but then the quoting
116
- # of individual args above needs to be removed as well.
117
- execute cmd.join(" ") do
118
- user new_resource.user unless new_resource.user.nil?
119
- end
146
+ converge_if_changed do
147
+ cmd = defaults_modify_cmd
148
+ Chef::Log.debug("Updating defaults value by shelling out: #{cmd.join(" ")}")
149
+
150
+ shell_out!(cmd, user: new_resource.user)
151
+ end
152
+ end
153
+
154
+ action :delete do
155
+ description "Delete a key from a domain."
156
+
157
+ # if it's not there there's nothing to remove
158
+ return unless current_resource
159
+
160
+ converge_by("delete domain:#{new_resource.domain} key:#{new_resource.key}") do
161
+
162
+ cmd = defaults_modify_cmd
163
+ Chef::Log.debug("Removing defaults key by shelling out: #{cmd.join(" ")}")
164
+
165
+ shell_out!(cmd, user: new_resource.user)
120
166
  end
121
167
  end
122
168
 
123
169
  action_class do
170
+ #
171
+ # The command used to write or delete delete values from domains
172
+ #
173
+ # @return [Array] Array representation of defaults command to run
174
+ #
175
+ def defaults_modify_cmd
176
+ cmd = ["/usr/bin/defaults"]
177
+
178
+ if new_resource.host == :current
179
+ cmd.concat(["-currentHost"])
180
+ elsif new_resource.host # they specified a non-nil value, which is a hostname
181
+ cmd.concat(["-host", new_resource.host])
182
+ end
183
+
184
+ cmd.concat([action.to_s, new_resource.domain, new_resource.key])
185
+ cmd.concat(processed_value) if action == :write
186
+ cmd.prepend("sudo") if new_resource.sudo
187
+ cmd
188
+ end
189
+
190
+ #
191
+ # convert the provided value into the format defaults expects
192
+ #
193
+ # @return [array] array of values starting with the type if applicable
194
+ #
195
+ def processed_value
196
+ type = new_resource.type || value_type(new_resource.value)
197
+
198
+ # when dict this creates an array of values ["Key1", "Value1", "Key2", "Value2" ...]
199
+ cmd_values = ["-#{type}"]
200
+
201
+ case type
202
+ when "dict"
203
+ cmd_values.concat(new_resource.value.flatten)
204
+ when "array"
205
+ cmd_values.concat(new_resource.value)
206
+ when "bool"
207
+ cmd_values.concat(bool_to_defaults_bool(new_resource.value))
208
+ else
209
+ cmd_values.concat([new_resource.value])
210
+ end
211
+
212
+ cmd_values
213
+ end
214
+
215
+ #
216
+ # defaults booleans on the CLI must be 'TRUE' or 'FALSE' so convert various inputs to that
217
+ #
218
+ # @param [String, Integer, Boolean] input <description>
219
+ #
220
+ # @return [String] TRUE or FALSE
221
+ #
222
+ def bool_to_defaults_bool(input)
223
+ return ["TRUE"] if [true, "TRUE", "1", "true", "YES", "yes"].include?(input)
224
+ return ["FALSE"] if [false, "FALSE", "0", "false", "NO", "no"].include?(input)
225
+
226
+ # make sure it's very clear bad input was given
227
+ raise ArgumentError, "#{input} cannot be converted to a boolean value for use with Apple's defaults command. Acceptable values are: 'TRUE', 'YES', 'true, 'yes', '0', true, 'FALSE', 'false', 'NO', 'no', '1', or false."
228
+ end
229
+
230
+ #
231
+ # convert ruby type to defaults type
232
+ #
233
+ # @param [Integer, Float, String, TrueClass, FalseClass, Hash, Array] value The value being set
234
+ #
235
+ # @return [string, nil] the type value used by defaults or nil if not applicable
236
+ #
124
237
  def value_type(value)
125
238
  case value
126
239
  when true, false
@@ -133,6 +246,8 @@ class Chef
133
246
  "dict"
134
247
  when Array
135
248
  "array"
249
+ when String
250
+ "string"
136
251
  end
137
252
  end
138
253
  end
@@ -23,6 +23,8 @@ class Chef
23
23
  require_relative "../mixin/openssl_helper"
24
24
  include Chef::Mixin::OpenSSLHelper
25
25
 
26
+ unified_mode true
27
+
26
28
  provides(:openssl_dhparam) { true }
27
29
 
28
30
  description "Use the **openssl_dhparam** resource to generate dhparam.pem files. If a valid dhparam.pem file is found at the specified location, no new file will be created. If a file is found at the specified location but it is not a valid dhparam file, it will be overwritten."
@@ -24,6 +24,8 @@ class Chef
24
24
  require_relative "../mixin/openssl_helper"
25
25
  include Chef::Mixin::OpenSSLHelper
26
26
 
27
+ unified_mode true
28
+
27
29
  provides :openssl_ec_private_key
28
30
 
29
31
  description "Use the **openssl_ec_private_key** resource to generate an elliptic curve (EC) private key file. If a valid EC key file can be opened at the specified location, no new file will be created. If the EC key file cannot be opened, either because it does not exist or because the password to the EC key file does not match the password in the recipe, then it will be overwritten."
@@ -24,6 +24,8 @@ class Chef
24
24
  require_relative "../mixin/openssl_helper"
25
25
  include Chef::Mixin::OpenSSLHelper
26
26
 
27
+ unified_mode true
28
+
27
29
  provides :openssl_ec_public_key
28
30
 
29
31
  description "Use the **openssl_ec_public_key** resource to generate elliptic curve (EC) public key files from a given EC private key."
@@ -23,6 +23,8 @@ class Chef
23
23
  require_relative "../mixin/openssl_helper"
24
24
  include Chef::Mixin::OpenSSLHelper
25
25
 
26
+ unified_mode true
27
+
26
28
  provides(:openssl_rsa_private_key) { true }
27
29
  provides(:openssl_rsa_key) { true } # legacy cookbook resource name
28
30
 
@@ -23,6 +23,8 @@ class Chef
23
23
  require_relative "../mixin/openssl_helper"
24
24
  include Chef::Mixin::OpenSSLHelper
25
25
 
26
+ unified_mode true
27
+
26
28
  provides(:openssl_rsa_public_key) { true }
27
29
 
28
30
  examples <<~DOC
@@ -24,6 +24,8 @@ class Chef
24
24
  require_relative "../mixin/openssl_helper"
25
25
  include Chef::Mixin::OpenSSLHelper
26
26
 
27
+ unified_mode true
28
+
27
29
  provides :openssl_x509_certificate
28
30
  provides(:openssl_x509) { true } # legacy cookbook name.
29
31
 
@@ -161,7 +163,7 @@ class Chef
161
163
  content cert.to_pem
162
164
  end
163
165
 
164
- if !new_resource.renew_before_expiry.nil? && cert_need_renewall?(new_resource.path, new_resource.renew_before_expiry)
166
+ if !new_resource.renew_before_expiry.nil? && cert_need_renewal?(new_resource.path, new_resource.renew_before_expiry)
165
167
  file new_resource.path do
166
168
  action :create
167
169
  owner new_resource.owner unless new_resource.owner.nil?
@@ -173,7 +175,7 @@ class Chef
173
175
  end
174
176
 
175
177
  if new_resource.csr_file.nil?
176
- file new_resource.key_file do
178
+ file key_file do
177
179
  action :create_if_missing
178
180
  owner new_resource.owner unless new_resource.owner.nil?
179
181
  group new_resource.group unless new_resource.group.nil?
@@ -185,54 +187,53 @@ class Chef
185
187
  end
186
188
 
187
189
  action_class do
188
- def generate_key_file
189
- unless new_resource.key_file
190
- path, file = ::File.split(new_resource.path)
191
- filename = ::File.basename(file, ::File.extname(file))
192
- new_resource.key_file path + "/" + filename + ".key"
193
- end
194
- new_resource.key_file
190
+ def key_file
191
+ @key_file ||=
192
+ if new_resource.key_file
193
+ new_resource.key_file
194
+ else
195
+ path, file = ::File.split(new_resource.path)
196
+ filename = ::File.basename(file, ::File.extname(file))
197
+ path + "/" + filename + ".key"
198
+ end
195
199
  end
196
200
 
197
201
  def key
198
- @key ||= if priv_key_file_valid?(generate_key_file, new_resource.key_pass)
199
- OpenSSL::PKey.read ::File.read(generate_key_file), new_resource.key_pass
202
+ @key ||= if priv_key_file_valid?(key_file, new_resource.key_pass)
203
+ OpenSSL::PKey.read ::File.read(key_file), new_resource.key_pass
200
204
  elsif new_resource.key_type == "rsa"
201
205
  gen_rsa_priv_key(new_resource.key_length)
202
206
  else
203
207
  gen_ec_priv_key(new_resource.key_curve)
204
208
  end
205
- @key
206
209
  end
207
210
 
208
211
  def request
209
- request = if new_resource.csr_file.nil?
210
- gen_x509_request(subject, key)
211
- else
212
- OpenSSL::X509::Request.new ::File.read(new_resource.csr_file)
213
- end
214
- request
212
+ if new_resource.csr_file.nil?
213
+ gen_x509_request(subject, key)
214
+ else
215
+ OpenSSL::X509::Request.new ::File.read(new_resource.csr_file)
216
+ end
215
217
  end
216
218
 
217
219
  def subject
218
- subject = OpenSSL::X509::Name.new
219
- subject.add_entry("C", new_resource.country) unless new_resource.country.nil?
220
- subject.add_entry("ST", new_resource.state) unless new_resource.state.nil?
221
- subject.add_entry("L", new_resource.city) unless new_resource.city.nil?
222
- subject.add_entry("O", new_resource.org) unless new_resource.org.nil?
223
- subject.add_entry("OU", new_resource.org_unit) unless new_resource.org_unit.nil?
224
- subject.add_entry("CN", new_resource.common_name)
225
- subject.add_entry("emailAddress", new_resource.email) unless new_resource.email.nil?
226
- subject
220
+ OpenSSL::X509::Name.new.tap do |csr_subject|
221
+ csr_subject.add_entry("C", new_resource.country) unless new_resource.country.nil?
222
+ csr_subject.add_entry("ST", new_resource.state) unless new_resource.state.nil?
223
+ csr_subject.add_entry("L", new_resource.city) unless new_resource.city.nil?
224
+ csr_subject.add_entry("O", new_resource.org) unless new_resource.org.nil?
225
+ csr_subject.add_entry("OU", new_resource.org_unit) unless new_resource.org_unit.nil?
226
+ csr_subject.add_entry("CN", new_resource.common_name)
227
+ csr_subject.add_entry("emailAddress", new_resource.email) unless new_resource.email.nil?
228
+ end
227
229
  end
228
230
 
229
231
  def ca_private_key
230
- ca_private_key = if new_resource.csr_file.nil?
231
- key
232
- else
233
- OpenSSL::PKey.read ::File.read(new_resource.ca_key_file), new_resource.ca_key_pass
234
- end
235
- ca_private_key
232
+ if new_resource.csr_file.nil?
233
+ key
234
+ else
235
+ OpenSSL::PKey.read ::File.read(new_resource.ca_key_file), new_resource.ca_key_pass
236
+ end
236
237
  end
237
238
 
238
239
  def ca_info
@@ -258,8 +259,7 @@ class Chef
258
259
  end
259
260
 
260
261
  def cert
261
- cert = gen_x509_cert(request, extensions, ca_info, ca_private_key)
262
- cert
262
+ gen_x509_cert(request, extensions, ca_info, ca_private_key)
263
263
  end
264
264
  end
265
265
  end