chef 15.17.4-universal-mingw32 → 16.0.257-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +14 -20
  3. data/README.md +6 -6
  4. data/Rakefile +18 -23
  5. data/chef-universal-mingw32.gemspec +4 -4
  6. data/chef.gemspec +10 -26
  7. data/distro/powershell/chef/chef.psm1 +3 -3
  8. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  9. data/lib/chef/action_collection.rb +16 -5
  10. data/lib/chef/api_client/registration.rb +2 -2
  11. data/lib/chef/application.rb +33 -54
  12. data/lib/chef/application/apply.rb +20 -3
  13. data/lib/chef/application/base.rb +8 -3
  14. data/lib/chef/application/exit_code.rb +2 -2
  15. data/lib/chef/application/knife.rb +1 -1
  16. data/lib/chef/chef_class.rb +4 -4
  17. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  18. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  20. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  21. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  22. data/lib/chef/chef_fs/file_system/repository/base_file.rb +0 -1
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  25. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +5 -5
  26. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  27. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  28. data/lib/chef/chef_fs/path_utils.rb +3 -3
  29. data/lib/chef/client.rb +16 -14
  30. data/lib/chef/config.rb +1 -1
  31. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  32. data/lib/chef/cookbook/gem_installer.rb +1 -1
  33. data/lib/chef/cookbook/metadata.rb +45 -22
  34. data/lib/chef/cookbook_version.rb +40 -5
  35. data/lib/chef/data_bag.rb +2 -2
  36. data/lib/chef/data_collector/error_handlers.rb +1 -1
  37. data/lib/chef/data_collector/run_end_message.rb +7 -1
  38. data/lib/chef/deprecated.rb +1 -9
  39. data/lib/chef/dist.rb +8 -0
  40. data/lib/chef/dsl/chef_vault.rb +84 -0
  41. data/lib/chef/dsl/declare_resource.rb +7 -5
  42. data/lib/chef/dsl/platform_introspection.rb +2 -3
  43. data/lib/chef/dsl/recipe.rb +7 -12
  44. data/lib/chef/dsl/universal.rb +3 -7
  45. data/lib/chef/environment.rb +2 -2
  46. data/lib/chef/event_dispatch/base.rb +3 -0
  47. data/lib/chef/exceptions.rb +0 -3
  48. data/lib/chef/formatters/doc.rb +1 -1
  49. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  50. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  51. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  52. data/lib/chef/http.rb +1 -2
  53. data/lib/chef/http/http_request.rb +3 -2
  54. data/lib/chef/knife.rb +1 -3
  55. data/lib/chef/knife/acl_add.rb +57 -0
  56. data/lib/chef/knife/acl_base.rb +183 -0
  57. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  58. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  59. data/lib/chef/knife/acl_remove.rb +62 -0
  60. data/lib/chef/knife/acl_show.rb +56 -0
  61. data/lib/chef/knife/bootstrap.rb +93 -97
  62. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  63. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  64. data/lib/chef/knife/bootstrap/templates/chef-full.erb +20 -20
  65. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +13 -15
  66. data/lib/chef/knife/bootstrap/train_connector.rb +0 -1
  67. data/lib/chef/knife/cookbook_download.rb +1 -1
  68. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  69. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  70. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  71. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  72. data/lib/chef/knife/core/hashed_command_loader.rb +2 -3
  73. data/lib/chef/knife/core/node_presenter.rb +2 -2
  74. data/lib/chef/knife/core/status_presenter.rb +5 -5
  75. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  76. data/lib/chef/knife/core/ui.rb +17 -1
  77. data/lib/chef/knife/core/windows_bootstrap_context.rb +45 -58
  78. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  79. data/lib/chef/knife/environment_compare.rb +1 -1
  80. data/lib/chef/knife/exec.rb +2 -2
  81. data/lib/chef/knife/group_add.rb +55 -0
  82. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  83. data/lib/chef/knife/group_destroy.rb +53 -0
  84. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  85. data/lib/chef/knife/group_remove.rb +56 -0
  86. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  87. data/lib/chef/knife/list.rb +1 -1
  88. data/lib/chef/knife/ssh.rb +12 -50
  89. data/lib/chef/knife/status.rb +3 -3
  90. data/lib/chef/knife/supermarket_download.rb +1 -2
  91. data/lib/chef/knife/supermarket_install.rb +1 -2
  92. data/lib/chef/knife/supermarket_list.rb +1 -2
  93. data/lib/chef/knife/supermarket_search.rb +1 -2
  94. data/lib/chef/knife/supermarket_share.rb +1 -2
  95. data/lib/chef/knife/supermarket_show.rb +1 -2
  96. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  97. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  98. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  99. data/lib/chef/knife/user_invite_list.rb +34 -0
  100. data/lib/chef/knife/user_invite_recind.rb +63 -0
  101. data/lib/chef/knife/yaml_convert.rb +91 -0
  102. data/lib/chef/log.rb +1 -1
  103. data/lib/chef/mixin/create_path.rb +8 -8
  104. data/lib/chef/mixin/openssl_helper.rb +3 -26
  105. data/lib/chef/mixin/powershell_exec.rb +10 -1
  106. data/lib/chef/mixin/powershell_out.rb +1 -1
  107. data/lib/chef/mixin/properties.rb +13 -1
  108. data/lib/chef/mixin/shell_out.rb +0 -4
  109. data/lib/chef/mixin/template.rb +0 -1
  110. data/lib/chef/monkey_patches/net_http.rb +0 -4
  111. data/lib/chef/node.rb +18 -6
  112. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  113. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  114. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  115. data/lib/chef/node_map.rb +7 -36
  116. data/lib/chef/platform/priority_map.rb +4 -4
  117. data/lib/chef/platform/query_helpers.rb +6 -34
  118. data/lib/chef/powershell.rb +14 -0
  119. data/lib/chef/property.rb +22 -4
  120. data/lib/chef/provider.rb +40 -6
  121. data/lib/chef/provider/cron.rb +2 -2
  122. data/lib/chef/provider/directory.rb +2 -2
  123. data/lib/chef/provider/dsc_resource.rb +1 -1
  124. data/lib/chef/provider/dsc_script.rb +1 -1
  125. data/lib/chef/provider/execute.rb +2 -8
  126. data/lib/chef/provider/file.rb +5 -5
  127. data/lib/chef/provider/git.rb +84 -27
  128. data/lib/chef/provider/group.rb +4 -4
  129. data/lib/chef/provider/http_request.rb +6 -6
  130. data/lib/chef/provider/ifconfig.rb +4 -4
  131. data/lib/chef/provider/launchd.rb +36 -51
  132. data/lib/chef/provider/link.rb +2 -2
  133. data/lib/chef/provider/mount.rb +5 -5
  134. data/lib/chef/provider/mount/solaris.rb +1 -0
  135. data/lib/chef/provider/osx_profile.rb +7 -3
  136. data/lib/chef/provider/package.rb +2 -2
  137. data/lib/chef/provider/package/cab.rb +3 -4
  138. data/lib/chef/provider/package/chocolatey.rb +1 -3
  139. data/lib/chef/provider/package/dnf.rb +66 -10
  140. data/lib/chef/provider/package/dnf/dnf_helper.py +84 -30
  141. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  142. data/lib/chef/provider/package/dnf/version.rb +5 -1
  143. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -3
  144. data/lib/chef/provider/package/homebrew.rb +106 -42
  145. data/lib/chef/provider/package/msu.rb +3 -1
  146. data/lib/chef/provider/package/pacman.rb +25 -34
  147. data/lib/chef/provider/package/powershell.rb +2 -6
  148. data/lib/chef/provider/package/rubygems.rb +29 -2
  149. data/lib/chef/provider/package/snap.rb +27 -96
  150. data/lib/chef/provider/package/windows.rb +3 -2
  151. data/lib/chef/provider/package/windows/msi.rb +2 -2
  152. data/lib/chef/provider/package/yum.rb +0 -8
  153. data/lib/chef/provider/package/yum/yum_helper.py +0 -4
  154. data/lib/chef/provider/package/zypper.rb +1 -1
  155. data/lib/chef/provider/powershell_script.rb +4 -10
  156. data/lib/chef/provider/registry_key.rb +4 -4
  157. data/lib/chef/provider/remote_directory.rb +3 -3
  158. data/lib/chef/provider/remote_file/ftp.rb +3 -2
  159. data/lib/chef/provider/remote_file/local_file.rb +2 -1
  160. data/lib/chef/provider/remote_file/sftp.rb +3 -2
  161. data/lib/chef/provider/route.rb +5 -3
  162. data/lib/chef/provider/ruby_block.rb +1 -1
  163. data/lib/chef/provider/script.rb +2 -2
  164. data/lib/chef/provider/service.rb +8 -8
  165. data/lib/chef/provider/service/aixinit.rb +1 -1
  166. data/lib/chef/provider/service/arch.rb +2 -2
  167. data/lib/chef/provider/service/debian.rb +31 -29
  168. data/lib/chef/provider/service/gentoo.rb +2 -2
  169. data/lib/chef/provider/service/macosx.rb +7 -12
  170. data/lib/chef/provider/service/openbsd.rb +1 -1
  171. data/lib/chef/provider/service/redhat.rb +2 -2
  172. data/lib/chef/provider/service/simple.rb +3 -3
  173. data/lib/chef/provider/service/systemd.rb +12 -12
  174. data/lib/chef/provider/service/upstart.rb +1 -1
  175. data/lib/chef/provider/service/windows.rb +5 -11
  176. data/lib/chef/provider/subversion.rb +25 -5
  177. data/lib/chef/provider/systemd_unit.rb +26 -25
  178. data/lib/chef/provider/user.rb +6 -6
  179. data/lib/chef/provider/user/dscl.rb +3 -3
  180. data/lib/chef/provider/user/mac.rb +10 -9
  181. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  182. data/lib/chef/provider/windows_env.rb +3 -3
  183. data/lib/chef/provider/windows_script.rb +2 -2
  184. data/lib/chef/provider/windows_task.rb +7 -9
  185. data/lib/chef/provider/yum_repository.rb +1 -1
  186. data/lib/chef/provider/zypper_repository.rb +11 -31
  187. data/lib/chef/providers.rb +0 -6
  188. data/lib/chef/recipe.rb +36 -0
  189. data/lib/chef/resource.rb +41 -56
  190. data/lib/chef/resource/action_class.rb +24 -22
  191. data/lib/chef/resource/alternatives.rb +149 -0
  192. data/lib/chef/resource/apt_package.rb +2 -1
  193. data/lib/chef/resource/apt_preference.rb +69 -2
  194. data/lib/chef/resource/apt_repository.rb +337 -5
  195. data/lib/chef/resource/apt_update.rb +52 -1
  196. data/lib/chef/resource/archive_file.rb +9 -29
  197. data/lib/chef/resource/bash.rb +2 -0
  198. data/lib/chef/resource/bff_package.rb +9 -1
  199. data/lib/chef/resource/breakpoint.rb +0 -1
  200. data/lib/chef/resource/build_essential.rb +42 -48
  201. data/lib/chef/resource/cab_package.rb +8 -1
  202. data/lib/chef/resource/chef_client_cron.rb +225 -0
  203. data/lib/chef/resource/chef_client_scheduled_task.rb +198 -0
  204. data/lib/chef/resource/chef_client_systemd_timer.rb +177 -0
  205. data/lib/chef/resource/chef_gem.rb +9 -16
  206. data/lib/chef/resource/chef_handler.rb +2 -1
  207. data/lib/chef/resource/chef_sleep.rb +0 -1
  208. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  209. data/lib/chef/resource/chocolatey_config.rb +3 -1
  210. data/lib/chef/resource/chocolatey_feature.rb +2 -1
  211. data/lib/chef/resource/chocolatey_package.rb +2 -1
  212. data/lib/chef/resource/chocolatey_source.rb +2 -1
  213. data/lib/chef/resource/cookbook_file.rb +1 -1
  214. data/lib/chef/resource/cron.rb +22 -68
  215. data/lib/chef/resource/cron_access.rb +8 -15
  216. data/lib/chef/resource/cron_d.rb +9 -75
  217. data/lib/chef/resource/csh.rb +2 -0
  218. data/lib/chef/resource/directory.rb +2 -2
  219. data/lib/chef/resource/dmg_package.rb +4 -4
  220. data/lib/chef/resource/dnf_package.rb +2 -3
  221. data/lib/chef/resource/dpkg_package.rb +2 -1
  222. data/lib/chef/resource/dsc_resource.rb +6 -4
  223. data/lib/chef/resource/dsc_script.rb +3 -2
  224. data/lib/chef/resource/execute.rb +13 -12
  225. data/lib/chef/resource/file.rb +3 -1
  226. data/lib/chef/resource/freebsd_package.rb +2 -1
  227. data/lib/chef/resource/gem_package.rb +14 -6
  228. data/lib/chef/resource/group.rb +4 -1
  229. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  230. data/lib/chef/resource/homebrew_cask.rb +5 -4
  231. data/lib/chef/resource/homebrew_package.rb +4 -2
  232. data/lib/chef/resource/homebrew_tap.rb +2 -1
  233. data/lib/chef/resource/hostname.rb +41 -36
  234. data/lib/chef/resource/http_request.rb +0 -1
  235. data/lib/chef/resource/ifconfig.rb +1 -1
  236. data/lib/chef/resource/ips_package.rb +10 -2
  237. data/lib/chef/resource/kernel_module.rb +29 -29
  238. data/lib/chef/resource/ksh.rb +2 -0
  239. data/lib/chef/resource/launchd.rb +6 -6
  240. data/lib/chef/resource/link.rb +1 -23
  241. data/lib/chef/resource/locale.rb +58 -24
  242. data/lib/chef/resource/log.rb +12 -1
  243. data/lib/chef/resource/lwrp_base.rb +1 -8
  244. data/lib/chef/resource/macos_userdefaults.rb +9 -6
  245. data/lib/chef/resource/macosx_service.rb +2 -1
  246. data/lib/chef/resource/macports_package.rb +10 -2
  247. data/lib/chef/resource/mdadm.rb +62 -2
  248. data/lib/chef/resource/mount.rb +3 -0
  249. data/lib/chef/resource/msu_package.rb +13 -1
  250. data/lib/chef/resource/notify_group.rb +8 -3
  251. data/lib/chef/resource/ohai.rb +19 -3
  252. data/lib/chef/resource/ohai_hint.rb +3 -12
  253. data/lib/chef/resource/openbsd_package.rb +9 -1
  254. data/lib/chef/resource/openssl_dhparam.rb +10 -1
  255. data/lib/chef/resource/openssl_ec_private_key.rb +23 -1
  256. data/lib/chef/resource/openssl_ec_public_key.rb +21 -1
  257. data/lib/chef/resource/openssl_rsa_private_key.rb +20 -1
  258. data/lib/chef/resource/openssl_rsa_public_key.rb +22 -1
  259. data/lib/chef/resource/openssl_x509_certificate.rb +37 -1
  260. data/lib/chef/resource/openssl_x509_crl.rb +12 -1
  261. data/lib/chef/resource/openssl_x509_request.rb +37 -1
  262. data/lib/chef/resource/osx_profile.rb +3 -2
  263. data/lib/chef/resource/package.rb +2 -1
  264. data/lib/chef/resource/pacman_package.rb +2 -1
  265. data/lib/chef/resource/paludis_package.rb +12 -3
  266. data/lib/chef/resource/perl.rb +2 -0
  267. data/lib/chef/resource/plist.rb +207 -0
  268. data/lib/chef/resource/portage_package.rb +13 -3
  269. data/lib/chef/resource/powershell_package.rb +1 -3
  270. data/lib/chef/resource/powershell_package_source.rb +3 -1
  271. data/lib/chef/resource/powershell_script.rb +7 -17
  272. data/lib/chef/resource/python.rb +2 -0
  273. data/lib/chef/resource/reboot.rb +0 -1
  274. data/lib/chef/resource/registry_key.rb +1 -2
  275. data/lib/chef/resource/remote_directory.rb +2 -0
  276. data/lib/chef/resource/remote_file.rb +2 -0
  277. data/lib/chef/resource/rhsm_errata.rb +0 -1
  278. data/lib/chef/resource/rhsm_errata_level.rb +0 -1
  279. data/lib/chef/resource/rhsm_register.rb +2 -1
  280. data/lib/chef/resource/rhsm_repo.rb +3 -1
  281. data/lib/chef/resource/rhsm_subscription.rb +4 -1
  282. data/lib/chef/resource/route.rb +5 -1
  283. data/lib/chef/resource/rpm_package.rb +9 -2
  284. data/lib/chef/resource/ruby.rb +2 -0
  285. data/lib/chef/resource/ruby_block.rb +1 -1
  286. data/lib/chef/resource/scm/_scm.rb +48 -0
  287. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  288. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +8 -5
  289. data/lib/chef/resource/script.rb +6 -3
  290. data/lib/chef/resource/service.rb +6 -7
  291. data/lib/chef/resource/smartos_package.rb +9 -1
  292. data/lib/chef/resource/snap_package.rb +3 -1
  293. data/lib/chef/resource/solaris_package.rb +9 -1
  294. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  295. data/lib/chef/resource/sudo.rb +9 -9
  296. data/lib/chef/resource/support/cron.d.erb +1 -1
  297. data/lib/chef/resource/support/cron_access.erb +1 -1
  298. data/lib/chef/resource/support/sudoer.erb +1 -2
  299. data/lib/chef/resource/support/ulimit.erb +41 -0
  300. data/lib/chef/resource/swap_file.rb +5 -3
  301. data/lib/chef/resource/sysctl.rb +2 -2
  302. data/lib/chef/resource/systemd_unit.rb +4 -2
  303. data/lib/chef/resource/template.rb +0 -1
  304. data/lib/chef/resource/timezone.rb +7 -18
  305. data/lib/chef/resource/user.rb +1 -3
  306. data/lib/chef/resource/user/aix_user.rb +0 -2
  307. data/lib/chef/resource/user/dscl_user.rb +1 -1
  308. data/lib/chef/resource/user/linux_user.rb +0 -2
  309. data/lib/chef/resource/user/mac_user.rb +1 -1
  310. data/lib/chef/resource/user/pw_user.rb +0 -2
  311. data/lib/chef/resource/user/solaris_user.rb +0 -2
  312. data/lib/chef/resource/user/windows_user.rb +0 -2
  313. data/lib/chef/resource/user_ulimit.rb +114 -0
  314. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  315. data/lib/chef/resource/windows_ad_join.rb +19 -6
  316. data/lib/chef/resource/windows_auto_run.rb +0 -1
  317. data/lib/chef/resource/windows_certificate.rb +1 -1
  318. data/lib/chef/resource/windows_dfs_folder.rb +0 -1
  319. data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
  320. data/lib/chef/resource/windows_dfs_server.rb +0 -1
  321. data/lib/chef/resource/windows_dns_record.rb +0 -1
  322. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  323. data/lib/chef/resource/windows_env.rb +2 -3
  324. data/lib/chef/resource/windows_feature.rb +2 -2
  325. data/lib/chef/resource/windows_feature_dism.rb +9 -22
  326. data/lib/chef/resource/windows_feature_powershell.rb +17 -82
  327. data/lib/chef/resource/windows_firewall_rule.rb +119 -10
  328. data/lib/chef/resource/windows_font.rb +1 -3
  329. data/lib/chef/resource/windows_package.rb +13 -4
  330. data/lib/chef/resource/windows_pagefile.rb +0 -1
  331. data/lib/chef/resource/windows_path.rb +0 -1
  332. data/lib/chef/resource/windows_printer.rb +0 -1
  333. data/lib/chef/resource/windows_printer_port.rb +0 -1
  334. data/lib/chef/resource/windows_script.rb +3 -4
  335. data/lib/chef/resource/windows_security_policy.rb +90 -0
  336. data/lib/chef/resource/windows_service.rb +45 -31
  337. data/lib/chef/resource/windows_share.rb +3 -7
  338. data/lib/chef/resource/windows_shortcut.rb +0 -1
  339. data/lib/chef/resource/windows_task.rb +14 -15
  340. data/lib/chef/resource/windows_uac.rb +0 -1
  341. data/lib/chef/resource/windows_user_privilege.rb +157 -0
  342. data/lib/chef/resource/windows_workgroup.rb +0 -1
  343. data/lib/chef/resource/yum_package.rb +3 -1
  344. data/lib/chef/resource/yum_repository.rb +2 -1
  345. data/lib/chef/resource/zypper_package.rb +3 -2
  346. data/lib/chef/resource/zypper_repository.rb +2 -1
  347. data/lib/chef/resource_builder.rb +8 -0
  348. data/lib/chef/resource_inspector.rb +6 -6
  349. data/lib/chef/resource_resolver.rb +7 -14
  350. data/lib/chef/resources.rb +11 -3
  351. data/lib/chef/role.rb +2 -2
  352. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  353. data/lib/chef/shell.rb +23 -32
  354. data/lib/chef/shell/shell_session.rb +0 -2
  355. data/lib/chef/util/diff.rb +1 -1
  356. data/lib/chef/util/dsc/configuration_generator.rb +1 -1
  357. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  358. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  359. data/lib/chef/version.rb +2 -2
  360. data/lib/chef/version_string.rb +1 -1
  361. data/lib/chef/win32/api/file.rb +18 -18
  362. data/lib/chef/win32/api/security.rb +6 -0
  363. data/lib/chef/win32/file.rb +3 -11
  364. data/lib/chef/win32/process.rb +2 -2
  365. data/lib/chef/win32/security.rb +40 -2
  366. data/spec/functional/assets/inittest +8 -7
  367. data/spec/functional/knife/ssh_spec.rb +27 -23
  368. data/spec/functional/resource/aix_service_spec.rb +1 -0
  369. data/spec/functional/resource/aixinit_service_spec.rb +8 -7
  370. data/spec/functional/resource/apt_package_spec.rb +1 -0
  371. data/spec/functional/resource/bff_spec.rb +2 -2
  372. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  373. data/spec/functional/resource/cron_spec.rb +11 -29
  374. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  375. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  376. data/spec/functional/resource/git_spec.rb +184 -134
  377. data/spec/functional/resource/insserv_spec.rb +6 -5
  378. data/spec/functional/resource/link_spec.rb +17 -17
  379. data/spec/functional/resource/locale_spec.rb +13 -2
  380. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  381. data/spec/functional/resource/rpm_spec.rb +2 -2
  382. data/spec/functional/resource/user/dscl_spec.rb +2 -2
  383. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  384. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  385. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  386. data/spec/functional/resource/windows_task_spec.rb +8 -8
  387. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  388. data/spec/functional/run_lock_spec.rb +1 -2
  389. data/spec/functional/shell_spec.rb +6 -6
  390. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  391. data/spec/functional/version_spec.rb +1 -1
  392. data/spec/functional/win32/registry_spec.rb +0 -6
  393. data/spec/functional/win32/security_spec.rb +22 -0
  394. data/spec/functional/win32/service_manager_spec.rb +1 -1
  395. data/spec/integration/client/client_spec.rb +123 -2
  396. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  397. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  398. data/spec/integration/knife/raw_spec.rb +30 -2
  399. data/spec/integration/knife/show_spec.rb +32 -3
  400. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  401. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -5
  402. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  403. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  404. data/spec/integration/recipes/notifies_spec.rb +50 -21
  405. data/spec/integration/recipes/notifying_block_spec.rb +9 -6
  406. data/spec/integration/recipes/provider_choice.rb +2 -0
  407. data/spec/integration/recipes/recipe_dsl_spec.rb +46 -144
  408. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  409. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -3
  410. data/spec/integration/recipes/resource_load_spec.rb +133 -13
  411. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  412. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  413. data/spec/integration/solo/solo_spec.rb +3 -3
  414. data/spec/scripts/ssl-serve.rb +1 -1
  415. data/spec/spec_helper.rb +11 -14
  416. data/spec/support/chef_helpers.rb +2 -2
  417. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  418. data/spec/support/platform_helpers.rb +44 -19
  419. data/spec/support/platforms/win32/spec_service.rb +1 -1
  420. data/spec/support/recipe_dsl_helper.rb +83 -0
  421. data/spec/support/shared/functional/directory_resource.rb +1 -1
  422. data/spec/support/shared/functional/execute_resource.rb +1 -1
  423. data/spec/support/shared/functional/file_resource.rb +3 -3
  424. data/spec/support/shared/functional/win32_service.rb +1 -1
  425. data/spec/support/shared/functional/windows_script.rb +5 -18
  426. data/spec/support/shared/integration/knife_support.rb +14 -8
  427. data/spec/unit/application/apply_spec.rb +3 -0
  428. data/spec/unit/application/client_spec.rb +5 -1
  429. data/spec/unit/application_spec.rb +1 -9
  430. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +4 -2
  431. data/spec/unit/client_spec.rb +7 -5
  432. data/spec/unit/cookbook/gem_installer_spec.rb +3 -4
  433. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  434. data/spec/unit/data_bag_spec.rb +1 -1
  435. data/spec/unit/data_collector_spec.rb +38 -17
  436. data/spec/unit/dsl/platform_introspection_spec.rb +0 -1
  437. data/spec/unit/environment_spec.rb +7 -7
  438. data/spec/unit/event_dispatch/dispatcher_spec.rb +0 -3
  439. data/spec/unit/file_access_control_spec.rb +1 -1
  440. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  441. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  442. data/spec/unit/knife/bootstrap_spec.rb +36 -54
  443. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  444. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  445. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  446. data/spec/unit/knife/cookbook_upload_spec.rb +6 -5
  447. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  448. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  449. data/spec/unit/knife/core/ui_spec.rb +16 -0
  450. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +8 -68
  451. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  452. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  453. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  454. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  455. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  456. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  457. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  458. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  459. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  460. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  461. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  462. data/spec/unit/knife/ssh_spec.rb +10 -113
  463. data/spec/unit/knife/status_spec.rb +1 -1
  464. data/spec/unit/knife/supermarket_share_spec.rb +3 -5
  465. data/spec/unit/knife_spec.rb +18 -0
  466. data/spec/unit/lwrp_spec.rb +4 -4
  467. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  468. data/spec/unit/mixin/securable_spec.rb +1 -0
  469. data/spec/unit/mixin/user_context_spec.rb +9 -1
  470. data/spec/unit/node/attribute_spec.rb +2 -2
  471. data/spec/unit/node_spec.rb +24 -0
  472. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  473. data/spec/unit/property/state_spec.rb +12 -7
  474. data/spec/unit/property/validation_spec.rb +25 -1
  475. data/spec/unit/property_spec.rb +18 -15
  476. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  477. data/spec/unit/provider/apt_repository_spec.rb +9 -11
  478. data/spec/unit/provider/apt_update_spec.rb +12 -11
  479. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  480. data/spec/unit/provider/cron_spec.rb +2 -2
  481. data/spec/unit/provider/directory_spec.rb +4 -15
  482. data/spec/unit/provider/file_spec.rb +4 -4
  483. data/spec/unit/provider/git_spec.rb +44 -4
  484. data/spec/unit/provider/link_spec.rb +0 -1
  485. data/spec/unit/provider/log_spec.rb +3 -3
  486. data/spec/unit/provider/mdadm_spec.rb +3 -3
  487. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  488. data/spec/unit/provider/package/dnf/python_helper_spec.rb +2 -2
  489. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
  490. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  491. data/spec/unit/provider/package/msu_spec.rb +3 -3
  492. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  493. data/spec/unit/provider/package/powershell_spec.rb +88 -96
  494. data/spec/unit/provider/package/rubygems_spec.rb +221 -31
  495. data/spec/unit/provider/package/snap_spec.rb +1 -1
  496. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  497. data/spec/unit/provider/package/windows_spec.rb +53 -30
  498. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  499. data/spec/unit/provider/remote_file_spec.rb +3 -4
  500. data/spec/unit/provider/service/arch_service_spec.rb +2 -3
  501. data/spec/unit/provider/service/debian_service_spec.rb +35 -14
  502. data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
  503. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  504. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  505. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  506. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  507. data/spec/unit/provider/service/windows_spec.rb +6 -2
  508. data/spec/unit/provider/subversion_spec.rb +4 -2
  509. data/spec/unit/provider/systemd_unit_spec.rb +24 -28
  510. data/spec/unit/provider/template_spec.rb +3 -4
  511. data/spec/unit/provider/zypper_repository_spec.rb +25 -75
  512. data/spec/unit/provider_resolver_spec.rb +11 -11
  513. data/spec/unit/provider_spec.rb +0 -1
  514. data/spec/unit/recipe_spec.rb +68 -0
  515. data/spec/unit/resource/alternatives_spec.rb +120 -0
  516. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  517. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  518. data/spec/unit/resource/apt_update_spec.rb +0 -18
  519. data/spec/unit/resource/archive_file_spec.rb +2 -11
  520. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  521. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  522. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  523. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  524. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  525. data/spec/unit/resource/cron_d_spec.rb +6 -48
  526. data/spec/unit/resource/cron_spec.rb +4 -10
  527. data/spec/unit/resource/gem_package_spec.rb +3 -3
  528. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  529. data/spec/unit/resource/link_spec.rb +0 -4
  530. data/spec/unit/resource/locale_spec.rb +0 -34
  531. data/spec/unit/resource/ohai_spec.rb +56 -2
  532. data/spec/unit/resource/plist_spec.rb +130 -0
  533. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  534. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  535. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  536. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  537. data/spec/unit/resource/service_spec.rb +4 -0
  538. data/spec/unit/resource/user_spec.rb +2 -2
  539. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  540. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  541. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  542. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  543. data/spec/unit/resource/windows_feature_powershell_spec.rb +6 -47
  544. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  545. data/spec/unit/resource/windows_package_spec.rb +4 -1
  546. data/spec/unit/resource/windows_service_spec.rb +9 -0
  547. data/spec/unit/resource/windows_task_spec.rb +1 -1
  548. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  549. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  550. data/spec/unit/resource_reporter_spec.rb +1 -5
  551. data/spec/unit/resource_spec.rb +11 -4
  552. data/spec/unit/role_spec.rb +11 -11
  553. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  554. data/spec/unit/run_context_spec.rb +1 -1
  555. data/spec/unit/search/query_spec.rb +1 -1
  556. data/spec/unit/util/threaded_job_queue_spec.rb +0 -9
  557. data/spec/unit/win32/security_spec.rb +3 -4
  558. data/tasks/rspec.rb +1 -1
  559. metadata +116 -87
  560. data/lib/chef/dsl/core.rb +0 -52
  561. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  562. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  563. data/lib/chef/provider/apt_preference.rb +0 -93
  564. data/lib/chef/provider/apt_repository.rb +0 -358
  565. data/lib/chef/provider/apt_update.rb +0 -79
  566. data/lib/chef/provider/log.rb +0 -43
  567. data/lib/chef/provider/mdadm.rb +0 -85
  568. data/lib/chef/provider/ohai.rb +0 -45
  569. data/lib/chef/resource/git.rb +0 -37
  570. data/spec/functional/resource/windows_font_spec.rb +0 -49
  571. data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -24,24 +24,72 @@ require_relative "../json_compat"
