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
@@ -26,6 +26,39 @@ class Chef
26
26
 
27
27
  description "Use the **ohai_hint** resource to aid in configuration detection by passing hint data to Ohai."
28
28
  introduced "14.0"
29
+ examples <<~DOC
30
+ **Create a hint file**
31
+
32
+ ```ruby
33
+ ohai_hint 'example' do
34
+ content a: 'test_content'
35
+ end
36
+ ```
37
+
38
+ **Create a hint file with a name that does not match the resource name**
39
+
40
+ ```ruby
41
+ ohai_hint 'example' do
42
+ hint_name 'custom'
43
+ end
44
+ ```
45
+
46
+ **Create a hint file that is not loaded at compile time**
47
+
48
+ ```ruby
49
+ ohai_hint 'example' do
50
+ compile_time false
51
+ end
52
+ ```
53
+
54
+ **Delete a hint file**
55
+
56
+ ```ruby
57
+ ohai_hint 'example' do
58
+ action :delete
59
+ end
60
+ ```
61
+ DOC
29
62
 
30
63
  property :hint_name, String,
31
64
  description: "An optional property to set the hint name if it differs from the resource block's name.",
@@ -23,17 +23,41 @@ 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
- 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."
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.pem` file, it will be overwritten."
29
31
  introduced "14.0"
30
32
  examples <<~DOC
31
- Create a 1024bit dhparam file
33
+ **Create a dhparam file**
32
34
 
33
35
  ```ruby
34
- openssl_dhparam '/etc/ssl_files/dhparam.pem' do
35
- key_length 1024
36
- action :create
36
+ openssl_dhparam '/etc/httpd/ssl/dhparam.pem'
37
+ ```
38
+
39
+ **Create a dhparam file with a specific key length**
40
+
41
+ ```ruby
42
+ openssl_dhparam '/etc/httpd/ssl/dhparam.pem' do
43
+ key_length 4096
44
+ end
45
+ ```
46
+
47
+ **Create a dhparam file with specific user/group ownership**
48
+
49
+ ```ruby
50
+ openssl_dhparam '/etc/httpd/ssl/dhparam.pem' do
51
+ owner 'www-data'
52
+ group 'www-data'
53
+ end
54
+ ```
55
+
56
+ **Manually specify the dhparam file path**
57
+
58
+ ```ruby
59
+ openssl_dhparam 'httpd_dhparam' do
60
+ path '/etc/httpd/ssl/dhparam.pem'
37
61
  end
38
62
  ```
39
63
  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_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."
@@ -64,10 +66,13 @@ class Chef
64
66
  description: "The desired passphrase for the key."
65
67
 
66
68
  property :key_cipher, String,
67
- equal_to: OpenSSL::Cipher.ciphers,
68
- validation_message: "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options.",
69
69
  description: "The designed cipher to use when generating your key. Run `openssl list-cipher-algorithms` to see available options.",
70
- default: "des3"
70
+ default: lazy { "des3" },
71
+ default_description: "des3",
72
+ callbacks: {
73
+ "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options." =>
74
+ proc { |v| OpenSSL::Cipher.ciphers.include?(v) },
75
+ }
71
76
 
72
77
  property :owner, [String, Integer],
73
78
  description: "The owner applied to all files created by the resource."
@@ -24,12 +24,14 @@ 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."
30
32
  introduced "14.4"
31
33
  examples <<~DOC
32
- Generate new ec public key from a private key on disk
34
+ **Generate new EC public key from a private key on disk**
33
35
 
34
36
  ```ruby
35
37
  openssl_ec_public_key '/etc/ssl_files/eckey_prime256v1_des3.pub' do
@@ -39,7 +41,7 @@ class Chef
39
41
  end
40
42
  ```
41
43
 
42
- Generate new ec public key by passing in a private key
44
+ **Generate new EC public key by passing in a private key**
43
45
 
44
46
  ```ruby
45
47
  openssl_ec_public_key '/etc/ssl_files/eckey_prime256v1_des3_2.pub' do
