chef 15.11.3-universal-mingw32 → 16.1.16-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 (513) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -7
  3. data/README.md +1 -1
  4. data/Rakefile +44 -16
  5. data/chef.gemspec +6 -4
  6. data/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/action_collection.rb +16 -5
  9. data/lib/chef/application.rb +33 -54
  10. data/lib/chef/application/apply.rb +18 -1
  11. data/lib/chef/application/base.rb +8 -3
  12. data/lib/chef/application/knife.rb +1 -1
  13. data/lib/chef/chef_class.rb +4 -4
  14. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
  18. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +3 -3
  21. data/lib/chef/client.rb +16 -14
  22. data/lib/chef/config.rb +1 -1
  23. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  24. data/lib/chef/cookbook/gem_installer.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +45 -22
  26. data/lib/chef/cookbook_loader.rb +1 -1
  27. data/lib/chef/cookbook_manifest.rb +1 -1
  28. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +38 -3
  30. data/lib/chef/data_collector.rb +1 -1
  31. data/lib/chef/data_collector/error_handlers.rb +1 -1
  32. data/lib/chef/data_collector/run_end_message.rb +7 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +4 -0
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dist.rb +8 -0
  37. data/lib/chef/dsl/chef_vault.rb +84 -0
  38. data/lib/chef/dsl/declare_resource.rb +7 -5
  39. data/lib/chef/dsl/platform_introspection.rb +3 -2
  40. data/lib/chef/dsl/recipe.rb +7 -12
  41. data/lib/chef/dsl/universal.rb +3 -7
  42. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  43. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  44. data/lib/chef/event_dispatch/base.rb +3 -0
  45. data/lib/chef/formatters/base.rb +1 -1
  46. data/lib/chef/formatters/doc.rb +1 -1
  47. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  48. data/lib/chef/http.rb +1 -1
  49. data/lib/chef/http/decompressor.rb +1 -1
  50. data/lib/chef/http/http_request.rb +3 -2
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -4
  54. data/lib/chef/knife/acl_add.rb +57 -0
  55. data/lib/chef/knife/acl_base.rb +183 -0
  56. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  57. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  58. data/lib/chef/knife/acl_remove.rb +62 -0
  59. data/lib/chef/knife/acl_show.rb +56 -0
  60. data/lib/chef/knife/bootstrap.rb +84 -90
  61. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
  62. data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
  63. data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
  64. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
  65. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  66. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  67. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  68. data/lib/chef/knife/core/node_presenter.rb +2 -2
  69. data/lib/chef/knife/core/status_presenter.rb +5 -5
  70. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  71. data/lib/chef/knife/core/ui.rb +17 -1
  72. data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
  73. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  74. data/lib/chef/knife/group_add.rb +55 -0
  75. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  76. data/lib/chef/knife/group_destroy.rb +53 -0
  77. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  78. data/lib/chef/knife/group_remove.rb +56 -0
  79. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  80. data/lib/chef/knife/key_create_base.rb +1 -1
  81. data/lib/chef/knife/key_edit_base.rb +1 -1
  82. data/lib/chef/knife/ssh.rb +12 -31
  83. data/lib/chef/knife/status.rb +3 -3
  84. data/lib/chef/knife/supermarket_download.rb +1 -2
  85. data/lib/chef/knife/supermarket_install.rb +2 -3
  86. data/lib/chef/knife/supermarket_list.rb +1 -2
  87. data/lib/chef/knife/supermarket_search.rb +1 -2
  88. data/lib/chef/knife/supermarket_share.rb +1 -2
  89. data/lib/chef/knife/supermarket_show.rb +1 -2
  90. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  91. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  92. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  93. data/lib/chef/knife/user_invite_list.rb +34 -0
  94. data/lib/chef/knife/user_invite_rescind.rb +63 -0
  95. data/lib/chef/knife/yaml_convert.rb +91 -0
  96. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  97. data/lib/chef/mixin/checksum.rb +0 -1
  98. data/lib/chef/mixin/openssl_helper.rb +4 -4
  99. data/lib/chef/mixin/powershell_exec.rb +10 -1
  100. data/lib/chef/mixin/powershell_out.rb +1 -1
  101. data/lib/chef/mixin/properties.rb +16 -2
  102. data/lib/chef/mixin/shell_out.rb +1 -5
  103. data/lib/chef/monkey_patches/net_http.rb +0 -4
  104. data/lib/chef/node.rb +18 -6
  105. data/lib/chef/node/attribute.rb +2 -2
  106. data/lib/chef/node/immutable_collections.rb +1 -1
  107. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  108. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  109. data/lib/chef/node_map.rb +5 -31
  110. data/lib/chef/platform/priority_map.rb +4 -4
  111. data/lib/chef/platform/query_helpers.rb +6 -34
  112. data/lib/chef/policy_builder/policyfile.rb +1 -1
  113. data/lib/chef/powershell.rb +14 -0
  114. data/lib/chef/property.rb +24 -6
  115. data/lib/chef/provider.rb +40 -6
  116. data/lib/chef/provider/cron.rb +2 -2
  117. data/lib/chef/provider/directory.rb +3 -3
  118. data/lib/chef/provider/dsc_resource.rb +1 -1
  119. data/lib/chef/provider/dsc_script.rb +1 -1
  120. data/lib/chef/provider/execute.rb +3 -9
  121. data/lib/chef/provider/file.rb +6 -6
  122. data/lib/chef/provider/git.rb +84 -27
  123. data/lib/chef/provider/group.rb +4 -4
  124. data/lib/chef/provider/http_request.rb +6 -6
  125. data/lib/chef/provider/ifconfig.rb +4 -4
  126. data/lib/chef/provider/launchd.rb +45 -64
  127. data/lib/chef/provider/link.rb +2 -2
  128. data/lib/chef/provider/mount.rb +5 -5
  129. data/lib/chef/provider/osx_profile.rb +7 -3
  130. data/lib/chef/provider/package.rb +2 -2
  131. data/lib/chef/provider/package/cab.rb +5 -6
  132. data/lib/chef/provider/package/chocolatey.rb +1 -3
  133. data/lib/chef/provider/package/dnf.rb +66 -10
  134. data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
  135. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  136. data/lib/chef/provider/package/dnf/version.rb +5 -1
  137. data/lib/chef/provider/package/dpkg.rb +1 -1
  138. data/lib/chef/provider/package/freebsd/base.rb +2 -1
  139. data/lib/chef/provider/package/homebrew.rb +107 -43
  140. data/lib/chef/provider/package/macports.rb +0 -2
  141. data/lib/chef/provider/package/msu.rb +4 -1
  142. data/lib/chef/provider/package/pacman.rb +25 -34
  143. data/lib/chef/provider/package/portage.rb +1 -0
  144. data/lib/chef/provider/package/powershell.rb +1 -1
  145. data/lib/chef/provider/package/rubygems.rb +30 -3
  146. data/lib/chef/provider/package/windows.rb +29 -53
  147. data/lib/chef/provider/package/windows/msi.rb +2 -2
  148. data/lib/chef/provider/package/yum.rb +1 -9
  149. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  150. data/lib/chef/provider/package/zypper.rb +0 -1
  151. data/lib/chef/provider/powershell_script.rb +5 -11
  152. data/lib/chef/provider/registry_key.rb +4 -4
  153. data/lib/chef/provider/remote_directory.rb +5 -5
  154. data/lib/chef/provider/remote_file/ftp.rb +3 -2
  155. data/lib/chef/provider/remote_file/local_file.rb +2 -1
  156. data/lib/chef/provider/remote_file/sftp.rb +3 -2
  157. data/lib/chef/provider/route.rb +5 -3
  158. data/lib/chef/provider/ruby_block.rb +1 -1
  159. data/lib/chef/provider/script.rb +2 -2
  160. data/lib/chef/provider/service.rb +8 -8
  161. data/lib/chef/provider/service/aixinit.rb +1 -1
  162. data/lib/chef/provider/service/arch.rb +1 -1
  163. data/lib/chef/provider/service/debian.rb +30 -28
  164. data/lib/chef/provider/service/macosx.rb +16 -10
  165. data/lib/chef/provider/service/systemd.rb +12 -12
  166. data/lib/chef/provider/service/upstart.rb +1 -1
  167. data/lib/chef/provider/service/windows.rb +5 -11
  168. data/lib/chef/provider/subversion.rb +25 -5
  169. data/lib/chef/provider/systemd_unit.rb +26 -25
  170. data/lib/chef/provider/user.rb +6 -6
  171. data/lib/chef/provider/user/aix.rb +1 -1
  172. data/lib/chef/provider/user/dscl.rb +6 -6
  173. data/lib/chef/provider/user/mac.rb +20 -15
  174. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  175. data/lib/chef/provider/windows_env.rb +3 -3
  176. data/lib/chef/provider/windows_script.rb +2 -2
  177. data/lib/chef/provider/windows_task.rb +10 -10
  178. data/lib/chef/providers.rb +0 -6
  179. data/lib/chef/recipe.rb +36 -0
  180. data/lib/chef/resource.rb +44 -57
  181. data/lib/chef/resource/action_class.rb +24 -22
  182. data/lib/chef/resource/alternatives.rb +210 -0
  183. data/lib/chef/resource/apt_package.rb +33 -3
  184. data/lib/chef/resource/apt_preference.rb +103 -7
  185. data/lib/chef/resource/apt_repository.rb +357 -18
  186. data/lib/chef/resource/apt_update.rb +58 -5
  187. data/lib/chef/resource/archive_file.rb +6 -5
  188. data/lib/chef/resource/bash.rb +3 -1
  189. data/lib/chef/resource/batch.rb +1 -1
  190. data/lib/chef/resource/bff_package.rb +10 -2
  191. data/lib/chef/resource/breakpoint.rb +1 -2
  192. data/lib/chef/resource/build_essential.rb +49 -51
  193. data/lib/chef/resource/cab_package.rb +9 -2
  194. data/lib/chef/resource/chef_client_cron.rb +228 -0
  195. data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
  196. data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
  197. data/lib/chef/resource/chef_gem.rb +15 -18
  198. data/lib/chef/resource/chef_handler.rb +5 -4
  199. data/lib/chef/resource/chef_sleep.rb +7 -5
  200. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  201. data/lib/chef/resource/chocolatey_config.rb +8 -4
  202. data/lib/chef/resource/chocolatey_feature.rb +7 -4
  203. data/lib/chef/resource/chocolatey_package.rb +7 -4
  204. data/lib/chef/resource/chocolatey_source.rb +7 -4
  205. data/lib/chef/resource/cookbook_file.rb +4 -3
  206. data/lib/chef/resource/cron.rb +34 -80
  207. data/lib/chef/resource/cron_access.rb +10 -6
  208. data/lib/chef/resource/cron_d.rb +44 -95
  209. data/lib/chef/resource/csh.rb +3 -1
  210. data/lib/chef/resource/directory.rb +3 -3
  211. data/lib/chef/resource/dmg_package.rb +22 -19
  212. data/lib/chef/resource/dnf_package.rb +3 -4
  213. data/lib/chef/resource/dpkg_package.rb +3 -2
  214. data/lib/chef/resource/dsc_resource.rb +6 -4
  215. data/lib/chef/resource/dsc_script.rb +3 -2
  216. data/lib/chef/resource/execute.rb +15 -14
  217. data/lib/chef/resource/file.rb +14 -9
  218. data/lib/chef/resource/freebsd_package.rb +3 -2
  219. data/lib/chef/resource/gem_package.rb +19 -11
  220. data/lib/chef/resource/group.rb +5 -2
  221. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  222. data/lib/chef/resource/homebrew_cask.rb +3 -2
  223. data/lib/chef/resource/homebrew_package.rb +5 -3
  224. data/lib/chef/resource/homebrew_tap.rb +3 -2
  225. data/lib/chef/resource/hostname.rb +26 -20
  226. data/lib/chef/resource/http_request.rb +1 -2
  227. data/lib/chef/resource/ifconfig.rb +8 -8
  228. data/lib/chef/resource/ips_package.rb +11 -3
  229. data/lib/chef/resource/kernel_module.rb +30 -30
  230. data/lib/chef/resource/ksh.rb +3 -1
  231. data/lib/chef/resource/launchd.rb +3 -3
  232. data/lib/chef/resource/link.rb +5 -27
  233. data/lib/chef/resource/locale.rb +60 -26
  234. data/lib/chef/resource/log.rb +13 -2
  235. data/lib/chef/resource/lwrp_base.rb +1 -1
  236. data/lib/chef/resource/macos_userdefaults.rb +18 -10
  237. data/lib/chef/resource/macosx_service.rb +3 -2
  238. data/lib/chef/resource/macports_package.rb +10 -2
  239. data/lib/chef/resource/mdadm.rb +63 -3
  240. data/lib/chef/resource/mount.rb +4 -1
  241. data/lib/chef/resource/msu_package.rb +19 -2
  242. data/lib/chef/resource/notify_group.rb +8 -3
  243. data/lib/chef/resource/ohai.rb +20 -4
  244. data/lib/chef/resource/ohai_hint.rb +4 -13
  245. data/lib/chef/resource/openbsd_package.rb +10 -2
  246. data/lib/chef/resource/openssl_dhparam.rb +11 -2
  247. data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
  248. data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
  249. data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
  250. data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
  251. data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
  252. data/lib/chef/resource/openssl_x509_crl.rb +13 -2
  253. data/lib/chef/resource/openssl_x509_request.rb +38 -2
  254. data/lib/chef/resource/osx_profile.rb +4 -3
  255. data/lib/chef/resource/package.rb +3 -2
  256. data/lib/chef/resource/pacman_package.rb +3 -2
  257. data/lib/chef/resource/paludis_package.rb +13 -4
  258. data/lib/chef/resource/perl.rb +3 -1
  259. data/lib/chef/resource/plist.rb +207 -0
  260. data/lib/chef/resource/portage_package.rb +14 -4
  261. data/lib/chef/resource/powershell_package.rb +2 -4
  262. data/lib/chef/resource/powershell_package_source.rb +4 -2
  263. data/lib/chef/resource/powershell_script.rb +8 -18
  264. data/lib/chef/resource/python.rb +3 -1
  265. data/lib/chef/resource/reboot.rb +1 -2
  266. data/lib/chef/resource/registry_key.rb +2 -3
  267. data/lib/chef/resource/remote_directory.rb +3 -1
  268. data/lib/chef/resource/remote_file.rb +3 -2
  269. data/lib/chef/resource/rhsm_errata.rb +1 -4
  270. data/lib/chef/resource/rhsm_errata_level.rb +1 -2
  271. data/lib/chef/resource/rhsm_register.rb +3 -3
  272. data/lib/chef/resource/rhsm_repo.rb +4 -3
  273. data/lib/chef/resource/rhsm_subscription.rb +5 -4
  274. data/lib/chef/resource/route.rb +6 -2
  275. data/lib/chef/resource/rpm_package.rb +13 -3
  276. data/lib/chef/resource/ruby.rb +3 -1
  277. data/lib/chef/resource/ruby_block.rb +2 -5
  278. data/lib/chef/resource/scm/_scm.rb +49 -0
  279. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  280. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
  281. data/lib/chef/resource/script.rb +7 -4
  282. data/lib/chef/resource/service.rb +7 -8
  283. data/lib/chef/resource/smartos_package.rb +10 -2
  284. data/lib/chef/resource/snap_package.rb +4 -2
  285. data/lib/chef/resource/solaris_package.rb +10 -2
  286. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  287. data/lib/chef/resource/sudo.rb +11 -11
  288. data/lib/chef/resource/support/cron.d.erb +1 -1
  289. data/lib/chef/resource/support/cron_access.erb +1 -1
  290. data/lib/chef/resource/support/sudoer.erb +1 -2
  291. data/lib/chef/resource/support/ulimit.erb +41 -0
  292. data/lib/chef/resource/swap_file.rb +7 -5
  293. data/lib/chef/resource/sysctl.rb +63 -4
  294. data/lib/chef/resource/systemd_unit.rb +6 -4
  295. data/lib/chef/resource/template.rb +0 -1
  296. data/lib/chef/resource/timezone.rb +8 -19
  297. data/lib/chef/resource/user.rb +3 -5
  298. data/lib/chef/resource/user/aix_user.rb +0 -2
  299. data/lib/chef/resource/user/dscl_user.rb +1 -1
  300. data/lib/chef/resource/user/linux_user.rb +0 -2
  301. data/lib/chef/resource/user/mac_user.rb +1 -1
  302. data/lib/chef/resource/user/pw_user.rb +0 -2
  303. data/lib/chef/resource/user/solaris_user.rb +0 -2
  304. data/lib/chef/resource/user/windows_user.rb +0 -2
  305. data/lib/chef/resource/user_ulimit.rb +116 -0
  306. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  307. data/lib/chef/resource/windows_ad_join.rb +20 -7
  308. data/lib/chef/resource/windows_auto_run.rb +2 -3
  309. data/lib/chef/resource/windows_certificate.rb +3 -3
  310. data/lib/chef/resource/windows_dfs_folder.rb +1 -2
  311. data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
  312. data/lib/chef/resource/windows_dfs_server.rb +2 -3
  313. data/lib/chef/resource/windows_dns_record.rb +0 -1
  314. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  315. data/lib/chef/resource/windows_env.rb +12 -4
  316. data/lib/chef/resource/windows_feature.rb +59 -4
  317. data/lib/chef/resource/windows_feature_dism.rb +24 -24
  318. data/lib/chef/resource/windows_feature_powershell.rb +44 -78
  319. data/lib/chef/resource/windows_firewall_rule.rb +121 -8
  320. data/lib/chef/resource/windows_font.rb +10 -2
  321. data/lib/chef/resource/windows_package.rb +76 -7
  322. data/lib/chef/resource/windows_pagefile.rb +31 -4
  323. data/lib/chef/resource/windows_path.rb +18 -2
  324. data/lib/chef/resource/windows_printer.rb +26 -7
  325. data/lib/chef/resource/windows_printer_port.rb +29 -2
  326. data/lib/chef/resource/windows_script.rb +3 -4
  327. data/lib/chef/resource/windows_security_policy.rb +119 -0
  328. data/lib/chef/resource/windows_service.rb +46 -32
  329. data/lib/chef/resource/windows_share.rb +22 -6
  330. data/lib/chef/resource/windows_shortcut.rb +13 -3
  331. data/lib/chef/resource/windows_task.rb +129 -16
  332. data/lib/chef/resource/windows_uac.rb +20 -2
  333. data/lib/chef/resource/windows_user_privilege.rb +199 -0
  334. data/lib/chef/resource/windows_workgroup.rb +19 -4
  335. data/lib/chef/resource/yum_package.rb +91 -7
  336. data/lib/chef/resource/yum_repository.rb +30 -12
  337. data/lib/chef/resource/zypper_package.rb +32 -5
  338. data/lib/chef/resource/zypper_repository.rb +19 -6
  339. data/lib/chef/resource_builder.rb +8 -0
  340. data/lib/chef/resource_inspector.rb +3 -2
  341. data/lib/chef/resource_resolver.rb +7 -14
  342. data/lib/chef/resources.rb +11 -3
  343. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  344. data/lib/chef/scan_access_control.rb +1 -1
  345. data/lib/chef/shell.rb +22 -0
  346. data/lib/chef/shell/ext.rb +1 -1
  347. data/lib/chef/version.rb +1 -1
  348. data/lib/chef/win32/api.rb +2 -2
  349. data/lib/chef/win32/api/error.rb +3 -1
  350. data/lib/chef/win32/api/file.rb +1 -1
  351. data/lib/chef/win32/api/net.rb +1 -0
  352. data/lib/chef/win32/api/security.rb +6 -0
  353. data/lib/chef/win32/file.rb +1 -9
  354. data/lib/chef/win32/mutex.rb +1 -1
  355. data/lib/chef/win32/net.rb +1 -0
  356. data/lib/chef/win32/security.rb +40 -2
  357. data/lib/chef/win32/security/sid.rb +4 -4
  358. data/spec/functional/assets/inittest +8 -7
  359. data/spec/functional/knife/ssh_spec.rb +23 -19
  360. data/spec/functional/resource/cron_spec.rb +10 -29
  361. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  362. data/spec/functional/resource/git_spec.rb +184 -134
  363. data/spec/functional/resource/insserv_spec.rb +1 -1
  364. data/spec/functional/resource/launchd_spec.rb +232 -0
  365. data/spec/functional/resource/link_spec.rb +3 -3
  366. data/spec/functional/resource/locale_spec.rb +13 -2
  367. data/spec/functional/resource/msu_package_spec.rb +5 -2
  368. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  369. data/spec/functional/resource/remote_file_spec.rb +1 -1
  370. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  371. data/spec/functional/resource/windows_task_spec.rb +4 -4
  372. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  373. data/spec/functional/run_lock_spec.rb +1 -1
  374. data/spec/functional/shell_spec.rb +1 -1
  375. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  376. data/spec/functional/version_spec.rb +1 -1
  377. data/spec/functional/win32/registry_spec.rb +0 -6
  378. data/spec/functional/win32/security_spec.rb +22 -0
  379. data/spec/integration/client/client_spec.rb +123 -2
  380. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  381. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  382. data/spec/integration/knife/raw_spec.rb +34 -6
  383. data/spec/integration/knife/redirection_spec.rb +2 -2
  384. data/spec/integration/knife/show_spec.rb +32 -3
  385. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
  386. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  387. data/spec/integration/recipes/notifies_spec.rb +49 -20
  388. data/spec/integration/recipes/notifying_block_spec.rb +8 -5
  389. data/spec/integration/recipes/provider_choice.rb +2 -0
  390. data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
  391. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  392. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
  393. data/spec/integration/recipes/resource_load_spec.rb +133 -12
  394. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  395. data/spec/integration/solo/solo_spec.rb +3 -3
  396. data/spec/spec_helper.rb +18 -3
  397. data/spec/support/chef_helpers.rb +2 -2
  398. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  399. data/spec/support/platform_helpers.rb +2 -20
  400. data/spec/support/recipe_dsl_helper.rb +83 -0
  401. data/spec/support/shared/functional/http.rb +2 -2
  402. data/spec/support/shared/functional/windows_script.rb +3 -16
  403. data/spec/support/shared/integration/knife_support.rb +9 -6
  404. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  405. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  406. data/spec/unit/application/apply_spec.rb +3 -0
  407. data/spec/unit/application/client_spec.rb +5 -1
  408. data/spec/unit/application_spec.rb +1 -2
  409. data/spec/unit/client_spec.rb +7 -5
  410. data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
  411. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  412. data/spec/unit/data_collector_spec.rb +39 -18
  413. data/spec/unit/file_access_control_spec.rb +1 -1
  414. data/spec/unit/json_compat_spec.rb +1 -1
  415. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  416. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  417. data/spec/unit/knife/bootstrap_spec.rb +20 -38
  418. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  419. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  420. data/spec/unit/knife/core/ui_spec.rb +16 -0
  421. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
  422. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  423. data/spec/unit/knife/ssh_spec.rb +8 -111
  424. data/spec/unit/knife/status_spec.rb +1 -1
  425. data/spec/unit/knife_spec.rb +18 -0
  426. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  427. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  428. data/spec/unit/mixin/shell_out_spec.rb +25 -31
  429. data/spec/unit/node/attribute_spec.rb +3 -3
  430. data/spec/unit/node_spec.rb +24 -0
  431. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  432. data/spec/unit/property/state_spec.rb +12 -7
  433. data/spec/unit/property/validation_spec.rb +25 -1
  434. data/spec/unit/property_spec.rb +12 -9
  435. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  436. data/spec/unit/provider/apt_repository_spec.rb +34 -36
  437. data/spec/unit/provider/apt_update_spec.rb +12 -11
  438. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  439. data/spec/unit/provider/cron_spec.rb +2 -2
  440. data/spec/unit/provider/directory_spec.rb +4 -15
  441. data/spec/unit/provider/file_spec.rb +4 -4
  442. data/spec/unit/provider/git_spec.rb +41 -1
  443. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  444. data/spec/unit/provider/launchd_spec.rb +8 -50
  445. data/spec/unit/provider/link_spec.rb +0 -1
  446. data/spec/unit/provider/log_spec.rb +3 -3
  447. data/spec/unit/provider/mdadm_spec.rb +3 -3
  448. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  449. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  450. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  451. data/spec/unit/provider/package/portage_spec.rb +2 -2
  452. data/spec/unit/provider/package/powershell_spec.rb +3 -2
  453. data/spec/unit/provider/package/rubygems_spec.rb +211 -26
  454. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  455. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  456. data/spec/unit/provider/remote_file_spec.rb +3 -4
  457. data/spec/unit/provider/service/debian_service_spec.rb +34 -13
  458. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  459. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  460. data/spec/unit/provider/subversion_spec.rb +4 -2
  461. data/spec/unit/provider/template_spec.rb +3 -4
  462. data/spec/unit/provider/zypper_repository_spec.rb +17 -17
  463. data/spec/unit/provider_resolver_spec.rb +4 -4
  464. data/spec/unit/recipe_spec.rb +68 -0
  465. data/spec/unit/resource/alternatives_spec.rb +120 -0
  466. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  467. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  468. data/spec/unit/resource/apt_update_spec.rb +0 -18
  469. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  470. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  471. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  472. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  473. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  474. data/spec/unit/resource/cron_d_spec.rb +6 -48
  475. data/spec/unit/resource/cron_spec.rb +4 -10
  476. data/spec/unit/resource/gem_package_spec.rb +3 -3
  477. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  478. data/spec/unit/resource/link_spec.rb +0 -4
  479. data/spec/unit/resource/locale_spec.rb +0 -34
  480. data/spec/unit/resource/msu_package_spec.rb +4 -0
  481. data/spec/unit/resource/ohai_spec.rb +56 -2
  482. data/spec/unit/resource/plist_spec.rb +130 -0
  483. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  484. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  485. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  486. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  487. data/spec/unit/resource/service_spec.rb +4 -0
  488. data/spec/unit/resource/user_spec.rb +2 -2
  489. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  490. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  491. data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
  492. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  493. data/spec/unit/resource/windows_package_spec.rb +14 -0
  494. data/spec/unit/resource/windows_service_spec.rb +9 -0
  495. data/spec/unit/resource_reporter_spec.rb +2 -6
  496. data/spec/unit/resource_spec.rb +10 -3
  497. data/spec/unit/run_lock_spec.rb +1 -1
  498. data/spec/unit/scan_access_control_spec.rb +1 -1
  499. data/spec/unit/search/query_spec.rb +1 -1
  500. data/spec/unit/win32/registry_spec.rb +1 -1
  501. data/tasks/rspec.rb +6 -14
  502. metadata +92 -37
  503. data/lib/chef/dsl/core.rb +0 -52
  504. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  505. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  506. data/lib/chef/provider/apt_preference.rb +0 -93
  507. data/lib/chef/provider/apt_repository.rb +0 -358
  508. data/lib/chef/provider/apt_update.rb +0 -79
  509. data/lib/chef/provider/log.rb +0 -43
  510. data/lib/chef/provider/mdadm.rb +0 -85
  511. data/lib/chef/provider/ohai.rb +0 -45
  512. data/lib/chef/resource/git.rb +0 -37
  513. data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -67,8 +67,8 @@ class Chef