24
24
  class Chef
25
25
  class Resource
26
26
  class WindowsFirewallRule < Chef::Resource
27
- resource_name :windows_firewall_rule
27
+ provides :windows_firewall_rule
28
28
 
29
- description "Use the windows_firewall_rule resource to create, change or remove windows firewall rules."
29
+ description "Use the windows_firewall_rule resource to create, change or remove Windows firewall rules."
30
30
  introduced "14.7"
31
+ examples <<~DOC
32
+ Allowing port 80 access
33
+ ```ruby
34
+ windows_firewall_rule 'IIS' do
35
+ local_port '80'
36
+ protocol 'TCP'
37
+ firewall_action :allow
38
+ end
39
+ ```
40
+
41
+ Allow protocol ICMPv6 with ICMP Type
42
+ ```ruby
43
+ windows_firewall_rule 'CoreNet-Rule' do
44
+ rule_name 'CoreNet-ICMP6-LR2-In'
45
+ display_name 'Core Networking - Multicast Listener Report v2 (ICMPv6-In)'
46
+ local_port 'RPC'
47
+ protocol 'ICMPv6'
48
+ icmp_type '8'
49
+ end
50
+ ```
51
+
52
+ Blocking WinRM over HTTP on a particular IP
53
+ ```ruby
54
+ windows_firewall_rule 'Disable WinRM over HTTP' do
55
+ local_port '5985'
56
+ protocol 'TCP'
57
+ firewall_action :block
58
+ local_address '192.168.1.1'
59
+ end
60
+ ```
61
+
62
+ Deleting an existing rule
63
+ ```ruby
64
+ windows_firewall_rule 'Remove the SSH rule' do
65
+ rule_name 'ssh'
66
+ action :delete
67
+ end
68
+ ```
69
+ DOC
31
70
 
