chef 16.1.16 → 16.18.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (822) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +32 -27
  3. data/README.md +5 -5
  4. data/Rakefile +35 -30
  5. data/bin/knife +1 -1
  6. data/chef-universal-mingw32.gemspec +5 -5
  7. data/chef.gemspec +32 -10
  8. data/lib/chef/action_collection.rb +5 -1
  9. data/lib/chef/api_client/registration.rb +2 -2
  10. data/lib/chef/application/apply.rb +19 -13
  11. data/lib/chef/application/base.rb +27 -24
  12. data/lib/chef/application/client.rb +17 -6
  13. data/lib/chef/application/exit_code.rb +13 -4
  14. data/lib/chef/application/knife.rb +22 -11
  15. data/lib/chef/application/solo.rb +2 -1
  16. data/lib/chef/application/windows_service.rb +39 -39
  17. data/lib/chef/application/windows_service_manager.rb +7 -7
  18. data/lib/chef/application.rb +33 -19
  19. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  20. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  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/data_handler/cookbook_data_handler.rb +1 -1
  24. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  25. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  26. data/lib/chef/chef_fs/file_pattern.rb +1 -1
  27. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  28. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  29. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  30. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  31. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  32. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  33. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  34. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +2 -2
  35. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  36. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  37. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  38. data/lib/chef/chef_fs/knife.rb +2 -2
  39. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  40. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  41. data/lib/chef/chef_fs/path_utils.rb +1 -1
  42. data/lib/chef/client.rb +32 -59
  43. data/lib/chef/compliance/default_attributes.rb +97 -0
  44. data/lib/chef/compliance/fetcher/automate.rb +80 -0
  45. data/lib/chef/compliance/fetcher/chef_server.rb +134 -0
  46. data/lib/chef/compliance/reporter/automate.rb +201 -0
  47. data/lib/chef/compliance/reporter/chef_server_automate.rb +94 -0
  48. data/lib/chef/compliance/reporter/compliance_enforcer.rb +20 -0
  49. data/lib/chef/compliance/reporter/json_file.rb +19 -0
  50. data/lib/chef/compliance/runner.rb +269 -0
  51. data/lib/chef/cookbook/chefignore.rb +1 -1
  52. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  53. data/lib/chef/cookbook/gem_installer.rb +6 -2
  54. data/lib/chef/cookbook/metadata.rb +1 -1
  55. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  56. data/lib/chef/cookbook/synchronizer.rb +2 -2
  57. data/lib/chef/cookbook/syntax_check.rb +1 -2
  58. data/lib/chef/cookbook_loader.rb +15 -29
  59. data/lib/chef/cookbook_manifest.rb +2 -1
  60. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  61. data/lib/chef/cookbook_uploader.rb +1 -1
  62. data/lib/chef/cookbook_version.rb +30 -11
  63. data/lib/chef/data_bag.rb +5 -6
  64. data/lib/chef/data_collector/config_validation.rb +22 -13
  65. data/lib/chef/data_collector/run_end_message.rb +15 -5
  66. data/lib/chef/data_collector/run_start_message.rb +1 -1
  67. data/lib/chef/data_collector.rb +7 -6
  68. data/lib/chef/deprecated.rb +27 -5
  69. data/lib/chef/deprecation/warnings.rb +2 -2
  70. data/lib/chef/digester.rb +4 -3
  71. data/lib/chef/dsl/chef_vault.rb +1 -1
  72. data/lib/chef/dsl/data_query.rb +2 -2
  73. data/lib/chef/dsl/platform_introspection.rb +10 -8
  74. data/lib/chef/dsl/reboot_pending.rb +1 -1
  75. data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
  76. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  77. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  78. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  79. data/lib/chef/environment.rb +6 -7
  80. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  81. data/lib/chef/exceptions.rb +16 -6
  82. data/lib/chef/file_access_control/windows.rb +12 -11
  83. data/lib/chef/file_access_control.rb +1 -1
  84. data/lib/chef/file_cache.rb +4 -4
  85. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  86. data/lib/chef/file_content_management/tempfile.rb +10 -10
  87. data/lib/chef/formatters/doc.rb +7 -6
  88. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  89. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +3 -3
  90. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  91. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  92. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +8 -8
  93. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  94. data/lib/chef/formatters/error_mapper.rb +2 -2
  95. data/lib/chef/formatters/indentable_output_stream.rb +2 -2
  96. data/lib/chef/formatters/minimal.rb +5 -4
  97. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +28 -39
  98. data/lib/chef/handler/json_file.rb +1 -1
  99. data/lib/chef/handler.rb +2 -0
  100. data/lib/chef/http/auth_credentials.rb +5 -1
  101. data/lib/chef/http/authenticator.rb +4 -2
  102. data/lib/chef/http/basic_client.rb +4 -2
  103. data/lib/chef/http/decompressor.rb +1 -1
  104. data/lib/chef/http/http_request.rb +8 -6
  105. data/lib/chef/http/json_output.rb +1 -1
  106. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  107. data/lib/chef/http/ssl_policies.rb +52 -15
  108. data/lib/chef/http.rb +38 -31
  109. data/lib/chef/json_compat.rb +4 -9
  110. data/lib/chef/key.rb +1 -1
  111. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  112. data/lib/chef/knife/bootstrap/templates/chef-full.erb +12 -12
  113. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +9 -9
  114. data/lib/chef/knife/bootstrap/train_connector.rb +2 -1
  115. data/lib/chef/knife/bootstrap.rb +93 -40
  116. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  117. data/lib/chef/knife/client_create.rb +3 -3
  118. data/lib/chef/knife/config_get.rb +8 -96
  119. data/lib/chef/knife/config_get_profile.rb +9 -9
  120. data/lib/chef/knife/config_list.rb +139 -0
  121. data/lib/chef/knife/config_list_profiles.rb +8 -95
  122. data/lib/chef/knife/config_show.rb +127 -0
  123. data/lib/chef/knife/config_use.rb +61 -0
  124. data/lib/chef/knife/config_use_profile.rb +12 -17
  125. data/lib/chef/knife/configure.rb +5 -3
  126. data/lib/chef/knife/cookbook_delete.rb +1 -1
  127. data/lib/chef/knife/cookbook_download.rb +1 -1
  128. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  129. data/lib/chef/knife/cookbook_upload.rb +29 -37
  130. data/lib/chef/knife/core/bootstrap_context.rb +3 -3
  131. data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
  132. data/lib/chef/knife/core/formatting_options.rb +49 -0
  133. data/lib/chef/knife/core/gem_glob_loader.rb +2 -2
  134. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  135. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  136. data/lib/chef/knife/core/node_presenter.rb +0 -25
  137. data/lib/chef/knife/core/object_loader.rb +1 -1
  138. data/lib/chef/knife/core/status_presenter.rb +1 -26
  139. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  140. data/lib/chef/knife/core/ui.rb +12 -3
  141. data/lib/chef/knife/core/windows_bootstrap_context.rb +51 -42
  142. data/lib/chef/knife/data_bag_create.rb +1 -1
  143. data/lib/chef/knife/delete.rb +15 -15
  144. data/lib/chef/knife/exec.rb +4 -4
  145. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  146. data/lib/chef/knife/node_policy_set.rb +2 -2
  147. data/lib/chef/knife/node_run_list_add.rb +1 -1
  148. data/lib/chef/knife/node_run_list_remove.rb +2 -2
  149. data/lib/chef/knife/node_run_list_set.rb +1 -1
  150. data/lib/chef/knife/node_show.rb +4 -3
  151. data/lib/chef/knife/rehash.rb +3 -21
  152. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  153. data/lib/chef/knife/role_env_run_list_add.rb +1 -1
  154. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  155. data/lib/chef/knife/role_run_list_add.rb +1 -1
  156. data/lib/chef/knife/role_run_list_set.rb +1 -1
  157. data/lib/chef/knife/search.rb +2 -2
  158. data/lib/chef/knife/serve.rb +3 -3
  159. data/lib/chef/knife/ssh.rb +33 -12
  160. data/lib/chef/knife/ssl_check.rb +3 -3
  161. data/lib/chef/knife/status.rb +10 -13
  162. data/lib/chef/knife/supermarket_share.rb +1 -1
  163. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  164. data/lib/chef/knife/tag_create.rb +1 -1
  165. data/lib/chef/knife/tag_delete.rb +1 -1
  166. data/lib/chef/knife/user_create.rb +2 -2
  167. data/lib/chef/knife/xargs.rb +19 -19
  168. data/lib/chef/knife/yaml_convert.rb +1 -1
  169. data/lib/chef/knife.rb +9 -9
  170. data/lib/chef/local_mode.rb +2 -2
  171. data/lib/chef/log/syslog.rb +2 -2
  172. data/lib/chef/log/winevt.rb +2 -2
  173. data/lib/chef/log.rb +8 -3
  174. data/lib/chef/mixin/checksum.rb +5 -0
  175. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  176. data/lib/chef/mixin/convert_to_class_name.rb +0 -56
  177. data/lib/chef/mixin/deep_merge.rb +35 -18
  178. data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/mixin/default_paths.rb} +11 -13
  179. data/lib/chef/mixin/openssl_helper.rb +32 -11
  180. data/lib/chef/mixin/path_sanity.rb +5 -4
  181. data/lib/chef/mixin/powershell_exec.rb +17 -22
  182. data/lib/chef/mixin/powershell_out.rb +12 -5
  183. data/lib/chef/mixin/properties.rb +2 -0
  184. data/lib/chef/mixin/securable.rb +2 -2
  185. data/lib/chef/mixin/shell_out.rb +4 -188
  186. data/lib/chef/mixin/template.rb +4 -3
  187. data/lib/chef/mixin/unformatter.rb +1 -1
  188. data/lib/chef/mixin/uris.rb +4 -2
  189. data/lib/chef/mixin/versioned_api.rb +1 -2
  190. data/lib/chef/mixin/which.rb +6 -3
  191. data/lib/chef/mixins.rb +1 -0
  192. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  193. data/lib/chef/node/attribute.rb +22 -7
  194. data/lib/chef/node/attribute_collections.rb +2 -6
  195. data/lib/chef/node/mixin/deep_merge_cache.rb +4 -4
  196. data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
  197. data/lib/chef/node.rb +43 -18
  198. data/lib/chef/node_map.rb +21 -18
  199. data/lib/chef/platform/query_helpers.rb +4 -4
  200. data/lib/chef/platform/service_helpers.rb +31 -28
  201. data/lib/chef/policy_builder/dynamic.rb +2 -0
  202. data/lib/chef/policy_builder/policyfile.rb +8 -3
  203. data/lib/chef/powershell.rb +10 -4
  204. data/lib/chef/property.rb +2 -2
  205. data/lib/chef/provider/batch.rb +3 -10
  206. data/lib/chef/provider/cron/unix.rb +0 -2
  207. data/lib/chef/provider/cron.rb +9 -28
  208. data/lib/chef/provider/dsc_resource.rb +12 -24
  209. data/lib/chef/provider/dsc_script.rb +16 -20
  210. data/lib/chef/provider/execute.rb +2 -1
  211. data/lib/chef/provider/file.rb +5 -5
  212. data/lib/chef/provider/git.rb +22 -14
  213. data/lib/chef/provider/group/dscl.rb +3 -3
  214. data/lib/chef/provider/group/suse.rb +5 -5
  215. data/lib/chef/provider/group/windows.rb +13 -2
  216. data/lib/chef/provider/group.rb +14 -8
  217. data/lib/chef/provider/ifconfig/debian.rb +38 -22
  218. data/lib/chef/provider/ifconfig/redhat.rb +54 -18
  219. data/lib/chef/provider/ifconfig.rb +16 -19
  220. data/lib/chef/provider/launchd.rb +3 -13
  221. data/lib/chef/provider/link.rb +0 -9
  222. data/lib/chef/provider/mount/aix.rb +1 -1
  223. data/lib/chef/provider/mount/linux.rb +67 -0
  224. data/lib/chef/provider/mount/mount.rb +41 -43
  225. data/lib/chef/provider/mount/solaris.rb +0 -1
  226. data/lib/chef/provider/mount/windows.rb +2 -2
  227. data/lib/chef/provider/mount.rb +23 -3
  228. data/lib/chef/provider/noop.rb +1 -1
  229. data/lib/chef/provider/package/apt.rb +1 -1
  230. data/lib/chef/provider/package/chocolatey.rb +6 -6
  231. data/lib/chef/provider/package/dnf/dnf_helper.py +23 -6
  232. data/lib/chef/provider/package/dnf/python_helper.rb +6 -6
  233. data/lib/chef/provider/package/dnf.rb +39 -12
  234. data/lib/chef/provider/package/dpkg.rb +3 -12
  235. data/lib/chef/provider/package/freebsd/base.rb +3 -2
  236. data/lib/chef/provider/package/freebsd/pkgng.rb +4 -2
  237. data/lib/chef/provider/package/homebrew.rb +1 -1
  238. data/lib/chef/provider/package/ips.rb +1 -1
  239. data/lib/chef/provider/package/openbsd.rb +1 -1
  240. data/lib/chef/provider/package/portage.rb +2 -2
  241. data/lib/chef/provider/package/powershell.rb +10 -2
  242. data/lib/chef/provider/package/rubygems.rb +25 -22
  243. data/lib/chef/provider/package/snap.rb +99 -34
  244. data/lib/chef/provider/package/solaris.rb +0 -2
  245. data/lib/chef/provider/package/windows/msi.rb +3 -3
  246. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -10
  247. data/lib/chef/provider/package/windows.rb +12 -7
  248. data/lib/chef/provider/package/yum/rpm_utils.rb +1 -1
  249. data/lib/chef/provider/package/yum/yum_helper.py +4 -10
  250. data/lib/chef/provider/package/zypper.rb +99 -73
  251. data/lib/chef/provider/package.rb +53 -18
  252. data/lib/chef/provider/powershell_script.rb +40 -17
  253. data/lib/chef/provider/registry_key.rb +4 -3
  254. data/lib/chef/provider/remote_file/content.rb +3 -0
  255. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  256. data/lib/chef/provider/remote_file/http.rb +4 -1
  257. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  258. data/lib/chef/provider/route.rb +4 -8
  259. data/lib/chef/provider/script.rb +4 -75
  260. data/lib/chef/provider/service/arch.rb +2 -2
  261. data/lib/chef/provider/service/debian.rb +5 -4
  262. data/lib/chef/provider/service/gentoo.rb +2 -2
  263. data/lib/chef/provider/service/macosx.rb +7 -7
  264. data/lib/chef/provider/service/openbsd.rb +5 -8
  265. data/lib/chef/provider/service/redhat.rb +4 -4
  266. data/lib/chef/provider/service/upstart.rb +1 -1
  267. data/lib/chef/provider/service/windows.rb +11 -11
  268. data/lib/chef/provider/service.rb +2 -2
  269. data/lib/chef/provider/subversion.rb +2 -2
  270. data/lib/chef/provider/systemd_unit.rb +0 -2
  271. data/lib/chef/provider/template/content.rb +2 -1
  272. data/lib/chef/provider/template_finder.rb +2 -10
  273. data/lib/chef/provider/user/aix.rb +1 -1
  274. data/lib/chef/provider/user/dscl.rb +10 -10
  275. data/lib/chef/provider/user/linux.rb +3 -3
  276. data/lib/chef/provider/user/mac.rb +29 -21
  277. data/lib/chef/provider/user/solaris.rb +1 -1
  278. data/lib/chef/provider/user/windows.rb +10 -3
  279. data/lib/chef/provider/user.rb +17 -9
  280. data/lib/chef/provider/windows_script.rb +87 -25
  281. data/lib/chef/provider/yum_repository.rb +3 -3
  282. data/lib/chef/provider/zypper_repository.rb +33 -14
  283. data/lib/chef/provider.rb +1 -5
  284. data/lib/chef/provider_resolver.rb +1 -1
  285. data/lib/chef/providers.rb +1 -4
  286. data/lib/chef/pwsh.rb +71 -0
  287. data/lib/chef/recipe.rb +2 -2
  288. data/lib/chef/resource/alternatives.rb +1 -1
  289. data/lib/chef/resource/apt_package.rb +1 -1
  290. data/lib/chef/resource/apt_repository.rb +7 -15
  291. data/lib/chef/resource/archive_file.rb +28 -8
  292. data/lib/chef/resource/bash.rb +119 -2
  293. data/lib/chef/resource/batch.rb +5 -3
  294. data/lib/chef/resource/bff_package.rb +22 -0
  295. data/lib/chef/resource/breakpoint.rb +59 -2
  296. data/lib/chef/resource/build_essential.rb +7 -10
  297. data/lib/chef/resource/cab_package.rb +29 -0
  298. data/lib/chef/resource/chef_client_config.rb +313 -0
  299. data/lib/chef/resource/chef_client_cron.rb +36 -29
  300. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  301. data/lib/chef/resource/chef_client_scheduled_task.rb +36 -21
  302. data/lib/chef/resource/chef_client_systemd_timer.rb +29 -22
  303. data/lib/chef/resource/chef_client_trusted_certificate.rb +102 -0
  304. data/lib/chef/resource/chef_gem.rb +58 -22
  305. data/lib/chef/resource/chef_handler.rb +149 -4
  306. data/lib/chef/resource/chef_sleep.rb +3 -3
  307. data/lib/chef/resource/chef_vault_secret.rb +14 -14
  308. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  309. data/lib/chef/resource/cookbook_file.rb +2 -2
  310. data/lib/chef/resource/cron/_cron_shared.rb +99 -0
  311. data/lib/chef/resource/cron/cron.rb +46 -0
  312. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +9 -89
  313. data/lib/chef/resource/cron_access.rb +13 -5
  314. data/lib/chef/resource/csh.rb +2 -3
  315. data/lib/chef/resource/dmg_package.rb +2 -2
  316. data/lib/chef/resource/dnf_package.rb +2 -2
  317. data/lib/chef/resource/dsc_resource.rb +0 -1
  318. data/lib/chef/resource/dsc_script.rb +9 -2
  319. data/lib/chef/resource/execute.rb +486 -15
  320. data/lib/chef/resource/file.rb +5 -5
  321. data/lib/chef/resource/freebsd_package.rb +1 -1
  322. data/lib/chef/resource/gem_package.rb +36 -3
  323. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  324. data/lib/chef/resource/homebrew_cask.rb +16 -10
  325. data/lib/chef/resource/homebrew_package.rb +32 -3
  326. data/lib/chef/resource/homebrew_update.rb +110 -0
  327. data/lib/chef/resource/hostname.rb +27 -40
  328. data/lib/chef/resource/http_request.rb +1 -1
  329. data/lib/chef/resource/ifconfig.rb +52 -5
  330. data/lib/chef/resource/kernel_module.rb +15 -2
  331. data/lib/chef/resource/ksh.rb +3 -3
  332. data/lib/chef/resource/launchd.rb +18 -17
  333. data/lib/chef/resource/locale.rb +4 -4
  334. data/lib/chef/resource/lwrp_base.rb +4 -5
  335. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  336. data/lib/chef/resource/mdadm.rb +2 -2
  337. data/lib/chef/resource/mount.rb +9 -3
  338. data/lib/chef/resource/notify_group.rb +0 -1
  339. data/lib/chef/resource/ohai.rb +46 -3
  340. data/lib/chef/resource/ohai_hint.rb +33 -0
  341. data/lib/chef/resource/openssl_dhparam.rb +29 -5
  342. data/lib/chef/resource/openssl_ec_private_key.rb +8 -3
  343. data/lib/chef/resource/openssl_ec_public_key.rb +4 -2
  344. data/lib/chef/resource/openssl_rsa_private_key.rb +8 -3
  345. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  346. data/lib/chef/resource/openssl_x509_certificate.rb +49 -49
  347. data/lib/chef/resource/openssl_x509_crl.rb +22 -12
  348. data/lib/chef/resource/openssl_x509_request.rb +37 -36
  349. data/lib/chef/resource/osx_profile.rb +292 -6
  350. data/lib/chef/resource/perl.rb +2 -3
  351. data/lib/chef/resource/plist.rb +26 -11
  352. data/lib/chef/resource/powershell_package_source.rb +25 -24
  353. data/lib/chef/resource/powershell_script.rb +40 -41
  354. data/lib/chef/resource/python.rb +2 -3
  355. data/lib/chef/resource/reboot.rb +2 -2
  356. data/lib/chef/resource/registry_key.rb +93 -2
  357. data/lib/chef/resource/remote_directory.rb +1 -1
  358. data/lib/chef/resource/remote_file.rb +26 -10
  359. data/lib/chef/resource/rhsm_register.rb +39 -10
  360. data/lib/chef/resource/rhsm_subscription.rb +5 -5
  361. data/lib/chef/resource/route.rb +1 -1
  362. data/lib/chef/resource/ruby.rb +1 -6
  363. data/lib/chef/resource/ruby_block.rb +2 -2
  364. data/lib/chef/resource/scm/_scm.rb +2 -1
  365. data/lib/chef/resource/scm/git.rb +82 -1
  366. data/lib/chef/resource/scm/subversion.rb +14 -2
  367. data/lib/chef/resource/script.rb +2 -2
  368. data/lib/chef/resource/service.rb +5 -5
  369. data/lib/chef/resource/solaris_package.rb +0 -2
  370. data/lib/chef/resource/ssh_known_hosts_entry.rb +18 -3
  371. data/lib/chef/resource/sudo.rb +32 -5
  372. data/lib/chef/resource/support/client.erb +68 -0
  373. data/lib/chef/resource/support/cron.d.erb +1 -1
  374. data/lib/chef/resource/support/cron_access.erb +1 -1
  375. data/lib/chef/resource/support/sudoer.erb +1 -1
  376. data/lib/chef/resource/support/ulimit.erb +1 -1
  377. data/lib/chef/resource/swap_file.rb +17 -0
  378. data/lib/chef/resource/sysctl.rb +6 -10
  379. data/lib/chef/resource/systemd_unit.rb +45 -4
  380. data/lib/chef/resource/template.rb +4 -4
  381. data/lib/chef/resource/timezone.rb +122 -68
  382. data/lib/chef/resource/user/windows_user.rb +5 -0
  383. data/lib/chef/resource/user_ulimit.rb +2 -1
  384. data/lib/chef/resource/windows_ad_join.rb +51 -13
  385. data/lib/chef/resource/windows_audit_policy.rb +232 -0
  386. data/lib/chef/resource/windows_auto_run.rb +13 -0
  387. data/lib/chef/resource/windows_certificate.rb +95 -39
  388. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  389. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  390. data/lib/chef/resource/windows_dfs_server.rb +9 -4
  391. data/lib/chef/resource/windows_dns_record.rb +25 -5
  392. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  393. data/lib/chef/resource/windows_env.rb +173 -0
  394. data/lib/chef/resource/windows_feature.rb +4 -0
  395. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  396. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  397. data/lib/chef/resource/windows_firewall_profile.rb +196 -0
  398. data/lib/chef/resource/windows_firewall_rule.rb +14 -14
  399. data/lib/chef/resource/windows_font.rb +7 -5
  400. data/lib/chef/resource/windows_package.rb +30 -6
  401. data/lib/chef/resource/windows_pagefile.rb +5 -1
  402. data/lib/chef/resource/windows_path.rb +38 -0
  403. data/lib/chef/resource/windows_printer.rb +22 -21
  404. data/lib/chef/resource/windows_printer_port.rb +20 -17
  405. data/lib/chef/resource/windows_script.rb +2 -16
  406. data/lib/chef/resource/windows_security_policy.rb +98 -49
  407. data/lib/chef/resource/windows_service.rb +108 -0
  408. data/lib/chef/resource/windows_share.rb +23 -21
  409. data/lib/chef/resource/windows_shortcut.rb +3 -2
  410. data/lib/chef/resource/windows_task.rb +633 -32
  411. data/lib/chef/resource/windows_uac.rb +5 -1
  412. data/lib/chef/resource/windows_user_privilege.rb +111 -77
  413. data/lib/chef/resource/windows_workgroup.rb +11 -10
  414. data/lib/chef/resource/yum_package.rb +2 -2
  415. data/lib/chef/resource/yum_repository.rb +15 -10
  416. data/lib/chef/resource.rb +60 -27
  417. data/lib/chef/resource_collection/resource_set.rb +2 -6
  418. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  419. data/lib/chef/resource_inspector.rb +82 -70
  420. data/lib/chef/resource_reporter.rb +1 -3
  421. data/lib/chef/resources.rb +9 -3
  422. data/lib/chef/role.rb +3 -4
  423. data/lib/chef/run_context/cookbook_compiler.rb +21 -21
  424. data/lib/chef/run_context.rb +2 -2
  425. data/lib/chef/run_lock.rb +3 -3
  426. data/lib/chef/run_status.rb +2 -6
  427. data/lib/chef/search/query.rb +7 -6
  428. data/lib/chef/server_api.rb +0 -4
  429. data/lib/chef/server_api_versions.rb +4 -0
  430. data/lib/chef/shell/ext.rb +15 -15
  431. data/lib/chef/shell/shell_session.rb +4 -2
  432. data/lib/chef/shell.rb +63 -27
  433. data/lib/chef/train_transport.rb +5 -104
  434. data/lib/chef/util/backup.rb +2 -2
  435. data/lib/chef/util/diff.rb +16 -17
  436. data/lib/chef/util/dsc/configuration_generator.rb +53 -12
  437. data/lib/chef/util/dsc/lcm_output_parser.rb +4 -7
  438. data/lib/chef/util/dsc/local_configuration_manager.rb +18 -15
  439. data/lib/chef/util/dsc/resource_store.rb +5 -11
  440. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  441. data/lib/chef/util/threaded_job_queue.rb +0 -2
  442. data/lib/chef/util/windows/net_user.rb +1 -1
  443. data/lib/chef/util/windows/volume.rb +1 -1
  444. data/lib/chef/version.rb +2 -2
  445. data/lib/chef/version_string.rb +1 -1
  446. data/lib/chef/win32/api/file.rb +4 -0
  447. data/lib/chef/win32/api.rb +9 -2
  448. data/lib/chef/win32/crypto.rb +1 -1
  449. data/lib/chef/win32/file/version_info.rb +5 -5
  450. data/lib/chef/win32/file.rb +4 -4
  451. data/lib/chef/win32/registry.rb +4 -6
  452. data/lib/chef/win32/security/sid.rb +1 -1
  453. data/lib/chef/win32/security.rb +1 -1
  454. data/lib/chef/win32/unicode.rb +1 -1
  455. data/lib/chef/win32/version.rb +4 -2
  456. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  457. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  458. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  459. data/spec/data/rubygems.org/latest_specs.4.8.gz +0 -0
  460. data/spec/data/rubygems.org/nonexistent_gem +0 -0
  461. data/spec/data/rubygems.org/sexp_processor +0 -0
  462. data/spec/data/rubygems.org/sexp_processor-4.15.1.gemspec.rz +0 -0
  463. data/spec/data/shef-config.rb +1 -1
  464. data/spec/data/ssl/binary/chef-rspec-der.cert +0 -0
  465. data/spec/data/ssl/binary/chef-rspec-der.key +0 -0
  466. data/spec/data/ssl/chef-rspec.cert +15 -15
  467. data/spec/functional/assets/yumrepo-empty/repodata/01a3b-filelists.sqlite.bz2 +0 -0
  468. data/spec/functional/assets/yumrepo-empty/repodata/401dc-filelists.xml.gz +0 -0
  469. data/spec/functional/assets/yumrepo-empty/repodata/5dc1e-primary.sqlite.bz2 +0 -0
  470. data/spec/functional/assets/yumrepo-empty/repodata/6bf96-other.xml.gz +0 -0
  471. data/spec/functional/assets/yumrepo-empty/repodata/7c365-other.sqlite.bz2 +0 -0
  472. data/spec/functional/assets/yumrepo-empty/repodata/dabe2-primary.xml.gz +0 -0
  473. data/spec/functional/assets/yumrepo-empty/repodata/repomd.xml +55 -0
  474. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  475. data/spec/functional/knife/configure_spec.rb +1 -1
  476. data/spec/functional/knife/ssh_spec.rb +5 -16
  477. data/spec/functional/mixin/powershell_out_spec.rb +11 -3
  478. data/spec/functional/resource/aix_service_spec.rb +11 -4
  479. data/spec/functional/resource/aixinit_service_spec.rb +9 -10
  480. data/spec/functional/resource/apt_package_spec.rb +4 -7
  481. data/spec/functional/resource/bash_spec.rb +3 -2
  482. data/spec/functional/resource/bff_spec.rb +3 -3
  483. data/spec/functional/resource/chocolatey_package_spec.rb +11 -3
  484. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  485. data/spec/functional/resource/cron_spec.rb +24 -6
  486. data/spec/functional/resource/dnf_package_spec.rb +323 -17
  487. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  488. data/spec/functional/resource/dsc_script_spec.rb +6 -10
  489. data/spec/functional/resource/execute_spec.rb +1 -1
  490. data/spec/functional/resource/git_spec.rb +23 -1
  491. data/spec/functional/resource/group_spec.rb +26 -10
  492. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  493. data/spec/functional/resource/insserv_spec.rb +8 -8
  494. data/spec/functional/resource/link_spec.rb +30 -25
  495. data/spec/functional/resource/mount_spec.rb +19 -3
  496. data/spec/functional/resource/msu_package_spec.rb +9 -3
  497. data/spec/functional/resource/ohai_spec.rb +2 -10
  498. data/spec/functional/resource/powershell_package_source_spec.rb +107 -0
  499. data/spec/functional/resource/powershell_script_spec.rb +65 -22
  500. data/spec/functional/resource/remote_file_spec.rb +9 -15
  501. data/spec/functional/resource/rpm_spec.rb +3 -3
  502. data/spec/functional/resource/timezone_spec.rb +2 -0
  503. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  504. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  505. data/spec/functional/resource/windows_certificate_spec.rb +206 -382
  506. data/spec/functional/resource/windows_firewall_rule_spec.rb +93 -0
  507. data/spec/functional/resource/windows_font_spec.rb +50 -0
  508. data/spec/functional/resource/windows_package_spec.rb +36 -11
  509. data/spec/functional/resource/windows_path_spec.rb +4 -0
  510. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  511. data/spec/functional/resource/windows_service_spec.rb +4 -0
  512. data/spec/functional/resource/windows_share_spec.rb +103 -0
  513. data/spec/functional/resource/windows_task_spec.rb +27 -27
  514. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  515. data/spec/functional/resource/yum_package_spec.rb +16 -1
  516. data/spec/functional/resource/zypper_package_spec.rb +15 -1
  517. data/spec/functional/run_lock_spec.rb +26 -25
  518. data/spec/functional/shell_spec.rb +10 -6
  519. data/spec/functional/version_spec.rb +4 -4
  520. data/spec/functional/win32/crypto_spec.rb +1 -1
  521. data/spec/functional/win32/registry_spec.rb +8 -8
  522. data/spec/functional/win32/service_manager_spec.rb +1 -1
  523. data/spec/integration/client/client_spec.rb +6 -5
  524. data/spec/integration/client/exit_code_spec.rb +3 -2
  525. data/spec/integration/client/fips_spec.rb +21 -0
  526. data/spec/integration/client/ipv6_spec.rb +1 -1
  527. data/spec/integration/compliance/compliance_spec.rb +82 -0
  528. data/spec/integration/knife/client_key_create_spec.rb +1 -1
  529. data/spec/integration/knife/common_options_spec.rb +12 -12
  530. data/spec/integration/knife/config_list_spec.rb +220 -0
  531. data/spec/integration/knife/config_show_spec.rb +192 -0
  532. data/spec/integration/knife/config_use_spec.rb +198 -0
  533. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  534. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  535. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  536. data/spec/integration/knife/delete_spec.rb +1 -1
  537. data/spec/integration/knife/diff_spec.rb +3 -1
  538. data/spec/integration/knife/download_spec.rb +5 -3
  539. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  540. data/spec/integration/knife/node_create_spec.rb +1 -1
  541. data/spec/integration/knife/node_environment_set_spec.rb +1 -1
  542. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  543. data/spec/integration/knife/node_run_list_add_spec.rb +4 -4
  544. data/spec/integration/knife/node_run_list_remove_spec.rb +1 -1
  545. data/spec/integration/knife/node_run_list_set_spec.rb +1 -1
  546. data/spec/integration/knife/node_show_spec.rb +1 -1
  547. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  548. data/spec/integration/knife/serve_spec.rb +5 -5
  549. data/spec/integration/knife/upload_spec.rb +8 -7
  550. data/spec/integration/ohai/ohai_spec.rb +61 -0
  551. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  552. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  553. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  554. data/spec/integration/recipes/notifies_spec.rb +2 -2
  555. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  556. data/spec/integration/recipes/provider_choice.rb +2 -2
  557. data/spec/integration/recipes/recipe_dsl_spec.rb +6 -1
  558. data/spec/integration/recipes/remote_directory.rb +1 -1
  559. data/spec/integration/recipes/resource_action_spec.rb +14 -0
  560. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  561. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  562. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  563. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  564. data/spec/integration/solo/solo_spec.rb +5 -5
  565. data/spec/spec_helper.rb +30 -17
  566. data/spec/stress/win32/file_spec.rb +1 -1
  567. data/spec/support/chef_helpers.rb +3 -22
  568. data/spec/support/lib/chef/resource/cat.rb +1 -1
  569. data/spec/support/lib/chef/resource/one_two_three_four.rb +1 -1
  570. data/spec/support/matchers/leak.rb +2 -2
  571. data/spec/support/mock/platform.rb +24 -16
  572. data/spec/support/platform_helpers.rb +36 -41
  573. data/spec/support/platforms/win32/spec_service.rb +2 -2
  574. data/spec/support/shared/functional/directory_resource.rb +1 -1
  575. data/spec/support/shared/functional/execute_resource.rb +2 -2
  576. data/spec/support/shared/functional/file_resource.rb +20 -21
  577. data/spec/support/shared/functional/securable_resource.rb +109 -29
  578. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  579. data/spec/support/shared/functional/win32_service.rb +2 -2
  580. data/spec/support/shared/functional/windows_script.rb +5 -5
  581. data/spec/support/shared/integration/integration_helper.rb +22 -52
  582. data/spec/support/shared/integration/knife_support.rb +2 -9
  583. data/spec/support/shared/unit/application_dot_d.rb +5 -4
  584. data/spec/support/shared/unit/execute_resource.rb +1 -1
  585. data/spec/support/shared/unit/knife_shared.rb +1 -1
  586. data/spec/support/shared/unit/provider/file.rb +26 -8
  587. data/spec/support/shared/unit/script_resource.rb +10 -24
  588. data/spec/support/shared/unit/windows_script_resource.rb +16 -29
  589. data/spec/tiny_server.rb +0 -1
  590. data/spec/unit/application/client_spec.rb +2 -2
  591. data/spec/unit/application/exit_code_spec.rb +10 -0
  592. data/spec/unit/application/solo_spec.rb +4 -2
  593. data/spec/unit/application_spec.rb +15 -8
  594. data/spec/unit/chef_fs/config_spec.rb +3 -3
  595. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  596. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  597. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  598. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +6 -2
  599. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  600. data/spec/unit/client_spec.rb +25 -5
  601. data/spec/unit/compliance/fetcher/automate_spec.rb +142 -0
  602. data/spec/unit/compliance/fetcher/chef_server_spec.rb +93 -0
  603. data/spec/unit/compliance/reporter/automate_spec.rb +427 -0
  604. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +177 -0
  605. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +48 -0
  606. data/spec/unit/compliance/runner_spec.rb +215 -0
  607. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  608. data/spec/unit/cookbook/synchronizer_spec.rb +28 -26
  609. data/spec/unit/cookbook_spec.rb +2 -2
  610. data/spec/unit/cookbook_version_spec.rb +52 -0
  611. data/spec/unit/daemon_spec.rb +1 -5
  612. data/spec/unit/data_bag_spec.rb +6 -3
  613. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  614. data/spec/unit/data_collector_spec.rb +100 -120
  615. data/spec/unit/decorator_spec.rb +23 -23
  616. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  617. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  618. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  619. data/spec/unit/environment_spec.rb +12 -8
  620. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  621. data/spec/unit/file_access_control_spec.rb +1 -1
  622. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +2 -2
  623. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +11 -11
  624. data/spec/unit/guard_interpreter_spec.rb +1 -1
  625. data/spec/unit/http/api_versions_spec.rb +20 -2
  626. data/spec/unit/http/ssl_policies_spec.rb +125 -66
  627. data/spec/unit/json_compat_spec.rb +1 -1
  628. data/spec/unit/knife/bootstrap_spec.rb +69 -45
  629. data/spec/unit/knife/client_create_spec.rb +2 -2
  630. data/spec/unit/knife/configure_client_spec.rb +5 -5
  631. data/spec/unit/knife/configure_spec.rb +3 -3
  632. data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
  633. data/spec/unit/knife/cookbook_download_spec.rb +8 -8
  634. data/spec/unit/knife/cookbook_list_spec.rb +2 -2
  635. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  636. data/spec/unit/knife/cookbook_metadata_spec.rb +3 -3
  637. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  638. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  639. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  640. data/spec/unit/knife/core/node_editor_spec.rb +1 -1
  641. data/spec/unit/knife/core/status_presenter_spec.rb +54 -0
  642. data/spec/unit/knife/core/ui_spec.rb +1 -0
  643. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +24 -15
  644. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  645. data/spec/unit/knife/environment_compare_spec.rb +3 -3
  646. data/spec/unit/knife/ssh_spec.rb +2 -2
  647. data/spec/unit/knife/supermarket_download_spec.rb +8 -8
  648. data/spec/unit/knife/supermarket_list_spec.rb +3 -3
  649. data/spec/unit/knife/supermarket_search_spec.rb +1 -1
  650. data/spec/unit/knife/supermarket_share_spec.rb +6 -7
  651. data/spec/unit/knife/tag_create_spec.rb +1 -1
  652. data/spec/unit/knife/tag_delete_spec.rb +1 -1
  653. data/spec/unit/knife/user_create_spec.rb +1 -1
  654. data/spec/unit/log/syslog_spec.rb +6 -10
  655. data/spec/unit/log/winevt_spec.rb +21 -13
  656. data/spec/unit/lwrp_spec.rb +12 -9
  657. data/spec/unit/mixin/checksum_spec.rb +28 -0
  658. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  659. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  660. data/spec/unit/mixin/openssl_helper_spec.rb +1 -8
  661. data/spec/unit/mixin/powershell_exec_spec.rb +43 -6
  662. data/spec/unit/mixin/powershell_out_spec.rb +16 -4
  663. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  664. data/spec/unit/mixin/securable_spec.rb +2 -3
  665. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  666. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  667. data/spec/unit/mixin/template_spec.rb +30 -30
  668. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  669. data/spec/unit/mixin/uris_spec.rb +1 -1
  670. data/spec/unit/mixin/user_context_spec.rb +1 -9
  671. data/spec/unit/mixin/which.rb +9 -1
  672. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  673. data/spec/unit/node/immutable_collections_spec.rb +8 -4
  674. data/spec/unit/node_spec.rb +103 -16
  675. data/spec/unit/platform/query_helpers_spec.rb +13 -14
  676. data/spec/unit/policy_builder/policyfile_spec.rb +11 -1
  677. data/spec/unit/property_spec.rb +6 -6
  678. data/spec/unit/provider/batch_spec.rb +130 -0
  679. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  680. data/spec/unit/provider/cron_spec.rb +43 -49
  681. data/spec/unit/provider/dsc_resource_spec.rb +30 -63
  682. data/spec/unit/provider/dsc_script_spec.rb +11 -11
  683. data/spec/unit/provider/execute_spec.rb +1 -8
  684. data/spec/unit/provider/git_spec.rb +3 -3
  685. data/spec/unit/provider/group/windows_spec.rb +6 -0
  686. data/spec/unit/provider/group_spec.rb +1 -1
  687. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  688. data/spec/unit/provider/mdadm_spec.rb +1 -3
  689. data/spec/unit/provider/mount/linux_spec.rb +107 -0
  690. data/spec/unit/provider/mount/mount_spec.rb +73 -10
  691. data/spec/unit/provider/mount/solaris_spec.rb +1 -1
  692. data/spec/unit/provider/mount/windows_spec.rb +1 -0
  693. data/spec/unit/provider/mount_spec.rb +31 -0
  694. data/spec/unit/provider/package/chocolatey_spec.rb +2 -3
  695. data/spec/unit/provider/package/dnf/python_helper_spec.rb +8 -2
  696. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
  697. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  698. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  699. data/spec/unit/provider/package/powershell_spec.rb +162 -99
  700. data/spec/unit/provider/package/rubygems_spec.rb +50 -20
  701. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  702. data/spec/unit/provider/package/snap_spec.rb +1 -1
  703. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  704. data/spec/unit/provider/package/windows_spec.rb +30 -53
  705. data/spec/unit/provider/package/zypper_spec.rb +0 -25
  706. data/spec/unit/provider/package_spec.rb +2 -2
  707. data/spec/unit/provider/powershell_script_spec.rb +20 -44
  708. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  709. data/spec/unit/provider/route_spec.rb +0 -2
  710. data/spec/unit/provider/script_spec.rb +20 -110
  711. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  712. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  713. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  714. data/spec/unit/provider/service/macosx_spec.rb +6 -6
  715. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  716. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  717. data/spec/unit/provider/service/windows_spec.rb +2 -6
  718. data/spec/unit/provider/subversion_spec.rb +0 -3
  719. data/spec/unit/provider/systemd_unit_spec.rb +29 -25
  720. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  721. data/spec/unit/provider/user_spec.rb +7 -1
  722. data/spec/unit/provider/windows_env_spec.rb +22 -37
  723. data/spec/unit/provider/windows_path_spec.rb +6 -11
  724. data/spec/unit/provider/windows_task_spec.rb +7 -6
  725. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  726. data/spec/unit/provider_spec.rb +1 -0
  727. data/spec/unit/recipe_spec.rb +1 -1
  728. data/spec/unit/resource/archive_file_spec.rb +23 -2
  729. data/spec/unit/resource/batch_spec.rb +6 -6
  730. data/spec/unit/resource/breakpoint_spec.rb +1 -1
  731. data/spec/unit/resource/build_essential_spec.rb +0 -12
  732. data/spec/unit/resource/chef_client_config_spec.rb +137 -0
  733. data/spec/unit/resource/chef_client_cron_spec.rb +51 -14
  734. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  735. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  736. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +43 -5
  737. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +68 -0
  738. data/spec/unit/resource/cron_spec.rb +2 -2
  739. data/spec/unit/resource/execute_spec.rb +123 -118
  740. data/spec/unit/resource/file/verification_spec.rb +2 -1
  741. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  742. data/spec/unit/resource/homebrew_cask_spec.rb +29 -11
  743. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  744. data/spec/unit/resource/ifconfig_spec.rb +2 -10
  745. data/spec/unit/resource/launchd_spec.rb +8 -0
  746. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  747. data/spec/unit/resource/mount_spec.rb +28 -5
  748. data/spec/unit/resource/osx_profile_spec.rb +299 -0
  749. data/spec/unit/resource/powershell_package_source_spec.rb +20 -20
  750. data/spec/unit/resource/powershell_script_spec.rb +15 -108
  751. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  752. data/spec/unit/resource/rhsm_subscription_spec.rb +50 -3
  753. data/spec/unit/resource/script_spec.rb +6 -1
  754. data/spec/unit/resource/service_spec.rb +2 -2
  755. data/spec/unit/resource/solaris_package_spec.rb +8 -10
  756. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  757. data/spec/unit/resource/timezone_spec.rb +64 -1
  758. data/spec/unit/{log_spec.rb → resource/user/windows_user_spec.rb} +16 -4
  759. data/spec/unit/resource/user_ulimit_spec.rb +14 -1
  760. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  761. data/spec/unit/resource/windows_certificate_spec.rb +12 -0
  762. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  763. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  764. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  765. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  766. data/spec/unit/resource/windows_package_spec.rb +1 -0
  767. data/spec/unit/resource/windows_task_spec.rb +1 -1
  768. data/spec/unit/resource/windows_uac_spec.rb +3 -3
  769. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  770. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  771. data/spec/unit/resource_inspector_spec.rb +10 -5
  772. data/spec/unit/resource_reporter_spec.rb +1 -1
  773. data/spec/unit/resource_spec.rb +137 -3
  774. data/spec/unit/role_spec.rb +30 -28
  775. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  776. data/spec/unit/run_lock_spec.rb +6 -2
  777. data/spec/unit/runner_spec.rb +1 -2
  778. data/spec/unit/scan_access_control_spec.rb +1 -1
  779. data/spec/unit/server_api_spec.rb +43 -16
  780. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  781. data/spec/unit/shell/shell_session_spec.rb +35 -64
  782. data/spec/unit/shell_spec.rb +18 -21
  783. data/spec/unit/train_transport_spec.rb +14 -13
  784. data/spec/unit/util/backup_spec.rb +1 -1
  785. data/spec/unit/util/diff_spec.rb +1 -15
  786. data/spec/unit/util/dsc/configuration_generator_spec.rb +80 -1
  787. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +27 -35
  788. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  789. data/spec/unit/util/selinux_spec.rb +4 -1
  790. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  791. data/spec/unit/win32/security_spec.rb +4 -3
  792. data/tasks/rspec.rb +2 -4
  793. metadata +172 -104
  794. data/lib/chef/dist.rb +0 -68
  795. data/lib/chef/monkey_patches/net_http.rb +0 -22
  796. data/lib/chef/provider/osx_profile.rb +0 -255
  797. data/lib/chef/provider/windows_env.rb +0 -210
  798. data/lib/chef/provider/windows_path.rb +0 -61
  799. data/lib/chef/provider/windows_task.rb +0 -635
  800. data/lib/chef/resource/cron.rb +0 -157
  801. data/lib/chef/util/powershell/cmdlet.rb +0 -173
  802. data/lib/chef/util/powershell/cmdlet_result.rb +0 -61
  803. data/spec/data/trusted_certs_empty/.gitkeep +0 -0
  804. data/spec/data/trusted_certs_empty/README.md +0 -1
  805. data/spec/functional/assets/yumrepo/repodata/4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2 +0 -0
  806. data/spec/functional/assets/yumrepo/repodata/74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz +0 -0
  807. data/spec/functional/assets/yumrepo/repodata/a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2 +0 -0
  808. data/spec/functional/assets/yumrepo/repodata/af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2 +0 -0
  809. data/spec/functional/assets/yumrepo/repodata/bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz +0 -0
  810. data/spec/functional/assets/yumrepo/repodata/c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz +0 -0
  811. data/spec/functional/util/powershell/cmdlet_spec.rb +0 -111
  812. data/spec/integration/knife/config_get_profile_spec.rb +0 -113
  813. data/spec/integration/knife/config_get_spec.rb +0 -191
  814. data/spec/integration/knife/config_list_profiles_spec.rb +0 -190
  815. data/spec/integration/knife/config_use_profile_spec.rb +0 -101
  816. data/spec/scripts/ssl-serve.rb +0 -47
  817. data/spec/support/mock/constant.rb +0 -52
  818. data/spec/unit/provider/osx_profile_spec.rb +0 -255
  819. data/spec/unit/provider_resolver_spec.rb +0 -885
  820. data/spec/unit/resource/data/InstallHistory_with_CLT.plist +0 -92
  821. data/spec/unit/resource/data/InstallHistory_without_CLT.plist +0 -38
  822. data/spec/unit/util/powershell/cmdlet_spec.rb +0 -106
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "../resource"
20
- require_relative "../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  class Resource
@@ -36,7 +36,7 @@ class Chef
36
36
 