67
67
 
68
68
  result["name"] = node["name"] || node.name
69
69
  result["chef_environment"] = node["chef_environment"]
70
- ip = (node["ec2"] && node["ec2"]["public_ipv4"]) || node["ipaddress"]
71
- fqdn = (node["ec2"] && node["ec2"]["public_hostname"]) || node["fqdn"]
70
+ ip = (node["cloud"] && node["cloud"]["public_ipv4_addrs"].first) || node["ipaddress"]
71
+ fqdn = (node["cloud"] && node["cloud"]["public_hostname"]) || node["fqdn"]
72
72
  result["ip"] = ip if ip
73
73
  result["fqdn"] = fqdn if fqdn
74
74
  result["run_list"] = node.run_list if config["run_list"]
@@ -95,9 +95,9 @@ class Chef
95
95
  summarized = ""
96
96
  list.each do |data|
97
97
  node = data
98
- # special case ec2 with their split horizon whatsis.
99
- ip = (node[:ec2] && node[:ec2][:public_ipv4]) || node[:ipaddress]
100
- fqdn = (node[:ec2] && node[:ec2][:public_hostname]) || node[:fqdn]
98
+ # special case clouds with their split horizon thing.
99
+ ip = (node[:cloud] && node[:cloud][:public_ipv4_addrs] && node[:cloud][:public_ipv4_addrs].first) || node[:ipaddress]
100
+ fqdn = (node[:cloud] && node[:cloud][:public_hostname]) || node[:fqdn]
101
101
  name = node["name"] || node.name