32
71
  property :rule_name, String,
33
72
  name_property: true,
34
73
  description: "An optional property to set the name of the firewall rule to assign if it differs from the resource block's name."
35
74
 
36
75
  property :description, String,
37
- default: "Firewall rule",
38
76
  description: "The description to assign to the firewall rule."
39
77
 
78
+ property :displayname, String,
79
+ description: "The displayname to assign to the firewall rule.",
80
+ default: lazy { rule_name },
81
+ default_description: "The rule_name property value.",
82
+ introduced: "16.0"
83
+
84
+ property :group, String,
85
+ description: "Specifies that only matching firewall rules of the indicated group association are copied.",
86
+ introduced: "16.0"
87
+
40
88
  property :local_address, String,
41
89
  description: "The local address the firewall rule applies to."
42
90
 
43
91
  property :local_port, [String, Integer, Array],
44
- # split various formats of comma separated lists and provide a sorted array of strings to match PS output
92
+ # split various formats of comma separated lists and provide a sorted array of strings to match PS output
45
93
  coerce: proc { |d| d.is_a?(String) ? d.split(/\s*,\s*/).sort : Array(d).sort.map(&:to_s) },
46
94
  description: "The local port the firewall rule applies to."
47
95
 
@@ -49,7 +97,7 @@ class Chef
49
97
  description: "The remote address the firewall rule applies to."