37
37
  property :reason, String,
38
38
  description: "A string that describes the reboot action.",
39
- default: "Reboot by #{Chef::Dist::PRODUCT}"
39
+ default: "Reboot by #{ChefUtils::Dist::Infra::PRODUCT}"
40
40
 
41
41
  property :delay_mins, Integer,
42
42
  description: "The amount of time (in minutes) to delay a reboot request.",
@@ -27,7 +27,96 @@ class Chef
27
27
  provides(:registry_key) { true }
28
28
 
29
29
  description "Use the **registry_key** resource to create and delete registry keys in Microsoft Windows."
30
- introduced "11.0"
30
+ examples <<~'DOC'
31
+ **Create a registry key**
32
+
33
+ ```ruby
34
+ registry_key 'HKEY_LOCAL_MACHINE\\path-to-key\\Policies\\System' do
35
+ values [{
36
+ name: 'EnableLUA',
37
+ type: :dword,
38
+ data: 0
39
+ }]
40
+ action :create
41
+ end
42
+ ```
43
+
44
+ **Create a registry key with binary data: "\x01\x02\x03"**:
45
+
46
+ ```ruby
47
+ registry_key 'HKEY_CURRENT_USER\ChefTest' do
48
+ values [{
49
+ :name => "test",
50
+ :type => :binary,
51
+ :data => [0, 1, 2].map(&:chr).join
52
+ }]
53
+ action :create
54
+ end
55
+ ```
56
+
57
+ **Create 32-bit key in redirected wow6432 tree**
58
+
59
+ In 64-bit versions of Microsoft Windows, HKEY_LOCAL_MACHINE\SOFTWARE\Example is a re-directed key. In the following examples, because HKEY_LOCAL_MACHINE\SOFTWARE\Example is a 32-bit key, the output will be “Found 32-bit key” if they are run on a version of Microsoft Windows that is 64-bit:
60
+
61
+ ```ruby
62
+ registry_key 'HKEY_LOCAL_MACHINE\SOFTWARE\Example' do
63
+ architecture :i386
64
+ recursive true
65
+ action :create
66
+ end
67
+ ```
68
+
69
+ **Set proxy settings to be the same as those used by Chef Infra Client**
70
+
71
+ ```ruby
72
+ proxy = URI.parse(Chef::Config[:http_proxy])
73
+ registry_key 'HKCU\Software\Microsoft\path\to\key\Internet Settings' do
74
+ values [{name: 'ProxyEnable', type: :reg_dword, data: 1},
75
+ {name: 'ProxyServer', data: "#{proxy.host}:#{proxy.port}"},
76
+ {name: 'ProxyOverride', type: :reg_string, data: <local>},
77
+ ]
78
+ action :create
79
+ end
80
+ ```
81
+
82
+ **Set the name of a registry key to "(Default)"**
83
+
84
+ ```ruby
85
+ registry_key 'Set (Default) value' do
86
+ key 'HKLM\Software\Test\Key\Path'
87
+ values [
88
+ {name: '', type: :string, data: 'test'},
89
+ ]
90
+ action :create
91
+ end
92
+ ```
93
+
94
+ **Delete a registry key value**
95
+
96
+ ```ruby
97
+ registry_key 'HKEY_LOCAL_MACHINE\SOFTWARE\path\to\key\AU' do
98
+ values [{
99
+ name: 'NoAutoRebootWithLoggedOnUsers',
100
+ type: :dword,
101
+ data: ''
102
+ }]
103
+ action :delete
104
+ end
105
+ ```
106
+
107
+ Note: If data: is not specified, you get an error: Missing data key in RegistryKey values hash
108
+
109
+ **Delete a registry key and its subkeys, recursively**
110
+
111
+ ```ruby
112
+ registry_key 'HKCU\SOFTWARE\Policies\path\to\key\Themes' do
113
+ recursive true
114
+ action :delete_key
115
+ end
116
+ ```
117
+
118
+ Note: Be careful when using the :delete_key action with the recursive attribute. This will delete the registry key, all of its values and all of the names, types, and data associated with them. This cannot be undone by Chef Infra Client.
119
+ DOC
31
120
 