102
102
 
103
103
  if config[:run_list]
@@ -32,7 +32,7 @@ class Chef
32
32
  # optionally filtering by category
33
33
  # subcommand_files - returns an array of all subcommand files
34
34
  # that could be loaded
35
- # commnad_class_from(args) - returns the subcommand class for the
35
+ # command_class_from(args) - returns the subcommand class for the
36
36
  # user-requested command
37
37
  #
38
38
  class SubcommandLoader
@@ -61,6 +61,14 @@ class Chef
61
61
  end
62
62
  end
63
63
 
64
+ # pastel.decorate is a lightweight replacement for highline.color
65
+ def pastel
66
+ @pastel ||= begin
67
+ require "pastel"
68
+ Pastel.new
69
+ end
70
+ end
71
+
64
72
  # Prints a message to stdout. Aliased as +info+ for compatibility with
65
73
  # the logger API.
66
74
  #
@@ -132,9 +140,17 @@ class Chef
132
140
  log("#{color("FATAL:", :red, :bold)} #{message}")
133
141
  end
134
142
 
143
+ # Print a message describing a fatal error and exit 1
144
+ #
145
+ # @param message [String] the text string
146
+ def fatal!(message)
147
+ fatal(message)
148
+ exit 1
149
+ end
150
+
135
151
  def color(string, *colors)