50
98
 
51
99
  property :remote_port, [String, Integer, Array],
52
- # split various formats of comma separated lists and provide a sorted array of strings to match PS output
100
+ # split various formats of comma separated lists and provide a sorted array of strings to match PS output
53
101
  coerce: proc { |d| d.is_a?(String) ? d.split(/\s*,\s*/).sort : Array(d).sort.map(&:to_s) },
54
102
  description: "The remote port the firewall rule applies to."
55
103
 
@@ -62,6 +110,11 @@ class Chef
62
110
  default: "TCP",
63
111
  description: "The protocol the firewall rule applies to."
64
112
 
113
+ property :icmp_type, [String, Integer],
114
+ description: "Specifies the ICMP Type parameter for using a protocol starting with ICMP",
115
+ default: "Any",
116
+ introduced: "16.0"
117
+
65
118
  property :firewall_action, [Symbol, String],
66
119
  default: :allow, equal_to: %i{allow block notconfigured},
67
120
  description: "The action of the firewall rule.",
@@ -110,12 +163,16 @@ class Chef
110
163
  # Need to reverse `$rule.Profile.ToString()` in powershell command
111
164
  current_profiles = state["profile"].split(", ").map(&:to_sym)
112
165
 
166
+ description state["description"]
167
+ displayname state["displayname"]
168
+ group state["group"]
113
169
  local_address state["local_address"]