32
121
  state_attrs :values
33
122
 
@@ -72,6 +161,8 @@ class Chef
72
161
 
73
162
  property :key, String, name_property: true
74
163
 
164
+ VALID_VALUE_HASH_KEYS = %i{name type data}.freeze
165
+
75
166
  def values(arg = nil)
76
167
  if not arg.nil?
77
168
  if arg.is_a?(Hash)
@@ -89,7 +180,7 @@ class Chef
89
180
  raise ArgumentError, "Missing name key in RegistryKey values hash" unless v.key?(:name)
90
181
 
91
182
  v.each_key do |key|
92
- raise ArgumentError, "Bad key #{key} in RegistryKey values hash" unless %i{name type data}.include?(key)
183
+ raise ArgumentError, "Bad key #{key} in RegistryKey values hash" unless VALID_VALUE_HASH_KEYS.include?(key)
93
184
  end
94
185
  raise ArgumentError, "Type of name => #{v[:name]} should be string" unless v[:name].is_a?(String)
95
186
 
@@ -29,7 +29,7 @@ class Chef
29
29
 
30
30
  provides :remote_directory
31
31
 
32
- description "Use the **remote_directory** resource to incrementally transfer a directory from a cookbook to a node. The director that is copied from the cookbook should be located under COOKBOOK_NAME/files/default/REMOTE_DIRECTORY. The remote_directory resource will obey file specificity."
32
+ description "Use the **remote_directory** resource to incrementally transfer a directory from a cookbook to a node. The directory that is copied from the cookbook should be located under `COOKBOOK_NAME/files/default/REMOTE_DIRECTORY`. The `remote_directory` resource will obey file specificity."
33
33
 
