chef 16.11.7-universal-mingw32 → 17.2.29-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (733) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -21
  3. data/README.md +1 -1
  4. data/Rakefile +13 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +11 -24
  7. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.Wrapper.dll +0 -0
  8. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.dll +0 -0
  9. data/distro/ruby_bin_folder/AMD64/Newtonsoft.Json.dll +0 -0
  10. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  11. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  12. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  13. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +153 -149
  14. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Diagnostics.dll +0 -0
  15. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Management.dll +0 -0
  16. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Utility.dll +0 -0
  17. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.ConsoleHost.dll +0 -0
  18. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.CoreCLR.Eventing.dll +0 -0
  19. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.MarkdownRender.dll +0 -0
  20. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Security.dll +0 -0
  21. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Management.dll +0 -0
  22. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Runtime.dll +0 -0
  23. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Newtonsoft.Json.dll +0 -0
  24. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.Messages.dll +0 -0
  25. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.dll +0 -0
  26. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Common.dll +0 -0
  27. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Management.Automation.dll +0 -0
  28. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Pkcs.dll +0 -0
  29. data/distro/ruby_bin_folder/x86/Chef.PowerShell.dll +0 -0
  30. data/distro/ruby_bin_folder/x86/Chef.Powershell.Wrapper.dll +0 -0
  31. data/distro/ruby_bin_folder/x86/Newtonsoft.Json.dll +0 -0
  32. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  33. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  34. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  35. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +153 -149
  36. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Diagnostics.dll +0 -0
  37. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Management.dll +0 -0
  38. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Utility.dll +0 -0
  39. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.ConsoleHost.dll +0 -0
  40. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.CoreCLR.Eventing.dll +0 -0
  41. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.MarkdownRender.dll +0 -0
  42. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Security.dll +0 -0
  43. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Management.dll +0 -0
  44. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Runtime.dll +0 -0
  45. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Newtonsoft.Json.dll +0 -0
  46. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.Messages.dll +0 -0
  47. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.dll +0 -0
  48. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Common.dll +0 -0
  49. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Management.Automation.dll +0 -0
  50. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Pkcs.dll +0 -0
  51. data/lib/chef/action_collection.rb +6 -26
  52. data/lib/chef/application.rb +1 -1
  53. data/lib/chef/application/base.rb +16 -1
  54. data/lib/chef/applications.rb +0 -1
  55. data/lib/chef/chef_fs/command_line.rb +5 -2
  56. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  57. data/lib/chef/chef_fs/file_system.rb +9 -10
  58. data/lib/chef/client.rb +8 -2
  59. data/lib/chef/compliance/default_attributes.rb +5 -4
  60. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  61. data/lib/chef/compliance/reporter/automate.rb +17 -7
  62. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  63. data/lib/chef/compliance/reporter/cli.rb +77 -0
  64. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  65. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  66. data/lib/chef/compliance/runner.rb +65 -27
  67. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  68. data/lib/chef/cookbook/gem_installer.rb +5 -1
  69. data/lib/chef/cookbook/synchronizer.rb +3 -5
  70. data/lib/chef/cookbook_loader.rb +2 -4
  71. data/lib/chef/cookbook_uploader.rb +0 -1
  72. data/lib/chef/cookbook_version.rb +26 -4
  73. data/lib/chef/data_bag.rb +2 -1
  74. data/lib/chef/data_bag_item.rb +13 -3
  75. data/lib/chef/data_collector.rb +0 -1
  76. data/lib/chef/data_collector/run_end_message.rb +1 -1
  77. data/lib/chef/delayed_evaluator.rb +4 -0
  78. data/lib/chef/deprecated.rb +8 -0
  79. data/lib/chef/dsl/chef_vault.rb +6 -6
  80. data/lib/chef/dsl/declare_resource.rb +5 -10
  81. data/lib/chef/dsl/reboot_pending.rb +1 -2
  82. data/lib/chef/event_dispatch/base.rb +2 -1
  83. data/lib/chef/exceptions.rb +3 -0
  84. data/lib/chef/formatters/doc.rb +2 -1
  85. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  86. data/lib/chef/group.rb +75 -0
  87. data/lib/chef/handler.rb +46 -8
  88. data/lib/chef/handler/slow_report.rb +66 -0
  89. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  90. data/lib/chef/node.rb +21 -20
  91. data/lib/chef/node/attribute.rb +6 -4
  92. data/lib/chef/node/immutable_collections.rb +13 -0
  93. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  94. data/lib/chef/org.rb +3 -2
  95. data/lib/chef/property.rb +18 -0
  96. data/lib/chef/provider.rb +1 -1
  97. data/lib/chef/provider/cron.rb +1 -1
  98. data/lib/chef/provider/directory.rb +6 -6
  99. data/lib/chef/provider/execute.rb +2 -1
  100. data/lib/chef/provider/file.rb +2 -2
  101. data/lib/chef/provider/git.rb +5 -7
  102. data/lib/chef/provider/group/groupadd.rb +3 -3
  103. data/lib/chef/provider/group/groupmod.rb +3 -3
  104. data/lib/chef/provider/group/pw.rb +3 -3
  105. data/lib/chef/provider/ifconfig.rb +2 -2
  106. data/lib/chef/provider/link.rb +3 -3
  107. data/lib/chef/provider/mount.rb +12 -7
  108. data/lib/chef/provider/mount/aix.rb +3 -3
  109. data/lib/chef/provider/mount/mount.rb +5 -5
  110. data/lib/chef/provider/mount/windows.rb +1 -1
  111. data/lib/chef/provider/package.rb +17 -21
  112. data/lib/chef/provider/package/apt.rb +27 -1
  113. data/lib/chef/provider/package/deb.rb +3 -3
  114. data/lib/chef/provider/package/dnf/dnf_helper.py +12 -11
  115. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  116. data/lib/chef/provider/package/portage.rb +2 -2
  117. data/lib/chef/provider/package/rubygems.rb +11 -17
  118. data/lib/chef/provider/package/windows.rb +2 -4
  119. data/lib/chef/provider/package/yum.rb +1 -4
  120. data/lib/chef/provider/package/yum/python_helper.rb +15 -10
  121. data/lib/chef/provider/package/yum/yum_helper.py +47 -63
  122. data/lib/chef/provider/registry_key.rb +1 -1
  123. data/lib/chef/provider/route.rb +2 -2
  124. data/lib/chef/provider/service.rb +6 -6
  125. data/lib/chef/provider/service/aixinit.rb +1 -1
  126. data/lib/chef/provider/service/debian.rb +1 -1
  127. data/lib/chef/provider/service/freebsd.rb +15 -21
  128. data/lib/chef/provider/service/macosx.rb +7 -7
  129. data/lib/chef/provider/service/systemd.rb +43 -14
  130. data/lib/chef/provider/service/upstart.rb +2 -13
  131. data/lib/chef/provider/service/windows.rb +12 -12
  132. data/lib/chef/provider/subversion.rb +10 -12
  133. data/lib/chef/provider/support/zypper_repo.erb +4 -2
  134. data/lib/chef/provider/systemd_unit.rb +36 -10
  135. data/lib/chef/provider/template/content.rb +3 -7
  136. data/lib/chef/provider/user.rb +2 -2
  137. data/lib/chef/provider/user/dscl.rb +1 -1
  138. data/lib/chef/provider/user/mac.rb +17 -20
  139. data/lib/chef/provider/user/pw.rb +1 -1
  140. data/lib/chef/provider/user/windows.rb +1 -1
  141. data/lib/chef/provider/windows_script.rb +1 -1
  142. data/lib/chef/provider/zypper_repository.rb +28 -32
  143. data/lib/chef/providers.rb +0 -1
  144. data/lib/chef/resource.rb +6 -7
  145. data/lib/chef/resource/alternatives.rb +6 -6
  146. data/lib/chef/resource/apt_package.rb +1 -1
  147. data/lib/chef/resource/apt_preference.rb +2 -2
  148. data/lib/chef/resource/apt_repository.rb +6 -6
  149. data/lib/chef/resource/apt_update.rb +5 -4
  150. data/lib/chef/resource/archive_file.rb +2 -3
  151. data/lib/chef/resource/breakpoint.rb +1 -1
  152. data/lib/chef/resource/build_essential.rb +2 -6
  153. data/lib/chef/resource/chef_client_config.rb +3 -3
  154. data/lib/chef/resource/chef_client_cron.rb +4 -4
  155. data/lib/chef/resource/chef_client_launchd.rb +6 -6
  156. data/lib/chef/resource/chef_client_scheduled_task.rb +15 -15
  157. data/lib/chef/resource/chef_client_systemd_timer.rb +4 -4
  158. data/lib/chef/resource/chef_handler.rb +3 -7
  159. data/lib/chef/resource/chef_sleep.rb +1 -1
  160. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  161. data/lib/chef/resource/chocolatey_config.rb +2 -6
  162. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  163. data/lib/chef/resource/chocolatey_source.rb +4 -10
  164. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  165. data/lib/chef/resource/cron/cron_d.rb +4 -6
  166. data/lib/chef/resource/cron_access.rb +2 -4
  167. data/lib/chef/resource/dmg_package.rb +6 -10
  168. data/lib/chef/resource/dpkg_package.rb +1 -1
  169. data/lib/chef/resource/execute.rb +8 -3
  170. data/lib/chef/resource/file.rb +1 -1
  171. data/lib/chef/resource/group.rb +6 -6
  172. data/lib/chef/resource/homebrew_cask.rb +17 -10
  173. data/lib/chef/resource/homebrew_package.rb +1 -1
  174. data/lib/chef/resource/homebrew_tap.rb +4 -7
  175. data/lib/chef/resource/homebrew_update.rb +2 -2
  176. data/lib/chef/resource/hostname.rb +68 -22
  177. data/lib/chef/resource/http_request.rb +1 -1
  178. data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
  179. data/lib/chef/resource/kernel_module.rb +6 -17
  180. data/lib/chef/resource/locale.rb +2 -3
  181. data/lib/chef/resource/lwrp_base.rb +19 -0
  182. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  183. data/lib/chef/resource/mdadm.rb +53 -7
  184. data/lib/chef/resource/mount.rb +2 -1
  185. data/lib/chef/resource/ohai_hint.rb +2 -6
  186. data/lib/chef/resource/openbsd_package.rb +17 -0
  187. data/lib/chef/resource/openssl_dhparam.rb +1 -2
  188. data/lib/chef/resource/openssl_ec_private_key.rb +3 -5
  189. data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
  190. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -4
  191. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
  192. data/lib/chef/resource/openssl_x509_certificate.rb +3 -6
  193. data/lib/chef/resource/openssl_x509_crl.rb +1 -3
  194. data/lib/chef/resource/openssl_x509_request.rb +1 -3
  195. data/lib/chef/resource/osx_profile.rb +3 -3
  196. data/lib/chef/resource/plist.rb +8 -8
  197. data/lib/chef/resource/powershell_package_source.rb +2 -4
  198. data/lib/chef/resource/powershell_script.rb +1 -1
  199. data/lib/chef/resource/reboot.rb +38 -9
  200. data/lib/chef/resource/remote_directory.rb +2 -2
  201. data/lib/chef/resource/remote_file.rb +3 -3
  202. data/lib/chef/resource/rhsm_errata.rb +16 -3
  203. data/lib/chef/resource/rhsm_errata_level.rb +11 -6
  204. data/lib/chef/resource/rhsm_register.rb +12 -6
  205. data/lib/chef/resource/rhsm_repo.rb +17 -6
  206. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  207. data/lib/chef/resource/scm/git.rb +1 -1
  208. data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
  209. data/lib/chef/resource/sudo.rb +8 -12
  210. data/lib/chef/resource/swap_file.rb +2 -6
  211. data/lib/chef/resource/sysctl.rb +2 -6
  212. data/lib/chef/resource/systemd_unit.rb +2 -2
  213. data/lib/chef/resource/template.rb +1 -1
  214. data/lib/chef/resource/timezone.rb +1 -3
  215. data/lib/chef/resource/user/mac_user.rb +1 -1
  216. data/lib/chef/resource/user_ulimit.rb +2 -2
  217. data/lib/chef/resource/windows_ad_join.rb +2 -6
  218. data/lib/chef/resource/windows_audit_policy.rb +2 -2
  219. data/lib/chef/resource/windows_auto_run.rb +2 -5
  220. data/lib/chef/resource/windows_certificate.rb +207 -73
  221. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  222. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  223. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  224. data/lib/chef/resource/windows_dns_record.rb +2 -6
  225. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  226. data/lib/chef/resource/windows_env.rb +6 -5
  227. data/lib/chef/resource/windows_feature.rb +3 -9
  228. data/lib/chef/resource/windows_feature_dism.rb +3 -9
  229. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  230. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  231. data/lib/chef/resource/windows_firewall_rule.rb +20 -9
  232. data/lib/chef/resource/windows_font.rb +3 -5
  233. data/lib/chef/resource/windows_pagefile.rb +104 -69
  234. data/lib/chef/resource/windows_path.rb +4 -4
  235. data/lib/chef/resource/windows_printer.rb +8 -23
  236. data/lib/chef/resource/windows_printer_port.rb +49 -66
  237. data/lib/chef/resource/windows_security_policy.rb +56 -40
  238. data/lib/chef/resource/windows_share.rb +14 -21
  239. data/lib/chef/resource/windows_shortcut.rb +4 -6
  240. data/lib/chef/resource/windows_task.rb +19 -7
  241. data/lib/chef/resource/windows_uac.rb +3 -5
  242. data/lib/chef/resource/windows_user_privilege.rb +4 -4
  243. data/lib/chef/resource/windows_workgroup.rb +3 -4
  244. data/lib/chef/resource/yum_package.rb +10 -10
  245. data/lib/chef/resource/zypper_package.rb +4 -4
  246. data/lib/chef/resource/zypper_repository.rb +28 -8
  247. data/lib/chef/resource_builder.rb +8 -2
  248. data/lib/chef/resource_reporter.rb +0 -1
  249. data/lib/chef/resources.rb +1 -1
  250. data/lib/chef/run_lock.rb +1 -1
  251. data/lib/chef/runner.rb +1 -1
  252. data/lib/chef/shell/ext.rb +3 -3
  253. data/lib/chef/user.rb +0 -1
  254. data/lib/chef/user_v1.rb +3 -4
  255. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  256. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  257. data/lib/chef/version.rb +1 -1
  258. data/lib/chef/win32/api.rb +9 -2
  259. data/lib/chef/win32/registry.rb +4 -2
  260. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  261. data/spec/data/lwrp/resources/bar.rb +2 -0
  262. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  263. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  264. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  265. data/spec/data/lwrp/resources/foo.rb +2 -0
  266. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  267. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  268. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  269. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  270. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  271. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  272. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  273. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  274. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  275. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  276. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  277. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  278. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  279. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  280. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  281. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  282. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  283. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  284. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  285. data/spec/functional/resource/apt_package_spec.rb +1 -1
  286. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  287. data/spec/functional/resource/cron_spec.rb +1 -1
  288. data/spec/functional/resource/dnf_package_spec.rb +857 -534
  289. data/spec/functional/resource/group_spec.rb +1 -1
  290. data/spec/functional/resource/link_spec.rb +1 -1
  291. data/spec/functional/resource/registry_spec.rb +8 -8
  292. data/spec/functional/resource/remote_file_spec.rb +1 -1
  293. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  294. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  295. data/spec/functional/resource/windows_env_spec.rb +2 -2
  296. data/spec/functional/resource/windows_hostname_spec.rb +91 -0
  297. data/spec/functional/resource/windows_pagefile_spec.rb +98 -0
  298. data/spec/functional/resource/yum_package_spec.rb +495 -428
  299. data/spec/functional/version_spec.rb +1 -1
  300. data/spec/functional/win32/registry_spec.rb +1 -1
  301. data/spec/integration/client/client_spec.rb +5 -22
  302. data/spec/integration/client/exit_code_spec.rb +1 -1
  303. data/spec/integration/client/ipv6_spec.rb +1 -1
  304. data/spec/integration/compliance/compliance_spec.rb +1 -1
  305. data/spec/integration/ohai/ohai_spec.rb +7 -6
  306. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  307. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  308. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  309. data/spec/integration/recipes/notifies_spec.rb +15 -1
  310. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  311. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  312. data/spec/integration/recipes/unified_mode_spec.rb +71 -1
  313. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  314. data/spec/spec_helper.rb +14 -13
  315. data/spec/support/chef_helpers.rb +1 -17
  316. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  317. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  318. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  319. data/spec/support/matchers/leak.rb +7 -9
  320. data/spec/support/platform_helpers.rb +5 -8
  321. data/spec/support/shared/functional/execute_resource.rb +1 -1
  322. data/spec/support/shared/integration/integration_helper.rb +0 -1
  323. data/spec/support/shared/unit/provider/file.rb +15 -1
  324. data/spec/support/shared/unit/script_resource.rb +2 -2
  325. data/spec/unit/application/solo_spec.rb +2 -2
  326. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  327. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  328. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  329. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  330. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  331. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  332. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  333. data/spec/unit/compliance/runner_spec.rb +31 -5
  334. data/spec/unit/cookbook_version_spec.rb +52 -0
  335. data/spec/unit/data_bag_item_spec.rb +3 -8
  336. data/spec/unit/data_bag_spec.rb +1 -1
  337. data/spec/unit/data_collector_spec.rb +47 -1
  338. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  339. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  340. data/spec/unit/handler_spec.rb +8 -2
  341. data/spec/unit/lwrp_spec.rb +1 -1
  342. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  343. data/spec/unit/node/attribute_spec.rb +1 -1
  344. data/spec/unit/node_spec.rb +78 -0
  345. data/spec/unit/org_group_spec.rb +45 -0
  346. data/spec/unit/property_spec.rb +23 -22
  347. data/spec/unit/provider/cron_spec.rb +1 -1
  348. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  349. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  350. data/spec/unit/provider/group/pw_spec.rb +2 -2
  351. data/spec/unit/provider/group_spec.rb +1 -1
  352. data/spec/unit/provider/link_spec.rb +1 -1
  353. data/spec/unit/provider/mount/mount_spec.rb +51 -0
  354. data/spec/unit/provider/package/apt_spec.rb +84 -18
  355. data/spec/unit/provider/package/deb_spec.rb +3 -3
  356. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  357. data/spec/unit/provider/package/rubygems_spec.rb +21 -33
  358. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  359. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  360. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  361. data/spec/unit/provider/service/macosx_spec.rb +5 -5
  362. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  363. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  364. data/spec/unit/provider/service/windows_spec.rb +2 -2
  365. data/spec/unit/provider/subversion_spec.rb +2 -2
  366. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  367. data/spec/unit/provider/zypper_repository_spec.rb +5 -12
  368. data/spec/unit/provider_spec.rb +0 -8
  369. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  370. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  371. data/spec/unit/resource/windows_firewall_rule_spec.rb +12 -7
  372. data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
  373. data/spec/unit/resource/windows_task_spec.rb +1 -1
  374. data/spec/unit/resource/zypper_repository_spec.rb +1 -1
  375. data/spec/unit/user_spec.rb +1 -1
  376. data/spec/unit/user_v1_spec.rb +6 -4
  377. data/tasks/rspec.rb +9 -6
  378. metadata +26 -528
  379. data/bin/knife +0 -24
  380. data/lib/chef/application/knife.rb +0 -234
  381. data/lib/chef/application/windows_service.rb +0 -338
  382. data/lib/chef/application/windows_service_manager.rb +0 -205
  383. data/lib/chef/chef_fs/knife.rb +0 -160
  384. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  385. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  386. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  387. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  388. data/lib/chef/knife.rb +0 -665
  389. data/lib/chef/knife/acl_add.rb +0 -57
  390. data/lib/chef/knife/acl_base.rb +0 -183
  391. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  392. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  393. data/lib/chef/knife/acl_remove.rb +0 -62
  394. data/lib/chef/knife/acl_show.rb +0 -56
  395. data/lib/chef/knife/bootstrap.rb +0 -1192
  396. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  397. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  398. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  399. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  400. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  401. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  402. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  403. data/lib/chef/knife/client_create.rb +0 -101
  404. data/lib/chef/knife/client_delete.rb +0 -62
  405. data/lib/chef/knife/client_edit.rb +0 -52
  406. data/lib/chef/knife/client_key_create.rb +0 -73
  407. data/lib/chef/knife/client_key_delete.rb +0 -80
  408. data/lib/chef/knife/client_key_edit.rb +0 -83
  409. data/lib/chef/knife/client_key_list.rb +0 -73
  410. data/lib/chef/knife/client_key_show.rb +0 -80
  411. data/lib/chef/knife/client_list.rb +0 -41
  412. data/lib/chef/knife/client_reregister.rb +0 -58
  413. data/lib/chef/knife/client_show.rb +0 -48
  414. data/lib/chef/knife/config_get.rb +0 -39
  415. data/lib/chef/knife/config_get_profile.rb +0 -37
  416. data/lib/chef/knife/config_list.rb +0 -139
  417. data/lib/chef/knife/config_list_profiles.rb +0 -37
  418. data/lib/chef/knife/config_show.rb +0 -127
  419. data/lib/chef/knife/config_use.rb +0 -61
  420. data/lib/chef/knife/config_use_profile.rb +0 -47
  421. data/lib/chef/knife/configure.rb +0 -150
  422. data/lib/chef/knife/configure_client.rb +0 -48
  423. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  424. data/lib/chef/knife/cookbook_delete.rb +0 -151
  425. data/lib/chef/knife/cookbook_download.rb +0 -142
  426. data/lib/chef/knife/cookbook_list.rb +0 -47
  427. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  428. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  429. data/lib/chef/knife/cookbook_show.rb +0 -98
  430. data/lib/chef/knife/cookbook_upload.rb +0 -292
  431. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  432. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  433. data/lib/chef/knife/core/formatting_options.rb +0 -49
  434. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  435. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  436. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  437. data/lib/chef/knife/core/node_editor.rb +0 -130
  438. data/lib/chef/knife/core/node_presenter.rb +0 -133
  439. data/lib/chef/knife/core/object_loader.rb +0 -115
  440. data/lib/chef/knife/core/status_presenter.rb +0 -147
  441. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  442. data/lib/chef/knife/core/text_formatter.rb +0 -85
  443. data/lib/chef/knife/core/ui.rb +0 -338
  444. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -406
  445. data/lib/chef/knife/data_bag_create.rb +0 -81
  446. data/lib/chef/knife/data_bag_delete.rb +0 -49
  447. data/lib/chef/knife/data_bag_edit.rb +0 -74
  448. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  449. data/lib/chef/knife/data_bag_list.rb +0 -42
  450. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  451. data/lib/chef/knife/data_bag_show.rb +0 -69
  452. data/lib/chef/knife/delete.rb +0 -125
  453. data/lib/chef/knife/deps.rb +0 -156
  454. data/lib/chef/knife/diff.rb +0 -83
  455. data/lib/chef/knife/download.rb +0 -84
  456. data/lib/chef/knife/edit.rb +0 -88
  457. data/lib/chef/knife/environment_compare.rb +0 -128
  458. data/lib/chef/knife/environment_create.rb +0 -52
  459. data/lib/chef/knife/environment_delete.rb +0 -44
  460. data/lib/chef/knife/environment_edit.rb +0 -44
  461. data/lib/chef/knife/environment_from_file.rb +0 -84
  462. data/lib/chef/knife/environment_list.rb +0 -41
  463. data/lib/chef/knife/environment_show.rb +0 -47
  464. data/lib/chef/knife/exec.rb +0 -99
  465. data/lib/chef/knife/group_add.rb +0 -55
  466. data/lib/chef/knife/group_create.rb +0 -49
  467. data/lib/chef/knife/group_destroy.rb +0 -53
  468. data/lib/chef/knife/group_list.rb +0 -43
  469. data/lib/chef/knife/group_remove.rb +0 -56
  470. data/lib/chef/knife/group_show.rb +0 -49
  471. data/lib/chef/knife/key_create.rb +0 -112
  472. data/lib/chef/knife/key_create_base.rb +0 -50
  473. data/lib/chef/knife/key_delete.rb +0 -55
  474. data/lib/chef/knife/key_edit.rb +0 -118
  475. data/lib/chef/knife/key_edit_base.rb +0 -55
  476. data/lib/chef/knife/key_list.rb +0 -90
  477. data/lib/chef/knife/key_list_base.rb +0 -45
  478. data/lib/chef/knife/key_show.rb +0 -53
  479. data/lib/chef/knife/list.rb +0 -177
  480. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  481. data/lib/chef/knife/node_create.rb +0 -47
  482. data/lib/chef/knife/node_delete.rb +0 -46
  483. data/lib/chef/knife/node_edit.rb +0 -70
  484. data/lib/chef/knife/node_environment_set.rb +0 -53
  485. data/lib/chef/knife/node_from_file.rb +0 -51
  486. data/lib/chef/knife/node_list.rb +0 -44
  487. data/lib/chef/knife/node_policy_set.rb +0 -79
  488. data/lib/chef/knife/node_run_list_add.rb +0 -104
  489. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  490. data/lib/chef/knife/node_run_list_set.rb +0 -66
  491. data/lib/chef/knife/node_show.rb +0 -63
  492. data/lib/chef/knife/null.rb +0 -12
  493. data/lib/chef/knife/raw.rb +0 -123
  494. data/lib/chef/knife/recipe_list.rb +0 -32
  495. data/lib/chef/knife/rehash.rb +0 -50
  496. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  497. data/lib/chef/knife/role_create.rb +0 -53
  498. data/lib/chef/knife/role_delete.rb +0 -46
  499. data/lib/chef/knife/role_edit.rb +0 -45
  500. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  501. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  502. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  503. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  504. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  505. data/lib/chef/knife/role_from_file.rb +0 -51
  506. data/lib/chef/knife/role_list.rb +0 -42
  507. data/lib/chef/knife/role_run_list_add.rb +0 -87
  508. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  509. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  510. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  511. data/lib/chef/knife/role_run_list_set.rb +0 -69
  512. data/lib/chef/knife/role_show.rb +0 -48
  513. data/lib/chef/knife/search.rb +0 -194
  514. data/lib/chef/knife/serve.rb +0 -65
  515. data/lib/chef/knife/show.rb +0 -72
  516. data/lib/chef/knife/ssh.rb +0 -645
  517. data/lib/chef/knife/ssl_check.rb +0 -284
  518. data/lib/chef/knife/ssl_fetch.rb +0 -161
  519. data/lib/chef/knife/status.rb +0 -95
  520. data/lib/chef/knife/supermarket_download.rb +0 -121
  521. data/lib/chef/knife/supermarket_install.rb +0 -192
  522. data/lib/chef/knife/supermarket_list.rb +0 -76
  523. data/lib/chef/knife/supermarket_search.rb +0 -53
  524. data/lib/chef/knife/supermarket_share.rb +0 -166
  525. data/lib/chef/knife/supermarket_show.rb +0 -66
  526. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  527. data/lib/chef/knife/tag_create.rb +0 -52
  528. data/lib/chef/knife/tag_delete.rb +0 -60
  529. data/lib/chef/knife/tag_list.rb +0 -47
  530. data/lib/chef/knife/upload.rb +0 -86
  531. data/lib/chef/knife/user_create.rb +0 -107
  532. data/lib/chef/knife/user_delete.rb +0 -44
  533. data/lib/chef/knife/user_dissociate.rb +0 -42
  534. data/lib/chef/knife/user_edit.rb +0 -52
  535. data/lib/chef/knife/user_invite_add.rb +0 -43
  536. data/lib/chef/knife/user_invite_list.rb +0 -34
  537. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  538. data/lib/chef/knife/user_key_create.rb +0 -73
  539. data/lib/chef/knife/user_key_delete.rb +0 -80
  540. data/lib/chef/knife/user_key_edit.rb +0 -83
  541. data/lib/chef/knife/user_key_list.rb +0 -73
  542. data/lib/chef/knife/user_key_show.rb +0 -80
  543. data/lib/chef/knife/user_list.rb +0 -42
  544. data/lib/chef/knife/user_reregister.rb +0 -59
  545. data/lib/chef/knife/user_show.rb +0 -48
  546. data/lib/chef/knife/xargs.rb +0 -282
  547. data/lib/chef/knife/yaml_convert.rb +0 -91
  548. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  549. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  550. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  551. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  552. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  553. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  554. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  555. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  556. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  557. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
  558. data/lib/chef/resource/user/dscl_user.rb +0 -35
  559. data/spec/functional/knife/configure_spec.rb +0 -33
  560. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  561. data/spec/functional/knife/exec_spec.rb +0 -55
  562. data/spec/functional/knife/rehash_spec.rb +0 -39
  563. data/spec/functional/knife/smoke_test.rb +0 -42
  564. data/spec/functional/knife/ssh_spec.rb +0 -352
  565. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  566. data/spec/functional/resource/windows_service_spec.rb +0 -105
  567. data/spec/functional/win32/service_manager_spec.rb +0 -220
  568. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  569. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  570. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  571. data/spec/integration/knife/chefignore_spec.rb +0 -301
  572. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  573. data/spec/integration/knife/client_create_spec.rb +0 -70
  574. data/spec/integration/knife/client_delete_spec.rb +0 -64
  575. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  576. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  577. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  578. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  579. data/spec/integration/knife/client_list_spec.rb +0 -49
  580. data/spec/integration/knife/client_show_spec.rb +0 -37
  581. data/spec/integration/knife/common_options_spec.rb +0 -174
  582. data/spec/integration/knife/config_list_spec.rb +0 -220
  583. data/spec/integration/knife/config_show_spec.rb +0 -192
  584. data/spec/integration/knife/config_use_spec.rb +0 -198
  585. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  586. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  587. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  588. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  589. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  590. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  591. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  592. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  593. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  594. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  595. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  596. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  597. data/spec/integration/knife/delete_spec.rb +0 -1018
  598. data/spec/integration/knife/deps_spec.rb +0 -703
  599. data/spec/integration/knife/diff_spec.rb +0 -605
  600. data/spec/integration/knife/download_spec.rb +0 -1336
  601. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  602. data/spec/integration/knife/environment_create_spec.rb +0 -41
  603. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  604. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  605. data/spec/integration/knife/environment_list_spec.rb +0 -42
  606. data/spec/integration/knife/environment_show_spec.rb +0 -77
  607. data/spec/integration/knife/list_spec.rb +0 -1060
  608. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  609. data/spec/integration/knife/node_create_spec.rb +0 -47
  610. data/spec/integration/knife/node_delete_spec.rb +0 -48
  611. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  612. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  613. data/spec/integration/knife/node_list_spec.rb +0 -45
  614. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  615. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  616. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  617. data/spec/integration/knife/node_show_spec.rb +0 -36
  618. data/spec/integration/knife/raw_spec.rb +0 -297
  619. data/spec/integration/knife/redirection_spec.rb +0 -64
  620. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  621. data/spec/integration/knife/role_create_spec.rb +0 -41
  622. data/spec/integration/knife/role_delete_spec.rb +0 -48
  623. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  624. data/spec/integration/knife/role_list_spec.rb +0 -45
  625. data/spec/integration/knife/role_show_spec.rb +0 -51
  626. data/spec/integration/knife/search_node_spec.rb +0 -40
  627. data/spec/integration/knife/serve_spec.rb +0 -92
  628. data/spec/integration/knife/show_spec.rb +0 -197
  629. data/spec/integration/knife/upload_spec.rb +0 -1617
  630. data/spec/support/shared/functional/win32_service.rb +0 -57
  631. data/spec/unit/application/knife_spec.rb +0 -241
  632. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  633. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  634. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  635. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  636. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  637. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  638. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  639. data/spec/unit/knife/client_create_spec.rb +0 -169
  640. data/spec/unit/knife/client_delete_spec.rb +0 -99
  641. data/spec/unit/knife/client_edit_spec.rb +0 -53
  642. data/spec/unit/knife/client_list_spec.rb +0 -34
  643. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  644. data/spec/unit/knife/client_show_spec.rb +0 -52
  645. data/spec/unit/knife/configure_client_spec.rb +0 -81
  646. data/spec/unit/knife/configure_spec.rb +0 -190
  647. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  648. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  649. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  650. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  651. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  652. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  653. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  654. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  655. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  656. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  657. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  658. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  659. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  660. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  661. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  662. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  663. data/spec/unit/knife/core/ui_spec.rb +0 -656
  664. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  665. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  666. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  667. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  668. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  669. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  670. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  671. data/spec/unit/knife/environment_create_spec.rb +0 -91
  672. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  673. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  674. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  675. data/spec/unit/knife/environment_list_spec.rb +0 -54
  676. data/spec/unit/knife/environment_show_spec.rb +0 -52
  677. data/spec/unit/knife/key_create_spec.rb +0 -223
  678. data/spec/unit/knife/key_delete_spec.rb +0 -133
  679. data/spec/unit/knife/key_edit_spec.rb +0 -264
  680. data/spec/unit/knife/key_helper.rb +0 -74
  681. data/spec/unit/knife/key_list_spec.rb +0 -216
  682. data/spec/unit/knife/key_show_spec.rb +0 -126
  683. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  684. data/spec/unit/knife/node_delete_spec.rb +0 -77
  685. data/spec/unit/knife/node_edit_spec.rb +0 -116
  686. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  687. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  688. data/spec/unit/knife/node_list_spec.rb +0 -62
  689. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  690. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  691. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  692. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  693. data/spec/unit/knife/node_show_spec.rb +0 -65
  694. data/spec/unit/knife/raw_spec.rb +0 -43
  695. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  696. data/spec/unit/knife/role_create_spec.rb +0 -80
  697. data/spec/unit/knife/role_delete_spec.rb +0 -67
  698. data/spec/unit/knife/role_edit_spec.rb +0 -77
  699. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  700. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  701. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  702. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  703. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  704. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  705. data/spec/unit/knife/role_list_spec.rb +0 -54
  706. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  707. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  708. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  709. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  710. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  711. data/spec/unit/knife/role_show_spec.rb +0 -59
  712. data/spec/unit/knife/ssh_spec.rb +0 -403
  713. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  714. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  715. data/spec/unit/knife/status_spec.rb +0 -112
  716. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  717. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  718. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  719. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  720. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  721. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  722. data/spec/unit/knife/tag_create_spec.rb +0 -23
  723. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  724. data/spec/unit/knife/tag_list_spec.rb +0 -23
  725. data/spec/unit/knife/user_create_spec.rb +0 -184
  726. data/spec/unit/knife/user_delete_spec.rb +0 -46
  727. data/spec/unit/knife/user_edit_spec.rb +0 -48
  728. data/spec/unit/knife/user_list_spec.rb +0 -36
  729. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  730. data/spec/unit/knife/user_show_spec.rb +0 -46
  731. data/spec/unit/knife_spec.rb +0 -634
  732. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  733. data/spec/unit/windows_service_spec.rb +0 -118