@@ -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
 
@@ -63,10 +65,13 @@ class Chef
63
65
  description: "The desired passphrase for the key."
64
66
 
65
67
  property :key_cipher, String,
66
- equal_to: OpenSSL::Cipher.ciphers,
67
- validation_message: "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options.",
68
68
  description: "The designed cipher to use when generating your key. Run `openssl list-cipher-algorithms` to see available options.",
69
- default: "des3"
69
+ default: lazy { "des3" },
70
+ default_description: "des3",
71
+ callbacks: {
72
+ "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options." =>
73
+ proc { |v| OpenSSL::Cipher.ciphers.include?(v) },
74
+ }
70
75
 
71
76
  property :owner, [String, Integer],
72
77
  description: "The owner applied to all files created by the resource."
@@ -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
 
@@ -84,32 +86,32 @@ class Chef
84
86
  description: "The permission mode applied to all files created by the resource."
85
87
 
86
88
  property :country, String,
87
- description: "Value for the C certificate field."
89
+ description: "Value for the `C` certificate field."
88
90
 
89
91
  property :state, String,
90
- description: "Value for the ST certificate field."
92
+ description: "Value for the `ST` certificate field."
91
93
 
92
94
  property :city, String,
93
- description: "Value for the L certificate field."
95
+ description: "Value for the `L` certificate field."
94
96
 
95
97
  property :org, String,
96
- description: "Value for the O certificate field."
98
+ description: "Value for the `O` certificate field."
97
99
 
98
100
  property :org_unit, String,
99
- description: "Value for the OU certificate field."
101
+ description: "Value for the `OU` certificate field."
100
102
 
101
103
  property :common_name, String,
102
- description: "Value for the CN certificate field."
104
+ description: "Value for the `CN` certificate field."
103
105
 
104
106
  property :email, String,
105
- description: "Value for the email certificate field."
107
+ description: "Value for the `email` certificate field."
106
108
 
107
109
  property :extensions, Hash,
108
- description: "Hash of X509 Extensions entries, in format { 'keyUsage' => { 'values' => %w( keyEncipherment digitalSignature), 'critical' => true } }.",
110
+ description: "Hash of X509 Extensions entries, in format `{ 'keyUsage' => { 'values' => %w( keyEncipherment digitalSignature), 'critical' => true } }`.",
109
111
  default: lazy { {} }
110
112
 
111
113
  property :subject_alt_name, Array,
112
- description: "Array of Subject Alternative Name entries, in format DNS:example.com or IP:1.2.3.4.",
114
+ description: "Array of Subject Alternative Name entries, in format `DNS:example.com` or `IP:1.2.3.4`.",
113
115
  default: lazy { [] }
114
116
 
115
117
  property :key_file, String,
@@ -120,7 +122,7 @@ class Chef
120
122
 
121
123
  property :key_type, String,
122
124
  equal_to: %w{rsa ec},
123
- description: "The desired type of the generated key (rsa or ec).",
125
+ description: "The desired type of the generated key.",
124
126
  default: "rsa"
125
127
 
126
128
  property :key_length, Integer,
@@ -129,18 +131,18 @@ class Chef
129
131
  default: 2048
130
132
 
131
133
  property :key_curve, String,
132
- description: "The desired curve of the generated key (if key_type is equal to 'ec'). Run openssl ecparam -list_curves to see available options.",
134
+ description: "The desired curve of the generated key (if key_type is equal to 'ec'). Run `openssl ecparam -list_curves` to see available options.",
133
135
  equal_to: %w{secp384r1 secp521r1 prime256v1},
134
136
  default: "prime256v1"
135
137
 
136
138
  property :csr_file, String,
137
- description: "The path to a X509 Certificate Request (CSR) on the filesystem. If the csr_file property is specified, the resource will attempt to source a CSR from this location. If no CSR file is found, the resource will generate a Self-Signed Certificate and the certificate fields must be specified (common_name at last)."
139
+ description: "The path to a X509 Certificate Request (CSR) on the filesystem. If the `csr_file` property is specified, the resource will attempt to source a CSR from this location. If no CSR file is found, the resource will generate a Self-Signed Certificate and the certificate fields must be specified (common_name at last)."
138
140
 