34
34
  default_action :create
35
35
  allowed_actions :create, :create_if_missing, :delete
@@ -22,6 +22,7 @@ require_relative "file"
22
22
  require_relative "../provider/remote_file"
23
23
  require_relative "../mixin/securable"
24
24
  require_relative "../mixin/uris"
25
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
25
26
 
26
27
  class Chef
27
28
  class Resource
@@ -31,7 +32,7 @@ class Chef
31
32
 
32
33
  provides :remote_file
33
34
 
34
- description "Use the **remote_file** resource to transfer a file from a remote location using file specificity. This resource is similar to the file resource."
35
+ description "Use the **remote_file** resource to transfer a file from a remote location using file specificity. This resource is similar to the **file** resource. Note: Fetching files from the `files/` directory in a cookbook should be done with the **cookbook_file** resource."
35
36
 
36
37
  def initialize(name, run_context = nil)
37
38
  super
@@ -72,7 +73,8 @@ class Chef
72
73
  end
73
74
  end
74
75
 
75
- property :checksum, String
76
+ property :checksum, String,
77
+ description: "Optional, see `use_conditional_get`. The SHA-256 checksum of the file. Use to prevent a file from being re-downloaded. When the local file matches the checksum, #{ChefUtils::Dist::Infra::PRODUCT} does not download it."
76
78
 