114
170
  local_port Array(state["local_port"]).sort
115
171
  remote_address state["remote_address"]
116
172
  remote_port Array(state["remote_port"]).sort
117
173
  direction state["direction"]
118
174
  protocol state["protocol"]
175
+ icmp_type state["icmp_type"]
119
176
  firewall_action state["firewall_action"]
120
177
  profile current_profiles
121
178
  program state["program"]
@@ -126,13 +183,18 @@ class Chef
126
183
 
127
184
  action :create do
128
185
  description "Create a Windows firewall entry."
129
-
130
186
  if current_resource
131
- converge_if_changed :rule_name, :local_address, :local_port, :remote_address, :remote_port, :direction,
132
- :protocol, :firewall_action, :profile, :program, :service, :interface_type, :enabled do
187
+ converge_if_changed :rule_name, :description, :displayname, :local_address, :local_port, :remote_address,
188
+ :remote_port, :direction, :protocol, :icmp_type, :firewall_action, :profile, :program, :service,
189
+ :interface_type, :enabled do
133
190
  cmd = firewall_command("Set")
134
191
  powershell_out!(cmd)
135
192
  end
193
+ converge_if_changed :group do
194
+ powershell_out!("Remove-NetFirewallRule -Name '#{new_resource.rule_name}'")
195
+ cmd = firewall_command("New")
196
+ powershell_out!(cmd)
197
+ end
136
198
  else