@@ -64,8 +64,7 @@ class Chef
64
64
  "default" => "/etc",
65
65
  }.freeze
66
66
 
67
- action :allow do
68
- description "Add the user to the cron.allow file."
67
+ action :allow, description: "Add the user to the cron.allow file." do
69
68
  allow_path = ::File.join(value_for_platform_family(CRON_PATHS), "cron.allow")
70
69
 
71
70
  with_run_context :root do
@@ -81,8 +80,7 @@ class Chef
81
80
  end
82
81
  end
83
82
 
84
- action :deny do
85
- description "Add the user to the cron.deny file."
83
+ action :deny, description: "Add the user to the cron.deny file." do
86
84
  deny_path = ::File.join(value_for_platform_family(CRON_PATHS), "cron.deny")
87
85
 
88
86
  with_run_context :root do
@@ -121,9 +121,7 @@ class Chef
121
121
  end
122
122
  end
123
123
 
124
- action :install do
125
- description "Installs the application."
126
-
124
+ action :install, description: "Installs the application." do
127
125
  if current_resource.nil?
128
126
  if new_resource.source
129
127
  remote_file dmg_file do
@@ -171,13 +169,11 @@ class Chef
171
169
  action_class do
172
170
  # @return [String] the path to the dmg file
173
171
  def dmg_file