77
79
  # Disable or enable ETag and Last Modified conditional GET. Equivalent to
78
80
  # use_etag(true_or_false)
@@ -82,25 +84,39 @@ class Chef
82
84
  use_last_modified(true_or_false)
83
85
  end
84
86
 
85
- property :use_etag, [ TrueClass, FalseClass ], default: true
87
+ property :use_etag, [ TrueClass, FalseClass ], default: true,
88
+ description: "Enable ETag headers. Set to false to disable ETag headers. To use this setting, `use_conditional_get` must also be set to true."
86
89
 
87
90
  alias :use_etags :use_etag
88
91
 
89
- property :use_last_modified, [ TrueClass, FalseClass ], default: true
92
+ property :use_last_modified, [ TrueClass, FalseClass ], default: true,
93
+ description: "Enable `If-Modified-Since` headers. Set to `false` to disable `If-Modified-Since` headers. To use this setting, `use_conditional_get` must also be set to `true`."
90
94
 
91
- property :ftp_active_mode, [ TrueClass, FalseClass ], default: false
95
+ property :ftp_active_mode, [ TrueClass, FalseClass ], default: false,
96
+ description: "Whether #{ChefUtils::Dist::Infra::PRODUCT} uses active or passive FTP. Set to `true` to use active FTP."
92
97
 