137
199
  converge_by("create firewall rule #{new_resource.rule_name}") do
138
200
  cmd = firewall_command("New")
@@ -158,7 +220,9 @@ class Chef
158
220
  # @return [String] firewall create command
159
221
  def firewall_command(cmdlet_type)
160
222
  cmd = "#{cmdlet_type}-NetFirewallRule -Name '#{new_resource.rule_name}'"
161
- cmd << " -DisplayName '#{new_resource.rule_name}'" if cmdlet_type == "New"
223
+ cmd << " -DisplayName '#{new_resource.displayname}'" if new_resource.displayname && cmdlet_type == "New"
224
+ cmd << " -NewDisplayName '#{new_resource.displayname}'" if new_resource.displayname && cmdlet_type == "Set"
225
+ cmd << " -Group '#{new_resource.group}'" if new_resource.group && cmdlet_type == "New"
162
226
  cmd << " -Description '#{new_resource.description}'" if new_resource.description
163
227
  cmd << " -LocalAddress '#{new_resource.local_address}'" if new_resource.local_address
164
228
  cmd << " -LocalPort '#{new_resource.local_port.join("', '")}'" if new_resource.local_port
@@ -166,6 +230,7 @@ class Chef
166
230
  cmd << " -RemotePort '#{new_resource.remote_port.join("', '")}'" if new_resource.remote_port
167
231
  cmd << " -Direction '#{new_resource.direction}'" if new_resource.direction
168
232
  cmd << " -Protocol '#{new_resource.protocol}'" if new_resource.protocol
233
+ cmd << " -IcmpType '#{new_resource.icmp_type}'"
169
234
  cmd << " -Action '#{new_resource.firewall_action}'" if new_resource.firewall_action
170
235
  cmd << " -Profile '#{new_resource.profile.join("', '")}'" if new_resource.profile
171
236
  cmd << " -Program '#{new_resource.program}'" if new_resource.program
@@ -175,12 +240,53 @@ class Chef
175
240
 
176
241
  cmd
177
242
  end
243
+
244
+ def define_resource_requirements
245
+ requirements.assert(:create) do |a|
246
+ a.assertion do
247
+ if new_resource.icmp_type.is_a?(String)
248
+ !new_resource.icmp_type.empty?
249
+ elsif new_resource.icmp_type.is_a?(Integer)
250
+ !new_resource.icmp_type.nil?
251
+ end
252
+ end
253
+ a.failure_message("The :icmp_type property can not be empty in #{new_resource.rule_name}")
254
+ end
255
+
256
+ requirements.assert(:create) do |a|
257
+ a.assertion do
258
+ if new_resource.icmp_type.is_a?(Integer)
259
+ new_resource.protocol.start_with?("ICMP")
260
+ elsif new_resource.icmp_type.is_a?(String) && !new_resource.protocol.start_with?("ICMP")
261
+ new_resource.icmp_type == "Any"
262
+ else
263
+ true
264
+ end
265
+ end
266
+ a.failure_message("The :icmp_type property has a value of #{new_resource.icmp_type} set, but is not allowed for :protocol #{new_resource.protocol} in #{new_resource.rule_name}")
267
+ end
268
+
269
+ requirements.assert(:create) do |a|
270
+ a.assertion do
271
+ if new_resource.icmp_type.is_a?(Integer)
272
+ (0..255).include?(new_resource.icmp_type)
273
+ elsif new_resource.icmp_type.is_a?(String) && !new_resource.icmp_type.include?(":") && new_resource.protocol.start_with?("ICMP")
274
+ (0..255).include?(new_resource.icmp_type.to_i)
275
+ elsif new_resource.icmp_type.is_a?(String) && new_resource.icmp_type.include?(":") && new_resource.protocol.start_with?("ICMP")
276
+ new_resource.icmp_type.split(":").all? { |type| (0..255).include?(type.to_i) }
277
+ else
278
+ true
279
+ end
280
+ end
281
+ a.failure_message("Can not set :icmp_type to #{new_resource.icmp_type} as one value is out of range (0 to 255) in #{new_resource.rule_name}")
282
+ end
283
+ end
178
284
  end
179
285
 
180
286
  private
181
287
 
182
288
  # build the command to load the current resource
183
- # # @return [String] current firewall state
289
+ # @return [String] current firewall state
184
290
  def load_firewall_state(rule_name)
185
291
  <<-EOH
186
292
  Remove-TypeData System.Array # workaround for PS bug here: https://bit.ly/2SRMQ8M
@@ -193,12 +299,15 @@ class Chef
193
299
  ([PSCustomObject]@{
194
300
  rule_name = $rule.Name
195
301
  description = $rule.Description
302
+ displayname = $rule.DisplayName
303
+ group = $rule.Group
196
304
  local_address = $addressFilter.LocalAddress
197
305
  local_port = $portFilter.LocalPort
198
306
  remote_address = $addressFilter.RemoteAddress
199
307
  remote_port = $portFilter.RemotePort
200
308
  direction = $rule.Direction.ToString()
201
309
  protocol = $portFilter.Protocol
310
+ icmp_type = $portFilter.IcmpType
202
311
  firewall_action = $rule.Action.ToString()
203
312
  profile = $rule.Profile.ToString()
204
313
  program = $applicationFilter.Program
@@ -22,7 +22,6 @@ class Chef
22
22
  class WindowsFont < Chef::Resource
23
23
  require_relative "../util/path_helper"
24
24
 
25
- resource_name :windows_font
26
25
  provides(:windows_font) { true }
27
26
 
28
27
  description "Use the windows_font resource to install font files on Windows. By default, the font is sourced from the cookbook using the resource, but a URI source can be specified as well."
@@ -90,9 +89,8 @@ class Chef
90
89
  def font_exists?
91
90
  require "win32ole" if RUBY_PLATFORM =~ /mswin|mingw32|windows/
92
91
  fonts_dir = WIN32OLE.new("WScript.Shell").SpecialFolders("Fonts")
93
- fonts_dir_local = Chef::Util::PathHelper.join(ENV["home"], "AppData/Local/Microsoft/Windows/fonts")
94
92
  logger.trace("Seeing if the font at #{Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name)} exists")
95
- ::File.exist?(Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name)) || ::File.exist?(Chef::Util::PathHelper.join(fonts_dir_local, new_resource.font_name))
93
+ ::File.exist?(Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name))
96
94
  end