174
- @dmg_file ||= begin
175
- if new_resource.file.nil?
176
- "#{Chef::Config[:file_cache_path]}/#{new_resource.dmg_name}.dmg"
177
- else
178
- new_resource.file
179
- end
180
- end
172
+ @dmg_file ||= if new_resource.file.nil?
173
+ "#{Chef::Config[:file_cache_path]}/#{new_resource.dmg_name}.dmg"
174
+ else
175
+ new_resource.file
176
+ end
181
177
  end
182
178
 
183
179
  # @return [String] the hdiutil flag for handling DMGs with a password
@@ -36,7 +36,7 @@ class Chef
36
36
 
37
37
  property :response_file_variables, Hash,
38
38
  description: "A Hash of response file variables in the form of {'VARIABLE' => 'VALUE'}.",
39
- default: lazy { {} }, desired_state: false
39
+ default: {}, desired_state: false
40
40
  end
41
41
  end
42
42
  end
@@ -572,6 +572,10 @@ class Chef
572
572
  introduced: "16.2",
573
573
  description: "An optional property to set the input sent to the command as STDIN."
574
574
 
575
+ property :login, [ TrueClass, FalseClass ], default: false,
576
+ introduced: "17.0",
577
+ description: "Use a login shell to run the commands instead of inheriting the existing execution environment."
578
+
575
579
  alias :env :environment