136
152
  if color?
137
- highline.color(string, *colors)
153
+ pastel.decorate(string, *colors)
138
154
  else
139
155
  string
140
156
  end
@@ -24,12 +24,14 @@ class Chef
24
24
  class Knife
25
25
  module Core
26
26
  # Instances of BootstrapContext are the context objects (i.e., +self+) for
27
- # bootstrap templates. For backwards compatability, they +must+ set the
27
+ # bootstrap templates. For backwards compatibility, they +must+ set the
28
28
  # following instance variables:
29
29
  # * @config - a hash of knife's config values
30
30
  # * @run_list - the run list for the node to boostrap
31
31
  #
32
32
  class WindowsBootstrapContext < BootstrapContext
33
+ attr_accessor :config
34
+ attr_accessor :chef_config
33
35
 
34
36
  def initialize(config, run_list, chef_config, secret = nil)
35
37
  @config = config
@@ -55,15 +57,15 @@ class Chef
55
57
  end
56
58
 
57
59
  def validation_key
58
- if File.exist?(File.expand_path(@chef_config[:validation_key]))
59
- IO.read(File.expand_path(@chef_config[:validation_key]))
60
+ if File.exist?(File.expand_path(chef_config[:validation_key]))
61
+ IO.read(File.expand_path(chef_config[:validation_key]))
60
62
  else