139
141
  property :ca_cert_file, String,
140
- description: "The path to the CA X509 Certificate on the filesystem. If the ca_cert_file property is specified, the ca_key_file property must also be specified, the certificate will be signed with them."
142
+ description: "The path to the CA X509 Certificate on the filesystem. If the `ca_cert_file` property is specified, the `ca_key_file` property must also be specified, the certificate will be signed with them."
141
143
 
142
144
  property :ca_key_file, String,
143
- description: "The path to the CA private key on the filesystem. If the ca_key_file property is specified, the 'ca_cert_file' property must also be specified, the certificate will be signed with them."
145
+ description: "The path to the CA private key on the filesystem. If the `ca_key_file` property is specified, the `ca_cert_file` property must also be specified, the certificate will be signed with them."
144
146
 
145
147
  property :ca_key_pass, String,
146
148
  description: "The passphrase for CA private key's passphrase."
@@ -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,24 +187,25 @@ 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
@@ -214,15 +217,15 @@ class Chef
214
217
  end
215
218
 
216
219
  def subject
217
- subject = OpenSSL::X509::Name.new
218
- subject.add_entry("C", new_resource.country) unless new_resource.country.nil?
219
- subject.add_entry("ST", new_resource.state) unless new_resource.state.nil?
220
- subject.add_entry("L", new_resource.city) unless new_resource.city.nil?
221
- subject.add_entry("O", new_resource.org) unless new_resource.org.nil?
222
- subject.add_entry("OU", new_resource.org_unit) unless new_resource.org_unit.nil?
223
- subject.add_entry("CN", new_resource.common_name)
224
- subject.add_entry("emailAddress", new_resource.email) unless new_resource.email.nil?
225
- 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
226
229
  end
227
230
 
228
231
  def ca_private_key
@@ -24,20 +24,31 @@ 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_crl
28
30
 
29
31
  description "Use the **openssl_x509_crl** resource to generate PEM-formatted x509 certificate revocation list (CRL) files."
30
32
  introduced "14.4"
31
33
  examples <<~DOC
32
- Generate a CRL file given a cert file and key file
34
+ **Create a certificate revocation file**
33
35
 
34
- ```ruby
35
- openssl_x509_crl '/etc/ssl_files/my_ca2.crl' do
36
- ca_cert_file '/etc/ssl_files/my_ca2.crt'
37
- ca_key_file '/etc/ssl_files/my_ca2.key'
38
- expire 1
39
- end
40
- ```
36
+ ```ruby
37
+ openssl_x509_crl '/etc/ssl_test/my_ca.crl' do
38
+ ca_cert_file '/etc/ssl_test/my_ca.crt'
39
+ ca_key_file '/etc/ssl_test/my_ca.key'
40
+ end
41
+ ```
42
+
43
+ **Create a certificate revocation file for a particular serial**
44
+
45
+ ```ruby
46
+ openssl_x509_crl '/etc/ssl_test/my_ca.crl' do
47
+ ca_cert_file '/etc/ssl_test/my_ca.crt'
48
+ ca_key_file '/etc/ssl_test/my_ca.key'
49
+ serial_to_revoke C7BCB6602A2E4251EF4E2827A228CB52BC0CEA2F
50
+ end
51
+ ```
41
52
  DOC
42
53
 
43
54
  property :path, String,
@@ -60,11 +71,11 @@ class Chef
60
71
  default: 1
61
72
 
62
73
  property :ca_cert_file, String,
63
- description: "The path to the CA X509 Certificate on the filesystem. If the ca_cert_file property is specified, the ca_key_file property must also be specified, the CRL will be signed with them.",
74
+ description: "The path to the CA X509 Certificate on the filesystem. If the `ca_cert_file` property is specified, the `ca_key_file` property must also be specified, the CRL will be signed with them.",
64
75
  required: true