576
580
 
577
581
  def self.set_guard_inherited_attributes(*inherited_attributes)
@@ -629,13 +633,13 @@ class Chef
629
633
  end
630
634
 
631
635
  # if domain is provided in both username and domain
632
- if specified_user.is_a?(String) && ((specified_user.include? '\\') || (specified_user.include? "@")) && specified_domain
636
+ if specified_user.is_a?(String) && ((specified_user.include? "\\") || (specified_user.include? "@")) && specified_domain
633
637
  raise ArgumentError, "The domain is provided twice. Username: `#{specified_user}`, Domain: `#{specified_domain}`. Please specify domain only once."
634
638
  end
635
639
 
636
640
  if specified_user.is_a?(String) && specified_domain.nil?
637
641
  # Splitting username of format: Domain\Username
638
- domain_and_user = user.split('\\')
642
+ domain_and_user = user.split("\\")
639
643
 
640
644
  if domain_and_user.length == 2
641
645
  domain = domain_and_user[0]
@@ -666,7 +670,8 @@ class Chef
666
670
  :group,
667
671
  :password,
668
672
  :user,
669
- :umask
673
+ :umask,
674
+ :login
670
675
  )
671
676
 
672
677
  end
@@ -81,7 +81,7 @@ class Chef
81
81
  property :manage_symlink_source, [ TrueClass, FalseClass ], desired_state: false,