93
- property :headers, Hash, default: lazy { {} }
98
+ property :headers, Hash, default: lazy { {} },
99
+ description: "A Hash of custom HTTP headers."
94
100
 
95
101
  property :show_progress, [ TrueClass, FalseClass ], default: false
96
102
 
97
- property :remote_user, String
103
+ property :ssl_verify_mode, Symbol, equal_to: %i{verify_none verify_peer},
104
+ introduced: "16.2",
105
+ description: "Optional property to override SSL policy. If not specified, uses the SSL policy from `config.rb`."
98
106
 
99
- property :remote_domain, String
107
+ property :remote_user, String,
108
+ introduced: "13.4",
109
+ description: '**Windows only** The name of a user with access to the remote file specified by the source property. The user name may optionally be specified with a domain, such as: `domain\user` or `user@my.dns.domain.com` via Universal Principal Name (UPN) format. The domain may also be set using the `remote_domain` property. Note that this property is ignored if source is not a UNC path. If this property is specified, the `remote_password` property is required.'
100
110
 
101
- property :remote_password, String, sensitive: true
111
+ property :remote_domain, String,
112
+ introduced: "13.4",
113
+ description: "**Windows only** The domain of the user specified by the `remote_user` property. By default the resource will authenticate against the domain of the remote system, or as a local account if the remote system is not joined to a domain. If the remote system is not part of a domain, it is necessary to authenticate as a local user on the remote system by setting the domain to `.`, for example: remote_domain '.'. The domain may also be specified as part of the `remote_user` property."
102
114
 