65
76
 
66
77
  property :ca_key_file, String,
67
- description: "The path to the CA private key on the filesystem. If the ca_key_file property is specified, the ca_cert_file property must also be specified, the CRL will be signed with them.",
78
+ description: "The path to the CA private key on the filesystem. If the `ca_key_file` property is specified, the `ca_cert_file` property must also be specified, the CRL will be signed with them.",
68
79
  required: true
69
80
 
70
81
  property :ca_key_pass, String,
@@ -24,12 +24,14 @@ 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_request
28
30
 
29
31
  description "Use the **openssl_x509_request** resource to generate PEM-formatted x509 certificates requests. If no existing key is specified, the resource will automatically generate a passwordless key with the certificate."
30
32
  introduced "14.4"
31
33
  examples <<~DOC
32
- Generate new ec key and csr file
34
+ **Generate new EC key and CSR file**
33
35
 
34
36
  ```ruby
35
37
  openssl_x509_request '/etc/ssl_files/my_ec_request.csr' do
@@ -40,7 +42,7 @@ class Chef
40
42
  end
41
43
  ```
42
44
 
43
- Generate a new csr file from an existing ec key
45
+ **Generate a new CSR file from an existing EC key**
44
46
 
45
47
  ```ruby
46
48
  openssl_x509_request '/etc/ssl_files/my_ec_request2.csr' do
@@ -52,7 +54,7 @@ class Chef
52
54
  end
53
55
  ```
54
56
 
55
- Generate new rsa key and csr file
57
+ **Generate new RSA key and CSR file**
56
58
 