82
82
  description: "Change the behavior of the file resource if it is pointed at a symlink. When this value is set to true, #{ChefUtils::Dist::Infra::PRODUCT} will manage the symlink's permissions or will replace the symlink with a normal file if the resource has content. When this value is set to false, #{ChefUtils::Dist::Infra::PRODUCT} will follow the symlink and will manage the permissions and content of symlink's target file. The default behavior is true but emits a warning that the default value will be changed to false in a future version; setting this explicitly to true or false suppresses this warning."
83
83
 
84
- property :verifications, Array, default: lazy { [] }
84
+ property :verifications, Array, default: lazy { [] }, desired_state: false, skip_docs: true
85
85
 
86
86
  def verify(command = nil, opts = {}, &block)
87
87
  unless command.nil? || [String, Symbol].include?(command.class)
@@ -37,22 +37,22 @@ class Chef
37
37
  property :gid, [ String, Integer ],
38
38
  description: "The identifier for the group."
39
39
 
40
- property :members, [String, Array], default: lazy { [] },
40
+ property :members, [String, Array], default: [],
41
41
  coerce: proc { |arg| arg.is_a?(String) ? arg.split(/\s*,\s*/) : arg },
42
42
  description: "Which users should be set or appended to a group. When more than one group member is identified, the list of members should be an array: members ['user1', 'user2']."