103
- property :authentication, equal_to: %i{remote local}, default: :remote
115
+ property :remote_password, String, sensitive: true,
116
+ introduced: "13.4",
117
+ description: "**Windows only** The password of the user specified by the `remote_user` property. This property is required if `remote_user` is specified and may only be specified if `remote_user` is specified. The `sensitive` property for this resource will automatically be set to `true` if `remote_password` is specified."
118
+
119
+ property :authentication, Symbol, equal_to: %i{remote local}, default: :remote
104
120
 
105
121
  def after_created
106
122
  validate_identity_platform(remote_user, remote_password, remote_domain)
@@ -16,7 +16,7 @@
16
16
  #
17
17
 
18
18
  require_relative "../resource"
19
- require_relative "../dist"
19
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
20
20
  require "shellwords" unless defined?(Shellwords)
21
21
 
22
22
  class Chef
@@ -47,6 +47,10 @@ class Chef
47
47
  property :password, String,
48
48
  description: "The password to use when registering. This property is not applicable if using an activation key. If specified, username and environment are also required."
49
49
 
50
+ property :system_name, String,
51
+ description: "The name of the system to register, defaults to the hostname.",
52
+ introduced: "16.5"
53
+
50
54
  property :auto_attach,
51
55
  [TrueClass, FalseClass],
52
56
  description: "If true, RHSM will attempt to automatically attach the host to applicable subscriptions. It is generally better to use an activation key with the subscriptions pre-defined.",
@@ -61,7 +65,7 @@ class Chef
61
65
  default: false, desired_state: false
62
66
 
63
67
  property :https_for_ca_consumer, [TrueClass, FalseClass],
64
- description: "If true, #{Chef::Dist::PRODUCT} will fetch the katello-ca-consumer-latest.noarch.rpm from the satellite_host using HTTPS.",
68
+ description: "If true, #{ChefUtils::Dist::Infra::PRODUCT} will fetch the katello-ca-consumer-latest.noarch.rpm from the satellite_host using HTTPS.",
65
69
  default: false, desired_state: false,
66
70
  introduced: "15.9"
67
71
 
@@ -89,12 +93,17 @@ class Chef
89
93
  end
90
94
  end
91
95
 
96
+ package flush_package_cache_name do
97
+ action :nothing
98
+ end
99
+
92
100
  execute "Register to RHSM" do
93
101
  sensitive new_resource.sensitive
94
102
  command register_command
95
103
  default_env true
96
104
  action :run
97
105
  not_if { registered_with_rhsm? } unless new_resource.force
106
+ notifies :flush_cache, "package[#{flush_package_cache_name}]", :immediately
98
107
  end
99
108
 
100
109
  if new_resource.install_katello_agent && !new_resource.satellite_host.nil?
@@ -105,11 +114,16 @@ class Chef
105
114
  action :unregister do
106
115
  description "Unregister the node from RHSM."
107
116
 
117
+ package flush_package_cache_name do
118
+ action :nothing
119
+ end
120
+
108
121
  execute "Unregister from RHSM" do
109
122
  command "subscription-manager unregister"
110
123
  default_env true
111
124
  action :run
112
125
  only_if { registered_with_rhsm? }
126
+ notifies :flush_cache, "package[#{flush_package_cache_name}]", :immediately
113
127
  notifies :run, "execute[Clean RHSM Config]", :immediately
114
128
  end
115
129
 
@@ -121,24 +135,37 @@ class Chef
121
135
  end
122
136
 
123
137
  action_class do
138
+ #
139
+ # @return [String]
140
+ #
141
+ def flush_package_cache_name
142
+ "rhsm_register-#{new_resource.name}-flush_cache"
143
+ end
144
+
145
+ #
146
+ # @return [Symbol] dnf_package or yum_package depending on OS release
147
+ #
124
148
  def package_resource
125
149
  node["platform_version"].to_i >= 8 ? :dnf_package : :yum_package
126
150
  end
127
151
 
152
+ #
153
+ # @return [Boolean] is the node registered with RHSM
154
+ #
128
155
  def registered_with_rhsm?
129
- # FIXME: use shell_out
130
- cmd = Mixlib::ShellOut.new("subscription-manager status", env: { LANG: "en_US" })
131
- cmd.run_command
132
- !cmd.stdout.match(/Overall Status: Unknown/)
156
+ @registered ||= !shell_out("subscription-manager status").stdout.include?("Overall Status: Unknown")
133
157
  end
134
158
 
159
+ #
160
+ # @return [Boolean] is katello-ca-consumer installed
161
+ #
135
162
  def katello_cert_rpm_installed?
136
- # FIXME: use shell_out
137
- cmd = Mixlib::ShellOut.new("rpm -qa | grep katello-ca-consumer")
138
- cmd.run_command
139
- !cmd.stdout.match(/katello-ca-consumer/).nil?
163
+ shell_out("rpm -qa").stdout.include?("katello-ca-consumer")
140
164
  end
141
165
 
166
+ #
167
+ # @return [String] The URI to fetch katello-ca-consumer-latest.noarch.rpm from
168
+ #
142
169
  def ca_consumer_package_source
143
170
  protocol = new_resource.https_for_ca_consumer ? "https" : "http"
144
171
  "#{protocol}://#{new_resource.satellite_host}/pub/katello-ca-consumer-latest.noarch.rpm"
@@ -153,6 +180,7 @@ class Chef
153
180
 
154
181
  command << new_resource.activation_key.map { |key| "--activationkey=#{Shellwords.shellescape(key)}" }
155
182
  command << "--org=#{Shellwords.shellescape(new_resource.organization)}"
183
+ command << "--name=#{Shellwords.shellescape(new_resource.system_name)}" if new_resource.system_name
156
184
  command << "--force" if new_resource.force
157
185
 
158
186
  return command.join(" ")
@@ -165,6 +193,7 @@ class Chef
165
193
  command << "--username=#{Shellwords.shellescape(new_resource.username)}"
166
194
  command << "--password=#{Shellwords.shellescape(new_resource.password)}"
167
195
  command << "--environment=#{Shellwords.shellescape(new_resource.environment)}" if using_satellite_host?
196
+ command << "--name=#{Shellwords.shellescape(new_resource.system_name)}" if new_resource.system_name
168
197
  command << "--auto-attach" if new_resource.auto_attach
169
198
  command << "--force" if new_resource.force
170
199
 
@@ -34,11 +34,11 @@ class Chef
34
34
  action :attach do
35
35
  description "Attach the node to a subscription pool."
36
36
 
37
- execute "Attach subscription pool #{new_resource.pool_id}" do
38
- command "subscription-manager attach --pool=#{new_resource.pool_id}"
39
- default_env true
40
- action :run
41
- not_if { subscription_attached?(new_resource.pool_id) }
37
+ unless subscription_attached?(new_resource.pool_id)
38
+ converge_by("attach subscription pool #{new_resource.pool_id}") do
39
+ shell_out!("subscription-manager attach --pool=#{new_resource.pool_id}")
40
+ build_resource(:package, "rhsm_subscription-#{new_resource.pool_id}-flush_cache").run_action(:flush_cache)
41
+ end
42
42
  end
43
43
  end
44
44
 
@@ -43,7 +43,7 @@ class Chef
43
43
  description: "The route metric value."
44
44
 
45
45
  property :netmask, [String, nil],
46
- description: "The decimal representation of the network mask. For example: 255.255.255.0."
46
+ description: "The decimal representation of the network mask. For example: `255.255.255.0`."
47
47
 
48
48
  property :gateway, [String, nil],
49
49
  description: "The gateway for the route."
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require_relative "script"
20
- require_relative "../provider/script"
21
20
 
22
21
  class Chef
23
22
  class Resource
@@ -26,11 +25,7 @@ class Chef
26
25
 
27
26
  provides :ruby
28
27
 
29
- description "Use the **ruby** resource to execute scripts using the Ruby interpreter. This"\
30
- " resource may also use any of the actions and properties that are available"\
31
- " to the execute resource. Commands that are executed with this resource are (by"\
32
- " their nature) not idempotent, as they are typically unique to the environment"\
33
- " in which they are run. Use not_if and only_if to guard this resource for idempotence."
28
+ description "Use the **ruby** resource to execute scripts using the Ruby interpreter. This resource may also use any of the actions and properties that are available to the **execute** resource. Commands that are executed with this resource are (by their nature) not idempotent, as they are typically unique to the environment in which they are run. Use `not_if` and `only_if` to guard this resource for idempotence."
34
29
 
35
30
  def initialize(name, run_context = nil)
36
31
  super
@@ -19,7 +19,7 @@
19
19
 
20
20
  require_relative "../resource"
21
21
  require_relative "../provider/ruby_block"
22
- require_relative "../dist"
22
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
23
23
 
24
24
  class Chef
25
25
  class Resource
@@ -28,7 +28,7 @@ class Chef
28
28
 
29
29
  provides :ruby_block, target_mode: true
30
30
 
31
- description "Use the **ruby_block** resource to execute Ruby code during a #{Chef::Dist::PRODUCT} run. Ruby code in the ruby_block resource is evaluated with other resources during convergence, whereas Ruby code outside of a ruby_block resource is evaluated before other resources, as the recipe is compiled."
31
+ description "Use the **ruby_block** resource to execute Ruby code during a #{ChefUtils::Dist::Infra::PRODUCT} run. Ruby code in the `ruby_block` resource is evaluated with other resources during convergence, whereas Ruby code outside of a `ruby_block` resource is evaluated before other resources, as the recipe is compiled."
32
32
 
33
33
  default_action :run
34
34
  allowed_actions :create, :run
@@ -33,7 +33,8 @@ property :revision, String,
33
33
  default: "HEAD"
34
34
 
35
35
  property :user, [String, Integer],
36
- description: "The system user that will own the checked-out code."
36
+ description: "The system user that will own the checked-out code.",
37
+ default_description: "`HOME` environment variable of the user running #{ChefUtils::Dist::Infra::CLIENT}"
37
38
 