57
59
  ```ruby
58
60
  openssl_x509_request '/etc/ssl_files/my_rsa_request.csr' do
@@ -78,46 +80,44 @@ class Chef
78
80
  description: "The permission mode applied to all files created by the resource."
79
81
 
80
82
  property :country, String,
81
- description: "Value for the C certificate field."
83
+ description: "Value for the `C` certificate field."
82
84
 
83
85
  property :state, String,
84
- description: "Value for the ST certificate field."
86
+ description: "Value for the `ST` certificate field."
85
87
 
86
88
  property :city, String,
87
- description: "Value for the L certificate field."
89
+ description: "Value for the `L` certificate field."
88
90
 
89
91
  property :org, String,
90
- description: "Value for the O certificate field."
92
+ description: "Value for the `O` certificate field."
91
93
 
92
94
  property :org_unit, String,
93
- description: "Value for the OU certificate field."
95
+ description: "Value for the `OU` certificate field."
94
96
 
95
97
  property :common_name, String,
96
98
  required: true,
97
- description: "Value for the CN certificate field."
99
+ description: "Value for the `CN` certificate field."
98
100
 
99
101
  property :email, String,
100
- description: "Value for the email certificate field."
102
+ description: "Value for the `email` certificate field."
101
103
 
102
104
  property :key_file, String,
103
- description: "The path to a certificate key file on the filesystem. If the key_file property is specified, the resource will attempt to source a key from this location. If no key file is found, the resource will generate a new key file at this location. If the key_file property is not specified, the resource will generate a key file in the same directory as the generated certificate, with the same name as the generated certificate."
105
+ description: "The path to a certificate key file on the filesystem. If the `key_file` property is specified, the resource will attempt to source a key from this location. If no key file is found, the resource will generate a new key file at this location. If the `key_file` property is not specified, the resource will generate a key file in the same directory as the generated certificate, with the same name as the generated certificate."
104
106
 
105
107
  property :key_pass, String,
106
108
  description: "The passphrase for an existing key's passphrase."
107
109
 
108
110
  property :key_type, String,
109
111
  equal_to: %w{rsa ec}, default: "ec",
110
- description: "The desired type of the generated key (rsa or ec)."
112
+ description: "The desired type of the generated key."
111
113
 
112
114
  property :key_length, Integer,
113
115
  equal_to: [1024, 2048, 4096, 8192], default: 2048,
114
- description: "The desired bit length of the generated key (if key_type is equal to 'rsa')."
116
+ description: "The desired bit length of the generated key (if key_type is equal to `rsa`)."
115
117
 
116
118
  property :key_curve, String,
117
119
  equal_to: %w{secp384r1 secp521r1 prime256v1}, default: "prime256v1",
118
- description: "The desired curve of the generated key (if key_type is equal to 'ec'). Run openssl ecparam -list_curves to see available options."
119
-
120
- default_action :create
120
+ description: "The desired curve of the generated key (if key_type is equal to `ec`). Run `openssl ecparam -list_curves` to see available options."
121
121
 
122
122
  action :create do
123
123
  description "Generate a certificate request."
@@ -132,7 +132,7 @@ class Chef
132
132
  action :create
133
133
  end
134
134
 
135
- file new_resource.key_file do
135
+ file key_file do
136
136
  owner new_resource.owner unless new_resource.owner.nil?
137
137
  group new_resource.group unless new_resource.group.nil?
138
138
  mode new_resource.mode unless new_resource.mode.nil?
@@ -145,36 +145,37 @@ class Chef
145
145
  end
146
146
 
147
147
  action_class do
148
- def generate_key_file
149
- unless new_resource.key_file
150
- path, file = ::File.split(new_resource.path)
151
- filename = ::File.basename(file, ::File.extname(file))
152
- new_resource.key_file path + "/" + filename + ".key"
153
- end
154
- new_resource.key_file
148
+ def key_file
149
+ @key_file ||=
150
+ if new_resource.key_file
151
+ new_resource.key_file
152
+ else
153
+ path, file = ::File.split(new_resource.path)
154
+ filename = ::File.basename(file, ::File.extname(file))
155
+ path + "/" + filename + ".key"
156
+ end
155
157
  end
156
158
 
157
159
  def key
158
- @key ||= if priv_key_file_valid?(generate_key_file, new_resource.key_pass)
159
- OpenSSL::PKey.read ::File.read(generate_key_file), new_resource.key_pass
160
+ @key ||= if priv_key_file_valid?(key_file, new_resource.key_pass)
161
+ OpenSSL::PKey.read ::File.read(key_file), new_resource.key_pass
160
162
  elsif new_resource.key_type == "rsa"
161
163
  gen_rsa_priv_key(new_resource.key_length)
162
164
  else
163
165
  gen_ec_priv_key(new_resource.key_curve)
164
166
  end
165
- @key
166
167
  end
167
168
 
168
169
  def subject
169
- csr_subject = OpenSSL::X509::Name.new
170
- csr_subject.add_entry("C", new_resource.country) unless new_resource.country.nil?
171
- csr_subject.add_entry("ST", new_resource.state) unless new_resource.state.nil?
172
- csr_subject.add_entry("L", new_resource.city) unless new_resource.city.nil?
173
- csr_subject.add_entry("O", new_resource.org) unless new_resource.org.nil?
174
- csr_subject.add_entry("OU", new_resource.org_unit) unless new_resource.org_unit.nil?
175
- csr_subject.add_entry("CN", new_resource.common_name)
176
- csr_subject.add_entry("emailAddress", new_resource.email) unless new_resource.email.nil?
177
- csr_subject
170
+ OpenSSL::X509::Name.new.tap do |csr_subject|
171
+ csr_subject.add_entry("C", new_resource.country) unless new_resource.country.nil?
172
+ csr_subject.add_entry("ST", new_resource.state) unless new_resource.state.nil?
173
+ csr_subject.add_entry("L", new_resource.city) unless new_resource.city.nil?
174
+ csr_subject.add_entry("O", new_resource.org) unless new_resource.org.nil?
175
+ csr_subject.add_entry("OU", new_resource.org_unit) unless new_resource.org_unit.nil?
176
+ csr_subject.add_entry("CN", new_resource.common_name)
177
+ csr_subject.add_entry("emailAddress", new_resource.email) unless new_resource.email.nil?
178
+ end
178
179
  end
179
180
 
180
181
  def csr