43
43
 
44
- property :excluded_members, [String, Array], default: lazy { [] },
44
+ property :excluded_members, [String, Array], default: [],
45
45
  coerce: proc { |arg| arg.is_a?(String) ? arg.split(/\s*,\s*/) : arg },
46
- description: "Remove users from a group. May only be used when append is set to true."
46
+ description: "Remove users from a group. May only be used when `append` is set to `true`."
47
47
 
48
48
  property :append, [ TrueClass, FalseClass ], default: false,
49
- description: "How members should be appended and/or removed from a group. When true, members are appended and excluded_members are removed. When false, group members are reset to the value of the members property."
49
+ description: "How members should be appended and/or removed from a group. When true, `members` are appended and `excluded_members` are removed. When `false`, group members are reset to the value of the `members` property."
50
50
 
51
51
  property :system, [ TrueClass, FalseClass ], default: false,
52
- description: "Set if a group belongs to a system group. Set to true if the group belongs to a system group."
52
+ description: "Set to `true` if the group belongs to a system group."
53
53
 
54
54
  property :non_unique, [ TrueClass, FalseClass ], default: false,
55
- description: "Allow gid duplication. May only be used with the Groupadd provider."
55
+ description: "Allow gid duplication. May only be used with the `Groupadd` user resource provider."
56
56
 
57
57
  property :comment, String,
58
58
  introduced: "14.9",
@@ -51,12 +51,16 @@ class Chef
51
51
 
52
52
  property :owner, [String, Integer],
53
53
  description: "The owner of the Homebrew installation.",
54
- default: lazy { find_homebrew_username }
55
-
56
- action :install do
57
- description "Install an application packaged as a Homebrew cask."
58
-
59
- homebrew_tap "homebrew/cask" if new_resource.install_cask
54
+ default: lazy { find_homebrew_username },
55
+ default_description: "Calculated default username"\
56
+
57
+ action :install, description: "Install an application that is packaged as a Homebrew cask." do
58
+ if new_resource.install_cask
59
+ homebrew_tap "homebrew/cask" do
60
+ homebrew_path new_resource.homebrew_path
61
+ owner new_resource.owner
62
+ end
63
+ end
60
64
 
61
65
  unless casked?
62
66
  converge_by("install cask #{new_resource.cask_name} #{new_resource.options}") do
@@ -68,10 +72,13 @@ class Chef
68
72
  end
69
73
  end
70
74
 
71
- action :remove do
72
- description "Remove an application packaged as a Homebrew cask."
73
-
74
- homebrew_tap "homebrew/cask" if new_resource.install_cask
75
+ action :remove, description: "Remove an application that is packaged as a Homebrew cask." do
76
+ if new_resource.install_cask
77
+ homebrew_tap "homebrew/cask" do
78
+ homebrew_path new_resource.homebrew_path
79
+ owner new_resource.owner
80
+ end
81
+ end
75
82
 
76
83
  if casked?
77
84
  converge_by("uninstall cask #{new_resource.cask_name}") do
@@ -62,7 +62,7 @@ class Chef
62
62
  DOC
63
63
 
64
64
  property :homebrew_user, [ String, Integer ],
65
- description: "The name or uid of the Homebrew owner to be used by #{ChefUtils::Dist::Infra::PRODUCT} when executing a command."
65
+ description: "The name or uid of the Homebrew owner to be used by #{ChefUtils::Dist::Infra::PRODUCT} when executing a command.\n\n#{ChefUtils::Dist::Infra::PRODUCT}, by default, will attempt to execute a Homebrew command as the owner of the `/usr/local/bin/brew` executable. If that executable does not exist, #{ChefUtils::Dist::Infra::PRODUCT} will attempt to find the user by executing `which brew`. If that executable cannot be found, #{ChefUtils::Dist::Infra::PRODUCT} will print an error message: `Could not find the 'brew' executable in /usr/local/bin or anywhere on the path.`.\n\nSet this property to specify the Homebrew owner for situations where Chef Infra Client cannot automatically detect the correct owner.'"
66
66
 
67
67
  end
68
68
  end
@@ -51,11 +51,10 @@ class Chef
51
51
 
52
52
  property :owner, String,
53
53
  description: "The owner of the Homebrew installation.",
54
- default: lazy { find_homebrew_username }
55
-
56
- action :tap do
57
- description "Add a Homebrew tap."
54
+ default: lazy { find_homebrew_username },
55
+ default_description: "Calculated default username"
58
56
 
57
+ action :tap, description: "Add a Homebrew tap." do
59
58
  unless tapped?(new_resource.tap_name)
60
59
  converge_by("tap #{new_resource.tap_name}") do