61
63
  false
62
64
  end
63
65
  end
64
66
 
65
67
  def secret
66
- escape_and_echo(@config[:secret])
68
+ escape_and_echo(config[:secret])
67
69
  end
68
70
 
69
71
  def trusted_certs_script
@@ -72,25 +74,25 @@ class Chef
72
74
 
73
75
  def config_content
74
76
  client_rb = <<~CONFIG
75
- chef_server_url "#{@chef_config[:chef_server_url]}"
76
- validation_client_name "#{@chef_config[:validation_client_name]}"
77
+ chef_server_url "#{chef_config[:chef_server_url]}"
78
+ validation_client_name "#{chef_config[:validation_client_name]}"
77
79
  file_cache_path "#{ChefConfig::Config.var_chef_dir(true)}/cache"
78
80
  file_backup_path "#{ChefConfig::Config.var_chef_dir(true)}/backup"
79
81
  cache_options ({:path => "#{ChefConfig::Config.etc_chef_dir(true)}/cache/checksums", :skip_expires => true})
80
82
  CONFIG
81
83
 
82
- unless @chef_config[:chef_license].nil?
83
- client_rb << "chef_license \"#{@chef_config[:chef_license]}\"\n"
84
+ unless chef_config[:chef_license].nil?
85
+ client_rb << "chef_license \"#{chef_config[:chef_license]}\"\n"
84
86
  end