97
95
 
98
96
  # Parse out the schema provided to us to see if it's one we support via remote_file.
@@ -27,7 +27,6 @@ class Chef
27
27
  class WindowsPackage < Chef::Resource::Package
28
28
  include Chef::Mixin::Uris
29
29
 
30
- resource_name :windows_package
31
30
  provides(:windows_package) { true }
32
31
  provides :package, os: "windows"
33
32
 
@@ -41,6 +40,13 @@ class Chef
41
40
  @source ||= source(@package_name) if @package_name.downcase.end_with?(".msi")
42
41
  end
43
42
 
43
+ property :package_name, String,
44
+ description: "An optional property to set the package name if it differs from the resource block's name.",
45
+ identity: true
46
+
47
+ property :version, String,
48
+ description: "The version of a package to be installed or upgraded."
49
+
44
50
  # windows can't take array options yet
45
51
  property :options, String,
46
52
  description: "One (or more) additional options that are passed to the command."
@@ -52,12 +58,15 @@ class Chef
52
58
 
53
59
  property :timeout, [ String, Integer ], default: 600,
54
60
  default_description: "600 (seconds)",
55
- description: "The amount of time (in seconds) to wait before timing out."
61
+ description: "The amount of time (in seconds) to wait before timing out.",
62
+ desired_state: false
56
63
 
57
64
  # In the past we accepted return code 127 for an unknown reason and 42 because of a bug
58
- property :returns, [ String, Integer, Array ], default: [ 0 ],
65
+ # we accept 3010 which means success, but a reboot is necessary
66
+ property :returns, [ String, Integer, Array ], default: [ 0, 3010 ],
59
67
  desired_state: false,
60
- description: "A comma-delimited list of return codes that indicate the success or failure of the package command that was run."
68
+ description: "A comma-delimited list of return codes that indicate the success or failure of the package command that was run.",
69
+ default_description: "0 (success) and 3010 (success where a reboot is necessary)"
61
70
 
62
71
  property :source, String,