38
39
  property :group, [String, Integer],
39
40
  description: "The system group that will own the checked-out code."
@@ -28,6 +28,87 @@ class Chef
28
28
  provides :git
29
29
 
30
30
  description "Use the **git** resource to manage source control resources that exist in a git repository. git version 1.6.5 (or higher) is required to use all of the functionality in the git resource."
31
+ examples <<~DOC
32
+ **Use the git mirror**
33
+
34
+ ```ruby
35
+ git '/opt/my_sources/couch' do
36
+ repository 'git://git.apache.org/couchdb.git'
37
+ revision 'master'
38
+ action :sync
39
+ end
40
+ ```
41
+
42
+ **Use different branches**
43
+
44
+ To use different branches, depending on the environment of the node:
45
+
46
+ ```ruby
47
+ branch_name = if node.chef_environment == 'QA'
48
+ 'staging'
49
+ else
50
+ 'master'
51
+ end
52
+
53
+ git '/home/user/deployment' do
54
+ repository 'git@github.com:git_site/deployment.git'
55
+ revision branch_name
56
+ action :sync
57
+ user 'user'
58
+ group 'test'
59
+ end
60
+ ```
61
+
62
+ Where the `branch_name` variable is set to staging or master, depending on the environment of the node. Once this is determined, the `branch_name` variable is used to set the revision for the repository. If the git status command is used after running the example above, it will return the branch name as `deploy`, as this is the default value. Run Chef Infra Client in debug mode to verify that the correct branches are being checked out:
63
+
64
+ ```
65
+ sudo chef-client -l debug
66
+ ```
67
+
68
+ **Install an application from git using bash**
69
+
70
+ The following example shows how Bash can be used to install a plug-in for rbenv named ruby-build, which is located in git version source control. First, the application is synchronized, and then Bash changes its working directory to the location in which ruby-build is located, and then runs a command.
71
+
72
+ ```ruby
73
+ git "#{Chef::Config[:file_cache_path]}/ruby-build" do
74
+ repository 'git://github.com/rbenv/ruby-build.git'
75
+ revision 'master'
76
+ action :sync
77
+ end
78
+
79
+ bash 'install_ruby_build' do
80
+ cwd "#{Chef::Config[:file_cache_path]}/ruby-build"
81
+ user 'rbenv'
82
+ group 'rbenv'
83
+ code <<-EOH
84
+ ./install.sh
85
+ EOH
86
+ environment 'PREFIX' => '/usr/local'
87
+ end
88
+ ```
89
+
90
+ **Notify a resource post-checkout**
91
+
92
+ ```ruby
93
+ git "#{Chef::Config[:file_cache_path]}/my_app" do
94
+ repository node['my_app']['git_repository']
95
+ revision node['my_app']['git_revision']
96
+ action :sync
97
+ notifies :run, 'bash[compile_my_app]', :immediately
98
+ end
99
+ ```
100
+
101
+ **Pass in environment variables**
102
+
103
+ ```ruby
104
+ git '/opt/my_sources/couch' do
105
+ repository 'git://git.apache.org/couchdb.git'
106
+ revision 'master'
107
+ environment 'VAR' => 'whatever'
108
+ action :sync
109
+ end
110
+ ```
111
+ DOC
31
112
 
32
113
  property :additional_remotes, Hash,
33
114
  description: "A Hash of additional remotes that are added to the git repository configuration.",
@@ -41,7 +122,7 @@ class Chef
41
122
  default: false
42
123
 
43
124
  property :enable_checkout, [TrueClass, FalseClass],
44
- description: "Check out a repo from master. Set to false when using the checkout_branch attribute to prevent the git resource from attempting to check out master from master.",
125
+ description: "Check out a repo from master. Set to `false` when using the `checkout_branch` attribute to prevent the git resource from attempting to check out `master` from `master`.",
45
126
  default: true
46
127
 
47
128
  property :remote, String,
@@ -17,7 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require_relative "../../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  class Resource
@@ -29,6 +29,18 @@ class Chef
29
29
  provides :subversion
30
30
 
31
31
  description "Use the **subversion** resource to manage source control resources that exist in a Subversion repository."
32
+ examples <<~DOC
33
+ **Get the latest version of an application**
34
+
35
+ ```ruby
36
+ subversion 'CouchDB Edge' do
37
+ repository 'http://svn.apache.org/repos/asf/couchdb/trunk'
38
+ revision 'HEAD'
39
+ destination '/opt/my_sources/couch'
40
+ action :sync
41
+ end
42
+ ```
43
+ DOC
32
44
 
33
45
  allowed_actions :force_export
34
46
 
@@ -38,7 +50,7 @@ class Chef
38
50
  default: "--no-auth-cache"
39
51
 
40
52
  property :svn_info_args, [String, nil, FalseClass],
41
- description: "Use when the `svn info` command is used by #{Chef::Dist::PRODUCT} and arguments need to be passed. The `svn_arguments` command does not work when the `svn info` command is used.",
53
+ description: "Use when the `svn info` command is used by #{ChefUtils::Dist::Infra::PRODUCT} and arguments need to be passed. The `svn_arguments` command does not work when the `svn info` command is used.",
42
54
  coerce: proc { |v| v == false ? nil : v }, # coerce false to nil
43
55
  default: "--no-auth-cache"
44
56
 
@@ -29,9 +29,9 @@ class Chef
29
29
  identity_attr :name
30
30
 
31
31
  description "Use the **script** resource to execute scripts using a specified interpreter, such as Bash, csh, Perl, Python, or Ruby."\
32
- " This resource may also use any of the actions and properties that are available to the execute resource. Commands"\
32
+ " This resource may also use any of the actions and properties that are available to the **execute** resource. Commands"\
33
33
  " that are executed with this resource are (by their nature) not idempotent, as they are typically unique to the"\
34
- " environment in which they are run. Use not_if and only_if to guard this resource for idempotence."
34
+ " environment in which they are run. Use `not_if` and `only_if` to guard this resource for idempotence."
35
35
 
36
36
  def initialize(name, run_context = nil)
37
37
  super
@@ -20,13 +20,13 @@
20
20
  require "chef-utils/dsl/service" unless defined?(ChefUtils::DSL::Service)
21
21
  require_relative "../resource"
22
22
  require "shellwords" unless defined?(Shellwords)
23
- require_relative "../dist"
23
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
24
24
 
25
25
  class Chef
26
26
  class Resource
27
27
  class Service < Chef::Resource
28
- include ChefUtils::DSL::Service
29
- extend ChefUtils::DSL::Service
28
+ include Chef::Platform::ServiceHelpers
29
+ extend Chef::Platform::ServiceHelpers
30
30
  unified_mode true
31
31
 
32
32
  provides :service, target_mode: true
@@ -39,7 +39,7 @@ class Chef
39
39
 
40
40
  # this is a poor API please do not re-use this pattern
41
41
  property :supports, Hash, default: { restart: nil, reload: nil, status: nil },
42
- description: "A list of properties that controls how #{Chef::Dist::PRODUCT} is to attempt to manage a service: :restart, :reload, :status. For :restart, the init script or other service provider can use a restart command; if :restart is not specified, the #{Chef::Dist::CLIENT} attempts to stop and then start a service. For :reload, the init script or other service provider can use a reload command. For :status, the init script or other service provider can use a status command to determine if the service is running; if :status is not specified, the #{Chef::Dist::CLIENT} attempts to match the service_name against the process table as a regular expression, unless a pattern is specified as a parameter property. Default value: { restart: false, reload: false, status: false } for all platforms (except for the Red Hat platform family, which defaults to { restart: false, reload: false, status: true }.)",
42
+ description: "A list of properties that controls how #{ChefUtils::Dist::Infra::PRODUCT} is to attempt to manage a service: :restart, :reload, :status. For :restart, the init script or other service provider can use a restart command; if :restart is not specified, the #{ChefUtils::Dist::Infra::CLIENT} attempts to stop and then start a service. For :reload, the init script or other service provider can use a reload command. For :status, the init script or other service provider can use a status command to determine if the service is running; if :status is not specified, the #{ChefUtils::Dist::Infra::CLIENT} attempts to match the service_name against the process table as a regular expression, unless a pattern is specified as a parameter property. Default value: { restart: false, reload: false, status: false } for all platforms (except for the Red Hat platform family, which defaults to { restart: false, reload: false, status: true }.)",
43
43
  coerce: proc { |x| x.is_a?(Array) ? x.each_with_object({}) { |i, m| m[i] = true } : x }
44
44
 
45
45
  property :service_name, String,
@@ -82,7 +82,7 @@ class Chef
82
82
  # specify overrides for the start_command, stop_command and
83
83
  # restart_command properties.
84
84
  property :init_command, String,
85
- description: "The path to the init script that is associated with the service. Use init_command to prevent the need to specify overrides for the start_command, stop_command, and restart_command properties. When this property is not specified, the #{Chef::Dist::PRODUCT} will use the default init command for the service provider being used.",
85
+ description: "The path to the init script that is associated with the service. Use init_command to prevent the need to specify overrides for the start_command, stop_command, and restart_command properties. When this property is not specified, the #{ChefUtils::Dist::Infra::PRODUCT} will use the default init command for the service provider being used.",
86
86
  desired_state: false
87
87
 
88
88
  # if the service is enabled or not
@@ -25,8 +25,6 @@ class Chef
25
25
  unified_mode true
26
26
 
27
27
  provides :solaris_package
28
- provides :package, os: "solaris2", platform_family: "nexentacore"
29
- provides :package, os: "solaris2", platform_family: "solaris2", platform_version: "<= 5.10"
30
28
 
31
29
  description "Use the **solaris_package** resource to manage packages on the Solaris platform."
32
30