61
60
  shell_out!("#{new_resource.homebrew_path} tap #{new_resource.full ? "--full" : ""} #{new_resource.tap_name} #{new_resource.url || ""}",
@@ -66,9 +65,7 @@ class Chef
66
65
  end
67
66
  end
68
67
 
69
- action :untap do
70
- description "Remove a Homebrew tap."
71
-
68
+ action :untap, description: "Remove a Homebrew tap." do
72
69
  if tapped?(new_resource.tap_name)
73
70
  converge_by("untap #{new_resource.tap_name}") do
74
71
  shell_out!("#{new_resource.homebrew_path} untap #{new_resource.tap_name}",
@@ -88,7 +88,7 @@ class Chef
88
88
  end
89
89
  end
90
90
 
91
- action :periodic do
91
+ action :periodic, description: "Run a periodic update based on the frequency property." do
92
92
  return unless macos?
93
93
 
94
94
  unless brew_up_to_date?
@@ -98,7 +98,7 @@ class Chef
98
98
  end
99
99
  end
100
100
 
101
- action :update do
101
+ action :update, description: "Run an immediate update." do
102
102
  return unless macos?
103
103
 
104
104
  converge_by "force update new lists of packages" do
@@ -44,12 +44,34 @@ class Chef
44
44
  ipaddress '198.51.100.2'
45
45
  end
46
46
  ```
47
+
48
+ **Change the hostname of a Windows, Non-Domain joined node**:
49
+
50
+ ```ruby
51
+ hostname 'renaming a workgroup computer' do
52
+ hostname 'Foo'
53
+ end
54
+ ```
55
+
56
+ **Change the hostname of a Windows, Domain-joined node (new in 17.2)**:
57
+
58
+ ```ruby
59
+ hostname 'renaming a domain-joined computer' do
60
+ hostname 'Foo'
61
+ domain_user "Domain\\Someone"
62
+ domain_password 'SomePassword'
63
+ end
64
+ ```
47
65
  DOC
48
66
 
49
67
  property :hostname, String,
50
68
  description: "An optional property to set the hostname if it differs from the resource block's name.",
51
69
  name_property: true
52
70
 
71
+ property :fqdn, String,
72
+ description: "An optional property to set the fqdn if it differs from the resource block's hostname.",
73
+ introduced: "17.0"
74
+
53
75
  property :ipaddress, String,
54
76
  description: "The IP address to use when configuring the hosts file.",
55
77
  default: lazy { node["ipaddress"] }, default_description: "The node's IP address as determined by Ohai."
@@ -67,6 +89,15 @@ class Chef
67
89
  description: "Determines whether or not Windows should be reboot after changing the hostname, as this is required for the change to take effect.",
68
90
  default: true
69
91
 
92
+ property :domain_user, String,
93
+ description: "A domain account specified in the form of DOMAIN\\user used when renaming a domain-joined device",
94
+ introduced: "17.2"
95
+
96
+ property :domain_password, String,
97
+ description: "The password to accompany the domain_user parameter",
98
+ sensitive: true,
99
+ introduced: "17.2"
100
+
70
101
  action_class do
71
102
  def append_replacing_matching_lines(path, regex, string)
72
103
  text = IO.read(path).split("\n")
@@ -99,9 +130,11 @@ class Chef
99
130
  end
100
131
  end
101
132
 
102
- action :set do
103
- description "Sets the node's hostname."
133
+ def is_domain_joined?
134
+ powershell_exec!("(Get-CIMInstance -Class Win32_ComputerSystem).PartofDomain").result
135
+ end
104
136
 
137
+ action :set, description: "Sets the node's hostname." do
105
138
  if !windows?
106
139
  ohai "reload hostname" do
107
140
  plugin "hostname"
@@ -109,7 +142,7 @@ class Chef
109
142
  end
110
143
 
111
144
  # set the hostname via /bin/hostname
112
- declare_resource(:execute, "set hostname to #{new_resource.hostname}") do
145
+ execute "set hostname to #{new_resource.hostname}" do
113
146
  command "/bin/hostname #{new_resource.hostname}"
114
147
  not_if { shell_out!("hostname").stdout.chomp == new_resource.hostname }
115
148
  notifies :reload, "ohai[reload hostname]"
@@ -117,7 +150,9 @@ class Chef
117
150
 
118
151
  # make sure node['fqdn'] resolves via /etc/hosts
119
152
  unless new_resource.ipaddress.nil?
120
- newline = "#{new_resource.ipaddress} #{new_resource.hostname}"
153
+ newline = "#{new_resource.ipaddress}"
154
+ newline << " #{new_resource.fqdn}" unless new_resource.fqdn.to_s.empty?
155
+ newline << " #{new_resource.hostname}"
121
156
  newline << " #{new_resource.aliases.join(" ")}" if new_resource.aliases && !new_resource.aliases.empty?
122
157
  newline << " #{new_resource.hostname[/[^\.]*/]}"
123
158
  r = append_replacing_matching_lines("/etc/hosts", /^#{new_resource.ipaddress}\s+|\s+#{new_resource.hostname}\s+/, newline)
@@ -127,20 +162,20 @@ class Chef
127
162
 
128
163
  # setup the hostname to persist on a reboot
129
164
  case
130
- when ::File.exist?("/usr/sbin/scutil")
165
+ when darwin?
131
166
  # darwin
132
- declare_resource(:execute, "set HostName via scutil") do
167
+ execute "set HostName via scutil" do
133
168
  command "/usr/sbin/scutil --set HostName #{new_resource.hostname}"
134
169
  not_if { shell_out("/usr/sbin/scutil --get HostName").stdout.chomp == new_resource.hostname }
135
170
  notifies :reload, "ohai[reload hostname]"
136
171
  end
137
- declare_resource(:execute, "set ComputerName via scutil") do
172
+ execute "set ComputerName via scutil" do
138
173
  command "/usr/sbin/scutil --set ComputerName #{new_resource.hostname}"
139
174
  not_if { shell_out("/usr/sbin/scutil --get ComputerName").stdout.chomp == new_resource.hostname }
140
175
  notifies :reload, "ohai[reload hostname]"
141
176
  end
142
177
  shortname = new_resource.hostname[/[^\.]*/]
143
- declare_resource(:execute, "set LocalHostName via scutil") do
178
+ execute "set LocalHostName via scutil" do
144
179
  command "/usr/sbin/scutil --set LocalHostName #{shortname}"
145
180
  not_if { shell_out("/usr/sbin/scutil --get LocalHostName").stdout.chomp == shortname }
146
181
  notifies :reload, "ohai[reload hostname]"
@@ -150,7 +185,7 @@ class Chef
150
185
  when ::File.exist?("/usr/bin/hostnamectl") && !docker?
151
186
  # use hostnamectl whenever we find it on linux (as systemd takes over the world)
152
187
  # this must come before other methods like /etc/hostname and /etc/sysconfig/network
153
- declare_resource(:execute, "hostnamectl set-hostname #{new_resource.hostname}") do
188
+ execute "hostnamectl set-hostname #{new_resource.hostname}" do
154
189
  notifies :reload, "ohai[reload hostname]"
155
190
  not_if { shell_out!("hostnamectl status", returns: [0, 1]).stdout =~ /Static hostname:\s*#{new_resource.hostname}\s*$/ }
156
191
  end
@@ -160,7 +195,7 @@ class Chef
160
195
  # the "platform: iox_xr, platform_family: wrlinux, os: linux" platform also hits this
161
196
  # the "platform: nexus, platform_family: wrlinux, os: linux" platform also hits this
162
197
  # this is also fallback for any linux systemd host in a docker container (where /usr/bin/hostnamectl will fail)
163
- declare_resource(:file, "/etc/hostname") do
198
+ file "/etc/hostname" do
164
199
  atomic_update false if docker?
165
200
  content "#{new_resource.hostname}\n"
166
201
  owner "root"
@@ -172,7 +207,7 @@ class Chef
172
207
  append_replacing_matching_lines("/etc/sysconfig/network", /^HOSTNAME\s*=/, "HOSTNAME=#{new_resource.hostname}")
173
208
  when ::File.exist?("/etc/HOSTNAME")
174
209
  # SuSE/openSUSE uses /etc/HOSTNAME
175
- declare_resource(:file, "/etc/HOSTNAME") do
210
+ file "/etc/HOSTNAME" do
176
211
  content "#{new_resource.hostname}\n"
177
212
  owner "root"
178
213
  group node["root_group"]
@@ -180,7 +215,7 @@ class Chef
180
215
  end
181
216
  when ::File.exist?("/etc/conf.d/hostname")
182
217
  # Gentoo
183
- declare_resource(:file, "/etc/conf.d/hostname") do
218
+ file "/etc/conf.d/hostname" do
184
219
  content "hostname=\"#{new_resource.hostname}\"\n"
185
220
  owner "root"
186
221
  group node["root_group"]
@@ -196,23 +231,23 @@ class Chef
196
231
  # *BSD systems with /etc/rc.conf + /etc/myname
197
232
  append_replacing_matching_lines("/etc/rc.conf", /^\s+hostname\s+=/, "hostname=#{new_resource.hostname}")
198
233
 
199
- declare_resource(:file, "/etc/myname") do
234
+ file "/etc/myname" do
200
235
  content "#{new_resource.hostname}\n"
201
236
  owner "root"
202
237
  group node["root_group"]
203
238
  mode "0644"
204
239
  end
205
240
  when ::File.exist?("/usr/sbin/svccfg") # solaris 5.11
206
- declare_resource(:execute, "svccfg -s system/identity:node setprop config/nodename=\'#{new_resource.hostname}\'") do
241
+ execute "svccfg -s system/identity:node setprop config/nodename=\'#{new_resource.hostname}\'" do
207
242
  notifies :run, "execute[svcadm refresh]", :immediately
208
243
  notifies :run, "execute[svcadm restart]", :immediately
209
244
  not_if { shell_out!("svccfg -s system/identity:node listprop config/nodename").stdout.chomp =~ %r{config/nodename\s+astring\s+#{new_resource.hostname}} }
210
245
  end
211
- declare_resource(:execute, "svcadm refresh") do
246
+ execute "svcadm refresh" do
212
247
  command "svcadm refresh system/identity:node"
213
248
  action :nothing
214
249
  end
215
- declare_resource(:execute, "svcadm restart") do
250
+ execute "svcadm restart" do
216
251
  command "svcadm restart system/identity:node"
217
252
  action :nothing
218
253
  end
@@ -239,13 +274,24 @@ class Chef
239
274
  end
240
275
 
241
276
  unless Socket.gethostbyname(Socket.gethostname).first == new_resource.hostname
242
- converge_by "set hostname to #{new_resource.hostname}" do
243
- powershell_exec! <<~EOH
244
- $sysInfo = Get-WmiObject -Class Win32_ComputerSystem
245
- $sysInfo.Rename("#{new_resource.hostname}")
246
- EOH
277
+ if is_domain_joined?
278
+ if new_resource.domain_user.nil? || new_resource.domain_password.nil?
279
+ raise "The `domain_user` and `domain_password` properties are required to change the hostname of a domain-connected Windows system."
280
+ else
281
+ converge_by "set hostname to #{new_resource.hostname}" do
282
+ powershell_exec! <<~EOH
283
+ $user = #{new_resource.domain_user}
284
+ $secure_password = #{new_resource.domain_password} | Convertto-SecureString -AsPlainText -Force
285
+ $Credentials = New-Object System.Management.Automation.PSCredential -Argumentlist ($user, $secure_password)
286
+ Rename-Computer -NewName #{new_resource.hostname} -DomainCredential $Credentials
287
+ EOH
288
+ end
289
+ end
290
+ else
291
+ converge_by "set hostname to #{new_resource.hostname}" do
292
+ powershell_exec!("Rename-Computer -NewName #{new_resource.hostname}")
293
+ end
247
294
  end
248
-
249
295
  # reboot because $windows
250
296
  reboot "setting hostname" do
251
297
  reason "#{ChefUtils::Dist::Infra::PRODUCT} updated system hostname"
@@ -34,7 +34,7 @@ class Chef
34
34
  property :url, String, identity: true,
35
35
  description: "The URL to which an HTTP request is sent."
36
36
 
37
- property :headers, Hash, default: lazy { {} },
37
+ property :headers, Hash, default: {},
38
38
  description: "A Hash of custom headers."
39
39
 
40
40
  def initialize(name, run_context = nil)
@@ -0,0 +1,156 @@
1
+ #
2
+ # Author:: Davin Taddeo (<davin@chef.io>)
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require_relative "../resource"
19
+ autoload :YAML, "yaml"
20
+ require "date"
21
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
22
+
23
+ class Chef
24
+ class Resource
25
+ class InspecWaiverFileEntry < Chef::Resource
26
+ provides :inspec_waiver_file_entry
27
+ unified_mode true
28
+
29
+ description "Use the **inspec_waiver_file_entry** resource to add or remove entries from an InSpec waiver file. This can be used in conjunction with the Compliance Phase."
30
+ introduced "17.1"
31
+ examples <<~DOC
32
+ **Add an InSpec waiver entry to a given waiver file**:
33
+
34
+ ```ruby
35
+ inspec_waiver_file_entry 'Add waiver entry for control' do
36
+ file_path 'C:\\chef\\inspec_waiver_file.yml'
37
+ control 'my_inspec_control_01'
38
+ run_test false
39
+ justification "The subject of this control is not managed by #{ChefUtils::Dist::Infra::PRODUCT} on the systems in policy group \#{node['policy_group']}"
40
+ expiration '2022-01-01'
41
+ action :add
42
+ end
43
+ ```
44
+
45
+ **Add an InSpec waiver entry to a given waiver file using the 'name' property to identify the control**:
46
+
47
+ ```ruby
48
+ inspec_waiver_file_entry 'my_inspec_control_01' do
49
+ justification "The subject of this control is not managed by #{ChefUtils::Dist::Infra::PRODUCT} on the systems in policy group \#{node['policy_group']}"
50
+ action :add
51
+ end
52
+ ```
53
+
54
+ **Remove an InSpec waiver entry to a given waiver file**:
55
+
56
+ ```ruby
57
+ inspec_waiver_file_entry "my_inspec_control_01" do
58
+ action :remove
59
+ end
60
+ ```
61
+ DOC
62
+
63
+ property :control, String,
64
+ name_property: true,
65
+ description: "The name of the control being added or removed to the waiver file"
66
+
67
+ property :file_path, String,
68
+ required: true,
69
+ description: "The path to the waiver file being modified",
70
+ default: "#{ChefConfig::Config.etc_chef_dir}/inspec_waivers.yml",
71
+ default_description: "`/etc/chef/inspec_waivers.yml` on Linux/Unix and `C:\\chef\\inspec_waivers.yml` on Windows"
72
+
73
+ property :expiration, String,
74
+ description: "The expiration date of the given waiver - provided in YYYY-MM-DD format",
75
+ callbacks: {
76
+ "Expiration date should be a valid calendar date and match the following format: YYYY-MM-DD" => proc { |e|
77
+ re = Regexp.new('\d{4}-\d{2}-\d{2}$').freeze
78
+ if re.match?(e)
79
+ Date.valid_date?(*e.split("-").map(&:to_i))
80
+ else
81
+ e.nil?
82
+ end
83
+ },
84
+ }
85
+
86
+ property :run_test, [true, false],
87
+ description: "If present and true, the control will run and be reported, but failures in it won’t make the overall run fail. If absent or false, the control will not be run."
88
+
89
+ property :justification, String,
90
+ description: "Can be any text you want and might include a reason for the waiver as well as who signed off on the waiver."
91
+
92
+ property :backup, [false, Integer],
93
+ description: "The number of backups to be kept in /var/chef/backup (for UNIX- and Linux-based platforms) or C:/chef/backup (for the Microsoft Windows platform). Set to false to prevent backups from being kept.",
94
+ default: false
95
+
96
+ action :add do
97
+ if new_resource.justification.nil? || new_resource.justification == ""
98
+ raise Chef::Exceptions::ValidationFailed, "Entries in the InSpec waiver file must have a justification given, this parameter must have a value."
99
+ end
100
+
101
+ filename = new_resource.file_path
102
+ waiver_hash = load_waiver_file_to_hash(filename)
103
+ control_hash = {}
104
+ control_hash["expiration_date"] = new_resource.expiration.to_s unless new_resource.expiration.nil?
105
+ control_hash["run"] = new_resource.run_test unless new_resource.run_test.nil?
106
+ control_hash["justification"] = new_resource.justification.to_s
107
+
108
+ unless waiver_hash[new_resource.control] == control_hash
109
+ waiver_hash[new_resource.control] = control_hash
110
+ waiver_hash = waiver_hash.sort.to_h
111
+
112
+ file "Update Waiver File #{new_resource.file_path} to update waiver for control #{new_resource.control}" do
113
+ path new_resource.file_path
114
+ content ::YAML.dump(waiver_hash)
115
+ backup new_resource.backup
116
+ action :create
117
+ end
118
+ end
119
+ end
120
+
121
+ action :remove do
122
+ filename = new_resource.file_path
123
+ waiver_hash = load_waiver_file_to_hash(filename)
124
+ if waiver_hash.key?(new_resource.control)
125
+ waiver_hash.delete(new_resource.control)
126
+ waiver_hash = waiver_hash.sort.to_h
127
+ file "Update Waiver File #{new_resource.file_path} to remove waiver for control #{new_resource.control}" do
128
+ path new_resource.file_path
129
+ content ::YAML.dump(waiver_hash)
130
+ backup new_resource.backup
131
+ action :create
132
+ end
133
+ end
134
+ end
135
+
136
+ action_class do
137
+ def load_waiver_file_to_hash(file_name)
138
+ if file_name =~ %r{(/|C:\\).*(.yaml|.yml)}i
139
+ if ::File.exist?(file_name)
140
+ hash = ::YAML.load_file(file_name)
141
+ if hash == false || hash.nil? || hash == ""
142
+ {}
143
+ else
144
+ ::YAML.load_file(file_name)
145
+ end
146
+ else
147
+ {}
148
+ end
149
+ else
150
+ raise "Waiver files needs to be a YAML file which should have a .yaml or .yml extension -\"#{file_name}\" does not have an appropriate extension"
151
+ end
152
+ end
153
+ end
154
+ end
155
+ end
156
+ end