63
72
  coerce: (proc do |s|
@@ -20,7 +20,6 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class WindowsPagefile < Chef::Resource
23
- resource_name :windows_pagefile
24
23
  provides(:windows_pagefile) { true }
25
24
 
26
25
  description "Use the windows_pagefile resource to configure pagefile settings on Windows."
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsPath < Chef::Resource
24
- resource_name :windows_path
25
24
  provides(:windows_path) { true }
26
25
 
27
26
  description "Use the windows_path resource to manage the path environment variable on Microsoft Windows."
@@ -24,7 +24,6 @@ class Chef
24
24
  class WindowsPrinter < Chef::Resource
25
25
  require "resolv"
26
26
 
27
- resource_name :windows_printer
28
27
  provides(:windows_printer) { true }
29
28
 
30
29
  description "Use the windows_printer resource to setup Windows printers. Note that this doesn't currently install a printer driver. You must already have the driver installed on the system."
@@ -24,7 +24,6 @@ class Chef
24
24
  class WindowsPrinterPort < Chef::Resource
25
25
  require "resolv"
26
26
 
27
- resource_name :windows_printer_port
28
27
  provides(:windows_printer_port) { true }
29
28
 
30
29
  description "Use the windows_printer_port resource to create and delete TCP/IPv4 printer ports on Windows."
@@ -25,6 +25,8 @@ class Chef
25
25
  class WindowsScript < Chef::Resource::Script
26
26
  unified_mode true
27
27
 
28
+ provides :windows_script
29
+
28
30
  # This is an abstract resource meant to be subclasses; thus no 'provides'
29
31
 
30
32
  set_guard_inherited_attributes(:architecture)
@@ -54,10 +56,7 @@ class Chef
54
56
  protected
55
57
 
56
58
  def assert_architecture_compatible!(desired_architecture)
57
- if desired_architecture == :i386 && Chef::Platform.windows_nano_server?
58
- raise Chef::Exceptions::Win32ArchitectureIncorrect,
59
- "cannot execute script with requested architecture 'i386' on Windows Nano Server"
60
- elsif ! node_supports_windows_architecture?(node, desired_architecture)
59
+ unless node_supports_windows_architecture?(node, desired_architecture)
61
60
  raise Chef::Exceptions::Win32ArchitectureIncorrect,
62
61
  "cannot execute script with requested architecture '#{desired_architecture}' on a system with architecture '#{node_windows_architecture(node)}'"
63
62
  end
@@ -0,0 +1,90 @@
1
+ #
2
+ # Author:: Ashwini Nehate (<anehate@chef.io>)
3
+ # Author:: Davin Taddeo (<davin@chef.io>)
4
+ # Author:: Jeff Brimager (<jbrimager@chef.io>)
5
+ # Copyright:: Copyright (c) Chef Software Inc.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ require_relative "../resource"
20
+
21
+ class Chef
22
+ class Resource
23
+ class WindowsSecurityPolicy < Chef::Resource
24
+ resource_name :windows_security_policy
25
+
26
+ # The valid policy_names options found here
27
+ # https://github.com/ChrisAWalker/cSecurityOptions under 'AccountSettings'
28
+ policy_names = %w{MinimumPasswordAge
29
+ MaximumPasswordAge
30
+ MinimumPasswordLength
31
+ PasswordComplexity
32
+ PasswordHistorySize
33
+ LockoutBadCount
34
+ RequireLogonToChangePassword
35
+ ForceLogoffWhenHourExpire
36
+ NewAdministratorName
37
+ NewGuestName
38
+ ClearTextPassword
39
+ LSAAnonymousNameLookup
40
+ EnableAdminAccount
41
+ EnableGuestAccount
42
+ }
43
+ description "Use the windows_security_policy resource to set a security policy on the Microsoft Windows platform."
44
+ introduced "16.0"
45
+
46
+ property :secoption, String, name_property: true, required: true, equal_to: policy_names,
47
+ description: "The name of the policy to be set on windows platform to maintain its security."
48
+
49
+ property :secvalue, String, required: true,
50
+ description: "Policy value to be set for policy name."
51
+
52
+ action :set do
53
+ security_option = new_resource.secoption
54
+ security_value = new_resource.secvalue
55
+ powershell_script "#{security_option} set to #{security_value}" do
56
+ convert_boolean_return true
57
+ code <<-EOH
58
+ $security_option = "#{security_option}"
59
+ if ( ($security_option -match "NewGuestName") -Or ($security_option -match "NewAdministratorName") )
60
+ {
61
+ $#{security_option}_Remediation = (Get-Content $env:TEMP\\#{security_option}_Export.inf) | Foreach-Object { $_ -replace '#{security_option}\\s*=\\s*\\"\\w*\\"', '#{security_option} = "#{security_value}"' } | Set-Content $env:TEMP\\#{security_option}_Export.inf
62
+ C:\\Windows\\System32\\secedit /configure /db $env:windir\\security\\new.sdb /cfg $env:TEMP\\#{security_option}_Export.inf /areas SECURITYPOLICY
63
+ }
64
+ else
65
+ {
66
+ $#{security_option}_Remediation = (Get-Content $env:TEMP\\#{security_option}_Export.inf) | Foreach-Object { $_ -replace "#{security_option}\\s*=\\s*\\d*", "#{security_option} = #{security_value}" } | Set-Content $env:TEMP\\#{security_option}_Export.inf
67
+ C:\\Windows\\System32\\secedit /configure /db $env:windir\\security\\new.sdb /cfg $env:TEMP\\#{security_option}_Export.inf /areas SECURITYPOLICY
68
+ }
69
+ Remove-Item $env:TEMP\\#{security_option}_Export.inf -force
70
+ EOH
71
+ not_if <<-EOH
72
+ $#{security_option}_Export = C:\\Windows\\System32\\secedit /export /cfg $env:TEMP\\#{security_option}_Export.inf
73
+ $ExportAudit = (Get-Content $env:TEMP\\#{security_option}_Export.inf | Select-String -Pattern #{security_option})
74
+ $check_digit = $ExportAudit -match '#{security_option} = #{security_value}'
75
+ $check_string = $ExportAudit -match '#{security_option} = "#{security_value}"'
76
+ if ( $check_string -Or $check_digit )
77
+ {
78
+ Remove-Item $env:TEMP\\#{security_option}_Export.inf -force
79
+ $true
80
+ }
81
+ else
82
+ {
83
+ $false
84
+ }
85
+ EOH
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
@@ -41,41 +41,52 @@ class Chef
41
41
 
42
42
  allowed_actions :configure_startup, :create, :delete, :configure
43
43
 
44
- # The display name to be used by user interface programs to identify the
45
- # service. This string has a maximum length of 256 characters.
44
+ property :timeout, Integer,
45
+ description: "The amount of time (in seconds) to wait before timing out.",
46
+ default: 60,
47
+ desired_state: false
48
+
46
49
  property :display_name, String, regex: /^.{1,256}$/,
47
- validation_message: "The display_name can only be a maximum of 256 characters!",
48
- introduced: "14.0"
50
+ description: "The display name to be used by user interface programs to identify the service. This string has a maximum length of 256 characters.",
51
+ validation_message: "The display_name can only be a maximum of 256 characters!",
52
+ introduced: "14.0"
49
53
 
50
54
  # https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L19-L29
51
- property :desired_access, Integer, default: SERVICE_ALL_ACCESS
55
+ property :desired_access, Integer,
56
+ default: SERVICE_ALL_ACCESS,
57
+ introduced: "14.0"
52
58
 
53
59
  # https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L31-L41
54
- property :service_type, Integer, default: SERVICE_WIN32_OWN_PROCESS
60
+ property :service_type, Integer, default: SERVICE_WIN32_OWN_PROCESS,
61
+ introduced: "14.0"
55
62
 
56
63
  # Valid options:
57
64
  # - :automatic
58
65
  # - :manual
59
66
  # - :disabled
60
67
  # Reference: https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L49-L54
61
- property :startup_type, [Symbol], equal_to: %i{automatic manual disabled}, default: :automatic, coerce: proc { |x|
62
- if x.is_a?(Integer)
63
- ALLOWED_START_TYPES.invert.fetch(x) do
64
- Chef::Log.warn("Unsupported startup_type #{x}, falling back to :automatic")
65
- :automatic
68
+ property :startup_type, [Symbol],
69
+ equal_to: %i{automatic manual disabled},
70
+ default: :automatic,
71
+ description: "Use to specify the startup type of the service.",
72
+ coerce: proc { |x|
73
+ if x.is_a?(Integer)
74
+ ALLOWED_START_TYPES.invert.fetch(x) do
75
+ Chef::Log.warn("Unsupported startup_type #{x}, falling back to :automatic")
76
+ :automatic
77
+ end
78
+ elsif x.is_a?(String)
79
+ x.to_sym
80
+ else
81
+ x
66
82
  end
67
- elsif x.is_a?(String)
68
- x.to_sym
69
- else
70
- x
71
- end
72
- }
73
-
74
- # This only applies if startup_type is :automatic
83
+ }
84
+
75
85
  # 1 == delayed start is enabled
76
86
  # 0 == NO delayed start
77
87
  property :delayed_start, [TrueClass, FalseClass],
78
88
  introduced: "14.0",
89
+ description: "Set the startup type to delayed start. This only applies if `startup_type` is `:automatic`",
79
90
  default: false, coerce: proc { |x|
80
91
  if x.is_a?(Integer)
81
92
  x == 0 ? false : true
@@ -85,31 +96,34 @@ class Chef
85
96
  }
86
97
 
87
98
  # https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L43-L47
88
- property :error_control, Integer, default: SERVICE_ERROR_NORMAL
99
+ property :error_control, Integer,
100
+ default: SERVICE_ERROR_NORMAL,
101
+ introduced: "14.0"
89
102
 
90
103
  property :binary_path_name, String,
91
104
  introduced: "14.0",
92
- description: "The fully qualified path to the service binary file. The path can also include arguments for an auto-start service. This is required for ':create' and ':configure' actions"
105
+ description: "The fully qualified path to the service binary file. The path can also include arguments for an auto-start service. This is required for `:create` and `:configure` actions"
93
106
 
94
107
  property :load_order_group, String,
95
108
  introduced: "14.0",
96
- description: "The names of the load ordering group of which this service is a member. Don't set this property if the service does not belong to a group."
97
-
98
- # A pointer to a double null-terminated array of null-separated names of
99
- # services or load ordering groups that the system must start before this
100
- # service. Specify nil or an empty string if the service has no
101
- # dependencies. Dependency on a group means that this service can run if
102
- # at least one member of the group is running after an attempt to start
103
- # all members of the group.
109
+ description: "The name of the service's load ordering group(s)."
110
+
104
111
  property :dependencies, [String, Array],
112
+ description: "A pointer to a double null-terminated array of null-separated names of services or load ordering groups that the system must start before this service. Specify `nil` or an empty string if the service has no dependencies. Dependency on a group means that this service can run if at least one member of the group is running after an attempt to start all members of the group.",
105
113
  introduced: "14.0"
106
114
 
107
115
  property :description, String,
108
116
  description: "Description of the service.",
109
117
  introduced: "14.0"
110
118
 
111
- property :run_as_user, String, default: "localsystem", coerce: proc { |x| x.downcase }
112
- property :run_as_password, String, default: ""
119
+ property :run_as_user, String,
120
+ description: "The user under which a Microsoft Windows service runs.",
121
+ default: "localsystem",
122
+ coerce: proc { |x| x.downcase }
123
+
124
+ property :run_as_password, String,
125
+ description: "The password for the user specified by `run_as_user`.",
126
+ default: ""
113
127
  end
114
128
  end
115
129
  end