85
87
 
86
- if @config[:chef_node_name]
87
- client_rb << %Q{node_name "#{@config[:chef_node_name]}"\n}
88
+ if config[:chef_node_name]
89
+ client_rb << %Q{node_name "#{config[:chef_node_name]}"\n}
88
90
  else
89
91
  client_rb << "# Using default node name (fqdn)\n"
90
92
  end
91
93
 
92
- if @chef_config[:config_log_level]
93
- client_rb << %Q{log_level :#{@chef_config[:config_log_level]}\n}
94
+ if chef_config[:config_log_level]
95
+ client_rb << %Q{log_level :#{chef_config[:config_log_level]}\n}
94
96
  else
95
97
  client_rb << "log_level :auto\n"
96
98
  end
@@ -99,21 +101,21 @@ class Chef
99
101
 
100
102
  # We configure :verify_api_cert only when it's overridden on the CLI
101
103
  # or when specified in the knife config.
102
- if !@config[:node_verify_api_cert].nil? || knife_config.key?(:verify_api_cert)
103
- value = @config[:node_verify_api_cert].nil? ? knife_config[:verify_api_cert] : @config[:node_verify_api_cert]
104
+ if !config[:node_verify_api_cert].nil? || config.key?(:verify_api_cert)
105
+ value = config[:node_verify_api_cert].nil? ? config[:verify_api_cert] : config[:node_verify_api_cert]
104
106
  client_rb << %Q{verify_api_cert #{value}\n}
105
107
  end
106
108
 
107
109
  # We configure :ssl_verify_mode only when it's overridden on the CLI
108
110
  # or when specified in the knife config.
109
- if @config[:node_ssl_verify_mode] || knife_config.key?(:ssl_verify_mode)
110
- value = case @config[:node_ssl_verify_mode]
111
+ if config[:node_ssl_verify_mode] || config.key?(:ssl_verify_mode)
112
+ value = case config[:node_ssl_verify_mode]
111
113
  when "peer"
112
114
  :verify_peer
113
115
  when "none"
114
116
  :verify_none
115
117
  when nil
116
- knife_config[:ssl_verify_mode]
118
+ config[:ssl_verify_mode]
117
119
  else
118
120
  nil
119
121
  end
@@ -123,22 +125,22 @@ class Chef
123
125
  end
124
126
  end
125
127
 
126
- if @config[:ssl_verify_mode]
127
- client_rb << %Q{ssl_verify_mode :#{knife_config[:ssl_verify_mode]}\n}
128
+ if config[:ssl_verify_mode]
129
+ client_rb << %Q{ssl_verify_mode :#{config[:ssl_verify_mode]}\n}
128
130
  end
129
131
 
130
- if knife_config[:bootstrap_proxy]
132
+ if config[:bootstrap_proxy]
131
133
  client_rb << "\n"
132
- client_rb << %Q{http_proxy "#{knife_config[:bootstrap_proxy]}"\n}
133
- client_rb << %Q{https_proxy "#{knife_config[:bootstrap_proxy]}"\n}
134
- client_rb << %Q{no_proxy "#{knife_config[:bootstrap_no_proxy]}"\n} if knife_config[:bootstrap_no_proxy]
134
+ client_rb << %Q{http_proxy "#{config[:bootstrap_proxy]}"\n}
135
+ client_rb << %Q{https_proxy "#{config[:bootstrap_proxy]}"\n}
136
+ client_rb << %Q{no_proxy "#{config[:bootstrap_no_proxy]}"\n} if config[:bootstrap_no_proxy]
135
137
  end
136
138
 
137
- if knife_config[:bootstrap_no_proxy]
138
- client_rb << %Q{no_proxy "#{knife_config[:bootstrap_no_proxy]}"\n}
139
+ if config[:bootstrap_no_proxy]
140
+ client_rb << %Q{no_proxy "#{config[:bootstrap_no_proxy]}"\n}
139
141
  end
140
142
 
141
- if @config[:secret]
143
+ if config[:secret]
142
144
  client_rb << %Q{encrypted_data_bag_secret "#{ChefConfig::Config.etc_chef_dir(true)}/encrypted_data_bag_secret"\n}
143
145
  end
144
146
 
@@ -146,7 +148,7 @@ class Chef
146
148
  client_rb << %Q{trusted_certs_dir "#{ChefConfig::Config.etc_chef_dir(true)}/trusted_certs"\n}
147
149
  end
148
150
 
149
- if Chef::Config[:fips]
151
+ if chef_config[:fips]
150
152
  client_rb << "fips true\n"
151
153
  end
152
154
 
@@ -154,18 +156,18 @@ class Chef
154
156
  end
155
157
 
156
158
  def get_log_location
157
- if @chef_config[:config_log_location].equal?(:win_evt)
158
- %Q{:#{@chef_config[:config_log_location]}\n}
159
- elsif @chef_config[:config_log_location].equal?(:syslog)
159
+ if chef_config[:config_log_location].equal?(:win_evt)
160
+ %Q{:#{chef_config[:config_log_location]}\n}
161
+ elsif chef_config[:config_log_location].equal?(:syslog)
160
162
  raise "syslog is not supported for log_location on Windows OS\n"
161
- elsif @chef_config[:config_log_location].equal?(STDOUT)
163
+ elsif chef_config[:config_log_location].equal?(STDOUT)
162
164
  "STDOUT\n"
163
- elsif @chef_config[:config_log_location].equal?(STDERR)
165
+ elsif chef_config[:config_log_location].equal?(STDERR)
164
166
  "STDERR\n"
165
- elsif @chef_config[:config_log_location].nil? || @chef_config[:config_log_location].empty?
167
+ elsif chef_config[:config_log_location].nil? || chef_config[:config_log_location].empty?
166
168
  "STDOUT\n"
167
- elsif @chef_config[:config_log_location]
168
- %Q{"#{@chef_config[:config_log_location]}"\n}
169
+ elsif chef_config[:config_log_location]
170
+ %Q{"#{chef_config[:config_log_location]}"\n}
169
171
  else
170
172
  "STDOUT\n"
171
173
  end
@@ -285,15 +287,15 @@ class Chef
285
287
  # Build a URL to query www.chef.io that will redirect to the correct
286
288
  # Chef Infra msi download.
287
289
  def msi_url(machine_os = nil, machine_arch = nil, download_context = nil)
288
- if @config[:msi_url].nil? || @config[:msi_url].empty?
290
+ if config[:msi_url].nil? || config[:msi_url].empty?
289
291
  url = "https://www.chef.io/chef/download?p=windows"
290
292
  url += "&pv=#{machine_os}" unless machine_os.nil?
291
293
  url += "&m=#{machine_arch}" unless machine_arch.nil?
292
294
  url += "&DownloadContext=#{download_context}" unless download_context.nil?
293
- url += "&channel=#{@config[:channel]}"
295
+ url += "&channel=#{config[:channel]}"
294
296
  url += "&v=#{version_to_install}"
295
297
  else
296
- @config[:msi_url]
298
+ config[:msi_url]
297
299
  end
298
300
  end
299
301
 
@@ -318,8 +320,8 @@ class Chef
318
320
  # This string should contain both the commands necessary to both create the files, as well as their content
319
321
  def trusted_certs_content
320
322
  content = ""
321
- if @chef_config[:trusted_certs_dir]
322
- Dir.glob(File.join(Chef::Util::PathHelper.escape_glob_dir(@chef_config[:trusted_certs_dir]), "*.{crt,pem}")).each do |cert|
323
+ if chef_config[:trusted_certs_dir]
324
+ Dir.glob(File.join(Chef::Util::PathHelper.escape_glob_dir(chef_config[:trusted_certs_dir]), "*.{crt,pem}")).each do |cert|
323
325
  content << "> #{bootstrap_directory}/trusted_certs/#{File.basename(cert)} (\n" +
324
326
  escape_and_echo(IO.read(File.expand_path(cert))) + "\n)\n"
325
327
  end
@@ -329,8 +331,8 @@ class Chef
329
331
 
330
332
  def client_d_content
331
333
  content = ""
332
- if @chef_config[:client_d_dir] && File.exist?(@chef_config[:client_d_dir])
333
- root = Pathname(@chef_config[:client_d_dir])
334
+ if chef_config[:client_d_dir] && File.exist?(chef_config[:client_d_dir])
335
+ root = Pathname(chef_config[:client_d_dir])
334
336
  root.find do |f|
335
337
  relative = f.relative_path_from(root)
336
338
  if f != root
@@ -34,18 +34,13 @@ class Chef
34
34
  # are provided.
35
35
 
36
36
  def self.included(base)
37
- base.option :secret,
38
- short: "-s SECRET",
37
+ base.option :cl_secret,
39
38
  long: "--secret SECRET",
40
- description: "The secret key to use to encrypt data bag item values. Can also be defaulted in your config with the key 'secret'.",
41
- # Need to store value from command line in separate variable - knife#merge_configs populates same keys
42
- # on config object from
43
- proc: Proc.new { |s| set_cl_secret(s) }
39
+ description: "The secret key to use to encrypt data bag item values. Can also be defaulted in your config with the key 'secret'."
44
40
 
45
- base.option :secret_file,
41
+ base.option :cl_secret_file,
46
42
  long: "--secret-file SECRET_FILE",
47
- description: "A file containing the secret key to use to encrypt data bag item values. Can also be defaulted in your config with the key 'secret_file'.",
48
- proc: Proc.new { |sf| set_cl_secret_file(sf) }
43
+ description: "A file containing the secret key to use to encrypt data bag item values. Can also be defaulted in your config with the key 'secret_file'."
49
44
 
50
45
  base.option :encrypt,
51
46
  long: "--encrypt",
@@ -67,32 +62,25 @@ class Chef
67
62
  # IE, if we are not running 'knife data bag *' we don't need to load 'chef/encrypted_data_bag_item'
68
63
  require_relative "../encrypted_data_bag_item"
69
64
 
70
- if has_cl_secret?
71
- config[:secret]
72
- elsif has_cl_secret_file?
73
- Chef::EncryptedDataBagItem.load_secret(config[:secret_file])
74
- elsif secret = knife_config[:secret]
65
+ if config[:cl_secret]
66
+ config[:cl_secret]
67
+ elsif config[:cl_secret_file]
68
+ Chef::EncryptedDataBagItem.load_secret(config[:cl_secret_file])
69
+ elsif secret = config[:secret]
75
70
  secret
76
71
  else
77
- secret_file = knife_config[:secret_file]
72
+ secret_file = config[:secret_file]
78
73
  Chef::EncryptedDataBagItem.load_secret(secret_file)
79
74
  end
80
75
  end
81
76
 
82
77
  def validate_secrets
83
- if has_cl_secret?
84
- if opt_parser.default_argv.include?("-s")
85
- ui.warn("Secret short option -s is deprecated and will remove in the future. Please use --secret instead.
86
- ")
87
- end
88
-
89
- if has_cl_secret_file?
90
- ui.fatal("Please specify only one of --secret, --secret-file")
91
- exit(1)
92
- end
78
+ if config[:cl_secret] && config[:cl_secret_file]
79
+ ui.fatal("Please specify only one of --secret, --secret-file")
80
+ exit(1)
93
81
  end
94
82
 
95
- if knife_config[:secret] && knife_config[:secret_file]
83
+ if config[:secret] && config[:secret_file]
96
84
  ui.fatal("Please specify only one of 'secret' or 'secret_file' in your config file")
97
85
  exit(1)
98
86
  end
@@ -106,41 +94,26 @@ class Chef
106
94
  def base_encryption_secret_provided?(need_encrypt_flag = true)
107
95
  validate_secrets
108
96
 
109
- return true if has_cl_secret? || has_cl_secret_file?
97
+ return true if config[:cl_secret] || config[:cl_secret_file]
110
98
 
111
99
  if need_encrypt_flag
112
100
  if config[:encrypt]
113
- unless knife_config[:secret] || knife_config[:secret_file]
101
+ unless config[:secret] || config[:secret_file]
114
102
  ui.fatal("No secret or secret_file specified in config, unable to encrypt item.")
115
103
  exit(1)
116
104
  end
117
105
  return true
118
106
  end
119
107
  return false
120
- elsif knife_config[:secret] || knife_config[:secret_file]
108
+ elsif config[:secret] || config[:secret_file]
121
109
  # Certain situations (show and bootstrap) don't need a --encrypt flag to use the config file secret
122
110
  return true
123
111
  end
124
112
  false
125
113
  end
126
114
 
127
- def has_cl_secret?
128
- Chef::Config[:knife].key?(:cl_secret)
129
- end
130
-
131
- def self.set_cl_secret(s)
132
- Chef::Config[:knife][:cl_secret] = s
133
- end
134
-
135
- def has_cl_secret_file?
136
- Chef::Config[:knife].key?(:cl_secret_file)
137
- end
138
-
139
- def self.set_cl_secret_file(sf)
140
- Chef::Config[:knife][:cl_secret_file] = sf
141
- end
142
-
143
115
  def knife_config
116
+ Chef.deprecated(:knife_bootstrap_apis, "The `knife_config` bootstrap helper has been deprecated, use the properly merged `config` helper instead")
144
117
  Chef::Config.key?(:knife) ? Chef::Config[:knife] : {}
145
118
  end
146
119
 
@@ -0,0 +1,55 @@
1
+ #
2
+ # Author:: Seth Falcon (<seth@chef.io>)
3
+ # Author:: Jeremiah Snapp (<jeremiah@chef.io>)
4
+ # Copyright:: Copyright (c) Chef Software Inc.
5
+ # License:: Apache License, Version 2.0
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
+
20
+ require_relative "../knife"
21
+
22
+ class Chef
23
+ class Knife
24
+ class GroupAdd < Chef::Knife
25
+ category "group"
26
+ banner "knife group add MEMBER_TYPE MEMBER_NAME GROUP_NAME"
27
+
28
+ deps do
29
+ require_relative "acl_base"
30
+ include Chef::Knife::AclBase
31
+ end
32
+
33
+ def run
34
+ member_type, member_name, group_name = name_args
35
+
36
+ if name_args.length != 3
37
+ show_usage
38
+ ui.fatal "You must specify member type [client|group|user], member name and group name"
39
+ exit 1
40
+ end
41
+
42
+ validate_member_name!(group_name)
43
+ validate_member_type!(member_type)
44
+ validate_member_name!(member_name)
45
+
46
+ if group_name.downcase == "users"
47
+ ui.fatal "knife group can not manage members of Chef Infra Server's 'users' group, which contains all users."
48
+ exit 1
49
+ end
50
+
51
+ add_to_group!(member_type, member_name, group_name)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,5 +1,6 @@
1
1
  #
2
- # Author:: Adam Jacob (<adam@chef.io>)
2
+ # Author:: Seth Falcon (<seth@chef.io>)
3
+ # Author:: Jeremiah Snapp (<jeremiah@chef.io>)
3
4
  # Copyright:: Copyright (c) Chef Software Inc.
4
5
  # License:: Apache License, Version 2.0
5
6
  #
@@ -17,24 +18,32 @@
17
18
  #
18
19
 
19
20
  require_relative "../knife"
20
- require_relative "supermarket_download"
21
- require_relative "../dist"
22
21
 
23
22
  class Chef
24
23
  class Knife
25
- class CookbookSiteDownload < Knife::SupermarketDownload
24
+ class GroupCreate < Chef::Knife
25
+ category "group"
26
+ banner "knife group create GROUP_NAME"
26
27
 
27
- # Handle the subclassing (knife doesn't do this :()
28
- dependency_loaders.concat(superclass.dependency_loaders)
29
-
30
- banner "knife cookbook site download COOKBOOK [VERSION] (options)"
31
- category "deprecated"
28
+ deps do
29
+ require_relative "acl_base"
30
+ include Chef::Knife::AclBase
31
+ end
32
32
 
33
33
  def run
34
- Chef::Log.warn("knife cookbook site download has been deprecated in favor of knife supermarket download. In #{Chef::Dist::PRODUCT} 16 (April 2020) this will result in an error!")
35
- super
36
- end
34
+ group_name = name_args[0]
37
35
 
36
+ if name_args.length != 1
37
+ show_usage
38
+ ui.fatal "You must specify group name"
39
+ exit 1
40
+ end
41
+
42
+ validate_member_name!(group_name)
43
+
44
+ ui.msg "Creating '#{group_name}' group"
45
+ rest.post_rest("groups", { groupname: group_name })
46
+ end
38
47
  end
39
48
  end
40
49
  end