chef 16.2.44 → 16.4.35

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 (385) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +3 -16
  4. data/chef-universal-mingw32.gemspec +2 -3
  5. data/chef.gemspec +4 -3
  6. data/lib/chef/action_collection.rb +4 -0
  7. data/lib/chef/api_client/registration.rb +8 -8
  8. data/lib/chef/application.rb +18 -1
  9. data/lib/chef/application/apply.rb +6 -5
  10. data/lib/chef/application/base.rb +2 -0
  11. data/lib/chef/application/client.rb +3 -0
  12. data/lib/chef/application/windows_service.rb +27 -27
  13. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  14. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  15. data/lib/chef/chef_class.rb +0 -1
  16. data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
  17. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  19. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  20. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  21. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  22. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  23. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  25. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  26. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  27. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  28. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  29. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  30. data/lib/chef/client.rb +14 -14
  31. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  32. data/lib/chef/cookbook/syntax_check.rb +1 -2
  33. data/lib/chef/cookbook_loader.rb +15 -29
  34. data/lib/chef/data_bag.rb +1 -2
  35. data/lib/chef/data_collector/run_end_message.rb +11 -1
  36. data/lib/chef/deprecated.rb +8 -0
  37. data/lib/chef/digester.rb +3 -2
  38. data/lib/chef/dsl/platform_introspection.rb +9 -7
  39. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  40. data/lib/chef/environment.rb +3 -4
  41. data/lib/chef/exceptions.rb +4 -1
  42. data/lib/chef/file_access_control/windows.rb +2 -2
  43. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  44. data/lib/chef/file_content_management/tempfile.rb +9 -9
  45. data/lib/chef/handler.rb +2 -0
  46. data/lib/chef/http.rb +12 -12
  47. data/lib/chef/http/authenticator.rb +3 -1
  48. data/lib/chef/json_compat.rb +1 -1
  49. data/lib/chef/knife.rb +4 -4
  50. data/lib/chef/knife/bootstrap.rb +18 -15
  51. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  52. data/lib/chef/knife/config_get.rb +1 -0
  53. data/lib/chef/knife/config_list_profiles.rb +4 -1
  54. data/lib/chef/knife/config_use_profile.rb +15 -5
  55. data/lib/chef/knife/configure.rb +1 -1
  56. data/lib/chef/knife/cookbook_download.rb +1 -1
  57. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  58. data/lib/chef/knife/cookbook_upload.rb +29 -37
  59. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  60. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  61. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  62. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  63. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  64. data/lib/chef/knife/core/ui.rb +8 -2
  65. data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
  66. data/lib/chef/knife/delete.rb +15 -15
  67. data/lib/chef/knife/exec.rb +2 -2
  68. data/lib/chef/knife/rehash.rb +3 -21
  69. data/lib/chef/knife/ssh.rb +11 -7
  70. data/lib/chef/knife/xargs.rb +19 -19
  71. data/lib/chef/knife/yaml_convert.rb +1 -1
  72. data/lib/chef/log.rb +7 -2
  73. data/lib/chef/mixin/checksum.rb +0 -1
  74. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  75. data/lib/chef/mixin/deep_merge.rb +35 -6
  76. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  77. data/lib/chef/mixin/openssl_helper.rb +30 -6
  78. data/lib/chef/mixin/path_sanity.rb +5 -4
  79. data/lib/chef/mixin/shell_out.rb +4 -188
  80. data/lib/chef/mixin/template.rb +1 -0
  81. data/lib/chef/mixin/which.rb +6 -3
  82. data/lib/chef/mixins.rb +1 -0
  83. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  84. data/lib/chef/node.rb +36 -12
  85. data/lib/chef/node/attribute.rb +2 -4
  86. data/lib/chef/node_map.rb +21 -18
  87. data/lib/chef/platform/service_helpers.rb +31 -28
  88. data/lib/chef/property.rb +1 -1
  89. data/lib/chef/provider/cron/unix.rb +0 -2
  90. data/lib/chef/provider/git.rb +17 -9
  91. data/lib/chef/provider/group.rb +0 -2
  92. data/lib/chef/provider/group/suse.rb +5 -5
  93. data/lib/chef/provider/ifconfig.rb +1 -4
  94. data/lib/chef/provider/mount.rb +0 -2
  95. data/lib/chef/provider/mount/solaris.rb +0 -1
  96. data/lib/chef/provider/package.rb +0 -2
  97. data/lib/chef/provider/package/rubygems.rb +1 -1
  98. data/lib/chef/provider/package/snap.rb +3 -4
  99. data/lib/chef/provider/package/windows.rb +9 -4
  100. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  101. data/lib/chef/provider/package/zypper.rb +0 -1
  102. data/lib/chef/provider/powershell_script.rb +21 -5
  103. data/lib/chef/provider/route.rb +1 -1
  104. data/lib/chef/provider/service.rb +2 -2
  105. data/lib/chef/provider/service/arch.rb +1 -1
  106. data/lib/chef/provider/service/debian.rb +1 -1
  107. data/lib/chef/provider/service/gentoo.rb +2 -2
  108. data/lib/chef/provider/service/macosx.rb +2 -2
  109. data/lib/chef/provider/service/openbsd.rb +1 -4
  110. data/lib/chef/provider/service/redhat.rb +2 -2
  111. data/lib/chef/provider/service/upstart.rb +1 -1
  112. data/lib/chef/provider/service/windows.rb +10 -10
  113. data/lib/chef/provider/systemd_unit.rb +0 -2
  114. data/lib/chef/provider/template/content.rb +1 -0
  115. data/lib/chef/provider/user/dscl.rb +2 -2
  116. data/lib/chef/provider/user/mac.rb +9 -9
  117. data/lib/chef/provider/windows_task.rb +0 -3
  118. data/lib/chef/provider/yum_repository.rb +1 -1
  119. data/lib/chef/provider/zypper_repository.rb +1 -2
  120. data/lib/chef/providers.rb +0 -1
  121. data/lib/chef/recipe.rb +1 -1
  122. data/lib/chef/resource.rb +9 -11
  123. data/lib/chef/resource/alternatives.rb +1 -1
  124. data/lib/chef/resource/apt_repository.rb +1 -10
  125. data/lib/chef/resource/build_essential.rb +2 -2
  126. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  127. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  128. data/lib/chef/resource/chef_gem.rb +57 -21
  129. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  130. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  131. data/lib/chef/resource/cron/cron_d.rb +1 -1
  132. data/lib/chef/resource/cron_access.rb +2 -2
  133. data/lib/chef/resource/dmg_package.rb +2 -2
  134. data/lib/chef/resource/execute.rb +4 -5
  135. data/lib/chef/resource/gem_package.rb +35 -2
  136. data/lib/chef/resource/homebrew_update.rb +2 -2
  137. data/lib/chef/resource/hostname.rb +18 -18
  138. data/lib/chef/resource/launchd.rb +1 -1
  139. data/lib/chef/resource/lwrp_base.rb +1 -0
  140. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  141. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  142. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  143. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  144. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  145. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  146. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  147. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  148. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  149. data/lib/chef/resource/osx_profile.rb +227 -5
  150. data/lib/chef/resource/powershell_package_source.rb +1 -1
  151. data/lib/chef/resource/powershell_script.rb +24 -30
  152. data/lib/chef/resource/service.rb +2 -2
  153. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  154. data/lib/chef/resource/sudo.rb +31 -4
  155. data/lib/chef/resource/swap_file.rb +17 -0
  156. data/lib/chef/resource/sysctl.rb +5 -5
  157. data/lib/chef/resource/timezone.rb +15 -0
  158. data/lib/chef/resource/user_ulimit.rb +1 -1
  159. data/lib/chef/resource/windows_ad_join.rb +2 -0
  160. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  161. data/lib/chef/resource/windows_auto_run.rb +2 -0
  162. data/lib/chef/resource/windows_certificate.rb +2 -0
  163. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  164. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  165. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  166. data/lib/chef/resource/windows_dns_record.rb +25 -5
  167. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  168. data/lib/chef/resource/windows_feature.rb +2 -0
  169. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  170. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  171. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  172. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  173. data/lib/chef/resource/windows_font.rb +3 -1
  174. data/lib/chef/resource/windows_pagefile.rb +4 -0
  175. data/lib/chef/resource/windows_printer.rb +17 -18
  176. data/lib/chef/resource/windows_printer_port.rb +14 -13
  177. data/lib/chef/resource/windows_security_policy.rb +52 -21
  178. data/lib/chef/resource/windows_share.rb +5 -3
  179. data/lib/chef/resource/windows_shortcut.rb +2 -0
  180. data/lib/chef/resource/windows_uac.rb +2 -0
  181. data/lib/chef/resource/windows_user_privilege.rb +27 -2
  182. data/lib/chef/resource/windows_workgroup.rb +2 -3
  183. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  184. data/lib/chef/resource_inspector.rb +7 -1
  185. data/lib/chef/resources.rb +1 -0
  186. data/lib/chef/role.rb +3 -4
  187. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  188. data/lib/chef/run_status.rb +2 -6
  189. data/lib/chef/server_api_versions.rb +4 -0
  190. data/lib/chef/shell.rb +1 -1
  191. data/lib/chef/shell/shell_session.rb +2 -0
  192. data/lib/chef/util/backup.rb +1 -1
  193. data/lib/chef/util/diff.rb +11 -12
  194. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  195. data/lib/chef/version.rb +2 -2
  196. data/lib/chef/win32/file.rb +2 -2
  197. data/lib/chef/win32/file/version_info.rb +5 -5
  198. data/lib/chef/win32/registry.rb +1 -2
  199. data/spec/data/ssl/chef-rspec.cert +15 -15
  200. data/spec/functional/knife/configure_spec.rb +1 -1
  201. data/spec/functional/knife/ssh_spec.rb +5 -16
  202. data/spec/functional/resource/aix_service_spec.rb +9 -2
  203. data/spec/functional/resource/aixinit_service_spec.rb +8 -9
  204. data/spec/functional/resource/apt_package_spec.rb +0 -1
  205. data/spec/functional/resource/bash_spec.rb +3 -2
  206. data/spec/functional/resource/bff_spec.rb +3 -3
  207. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  208. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  209. data/spec/functional/resource/cron_spec.rb +10 -2
  210. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  211. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  212. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  213. data/spec/functional/resource/execute_spec.rb +1 -1
  214. data/spec/functional/resource/git_spec.rb +23 -1
  215. data/spec/functional/resource/group_spec.rb +21 -9
  216. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  217. data/spec/functional/resource/insserv_spec.rb +7 -7
  218. data/spec/functional/resource/link_spec.rb +22 -25
  219. data/spec/functional/resource/mount_spec.rb +9 -1
  220. data/spec/functional/resource/msu_package_spec.rb +9 -3
  221. data/spec/functional/resource/powershell_script_spec.rb +8 -8
  222. data/spec/functional/resource/remote_file_spec.rb +7 -13
  223. data/spec/functional/resource/rpm_spec.rb +3 -3
  224. data/spec/functional/resource/timezone_spec.rb +2 -0
  225. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  226. data/spec/functional/resource/windows_font_spec.rb +49 -0
  227. data/spec/functional/resource/windows_package_spec.rb +0 -1
  228. data/spec/functional/resource/windows_path_spec.rb +4 -0
  229. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  230. data/spec/functional/resource/windows_service_spec.rb +4 -0
  231. data/spec/functional/resource/windows_task_spec.rb +4 -3
  232. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  233. data/spec/functional/resource/yum_package_spec.rb +4 -1
  234. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  235. data/spec/functional/run_lock_spec.rb +26 -25
  236. data/spec/functional/shell_spec.rb +5 -6
  237. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  238. data/spec/functional/version_spec.rb +1 -1
  239. data/spec/functional/win32/crypto_spec.rb +1 -1
  240. data/spec/functional/win32/registry_spec.rb +8 -8
  241. data/spec/functional/win32/service_manager_spec.rb +1 -1
  242. data/spec/integration/knife/common_options_spec.rb +12 -12
  243. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  244. data/spec/integration/knife/config_get_spec.rb +126 -125
  245. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  246. data/spec/integration/knife/config_use_profile_spec.rb +115 -61
  247. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  248. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  249. data/spec/integration/knife/diff_spec.rb +3 -1
  250. data/spec/integration/knife/download_spec.rb +3 -1
  251. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  252. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  253. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  254. data/spec/integration/knife/serve_spec.rb +5 -5
  255. data/spec/integration/knife/upload_spec.rb +3 -1
  256. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  257. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  258. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  259. data/spec/integration/recipes/notifies_spec.rb +1 -1
  260. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  261. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  262. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  263. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  264. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  265. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  266. data/spec/scripts/ssl-serve.rb +1 -1
  267. data/spec/spec_helper.rb +16 -10
  268. data/spec/support/chef_helpers.rb +1 -20
  269. data/spec/support/platform_helpers.rb +9 -11
  270. data/spec/support/platforms/win32/spec_service.rb +1 -1
  271. data/spec/support/shared/functional/directory_resource.rb +1 -1
  272. data/spec/support/shared/functional/execute_resource.rb +1 -1
  273. data/spec/support/shared/functional/file_resource.rb +20 -21
  274. data/spec/support/shared/functional/securable_resource.rb +1 -2
  275. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  276. data/spec/support/shared/functional/win32_service.rb +1 -1
  277. data/spec/support/shared/functional/windows_script.rb +5 -5
  278. data/spec/support/shared/integration/integration_helper.rb +22 -52
  279. data/spec/support/shared/integration/knife_support.rb +2 -9
  280. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  281. data/spec/support/shared/unit/provider/file.rb +12 -8
  282. data/spec/support/shared/unit/script_resource.rb +6 -20
  283. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  284. data/spec/unit/application/solo_spec.rb +4 -2
  285. data/spec/unit/application_spec.rb +4 -2
  286. data/spec/unit/chef_fs/config_spec.rb +2 -2
  287. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  288. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  289. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  290. data/spec/unit/client_spec.rb +4 -1
  291. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  292. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  293. data/spec/unit/data_bag_spec.rb +6 -3
  294. data/spec/unit/data_collector_spec.rb +23 -1
  295. data/spec/unit/decorator_spec.rb +23 -23
  296. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  297. data/spec/unit/environment_spec.rb +12 -8
  298. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  299. data/spec/unit/guard_interpreter_spec.rb +1 -1
  300. data/spec/unit/http/api_versions_spec.rb +20 -2
  301. data/spec/unit/json_compat_spec.rb +1 -1
  302. data/spec/unit/knife/bootstrap_spec.rb +17 -20
  303. data/spec/unit/knife/cookbook_download_spec.rb +6 -6
  304. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  305. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  306. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  307. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  308. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  309. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  310. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  311. data/spec/unit/log/syslog_spec.rb +6 -10
  312. data/spec/unit/log/winevt_spec.rb +21 -13
  313. data/spec/unit/lwrp_spec.rb +9 -6
  314. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  315. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  316. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  317. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  318. data/spec/unit/mixin/securable_spec.rb +0 -1
  319. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  320. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  321. data/spec/unit/mixin/template_spec.rb +30 -30
  322. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  323. data/spec/unit/mixin/uris_spec.rb +1 -1
  324. data/spec/unit/mixin/which.rb +8 -0
  325. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  326. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  327. data/spec/unit/node_spec.rb +103 -16
  328. data/spec/unit/property_spec.rb +5 -5
  329. data/spec/unit/provider/batch_spec.rb +1 -1
  330. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  331. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  332. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  333. data/spec/unit/provider/execute_spec.rb +1 -8
  334. data/spec/unit/provider/git_spec.rb +3 -3
  335. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  336. data/spec/unit/provider/mdadm_spec.rb +1 -3
  337. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  338. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  339. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  340. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  341. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  342. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  343. data/spec/unit/provider/package/windows_spec.rb +30 -53
  344. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  345. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  346. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  347. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  348. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  349. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  350. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  351. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  352. data/spec/unit/provider/service/windows_spec.rb +2 -6
  353. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  354. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  355. data/spec/unit/provider/windows_env_spec.rb +5 -4
  356. data/spec/unit/provider_resolver_spec.rb +6 -6
  357. data/spec/unit/provider_spec.rb +1 -0
  358. data/spec/unit/resource/batch_spec.rb +6 -6
  359. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  360. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  361. data/spec/unit/resource/execute_spec.rb +123 -118
  362. data/spec/unit/resource/file/verification_spec.rb +2 -1
  363. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  364. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  365. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  366. data/spec/unit/resource/script_spec.rb +6 -1
  367. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  368. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  369. data/spec/unit/resource/windows_package_spec.rb +1 -0
  370. data/spec/unit/resource_reporter_spec.rb +1 -1
  371. data/spec/unit/resource_spec.rb +25 -8
  372. data/spec/unit/role_spec.rb +30 -28
  373. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  374. data/spec/unit/run_lock_spec.rb +1 -1
  375. data/spec/unit/scan_access_control_spec.rb +1 -1
  376. data/spec/unit/server_api_spec.rb +43 -16
  377. data/spec/unit/util/backup_spec.rb +1 -1
  378. data/spec/unit/util/diff_spec.rb +1 -15
  379. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  380. data/spec/unit/util/selinux_spec.rb +2 -1
  381. data/spec/unit/win32/security_spec.rb +4 -3
  382. data/tasks/rspec.rb +1 -1
  383. metadata +45 -24
  384. data/lib/chef/provider/osx_profile.rb +0 -255
  385. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -20,8 +20,8 @@ require "chef"
20
20
  require "chef/util/powershell/ps_credential"
21
21
 
22
22
  describe Chef::Util::Powershell::PSCredential do
23
- let (:username) { "foo" }
24
- let (:password) { "ThIsIsThEpAsSwOrD" }
23
+ let(:username) { "foo" }
24
+ let(:password) { "ThIsIsThEpAsSwOrD" }
25
25
 
26
26
  context "when username and password are provided" do
27
27
  let(:ps_credential) { Chef::Util::Powershell::PSCredential.new(username, password) }
@@ -30,6 +30,7 @@ describe Chef::Util::Selinux do
30
30
  end
31
31
 
32
32
  before do
33
+ allow(ChefUtils).to receive(:windows?).and_return(false)
33
34
  TestClass.reset_state
34
35
  @test_instance = TestClass.new
35
36
  end
@@ -113,7 +114,7 @@ describe Chef::Util::Selinux do
113
114
  end
114
115
 
115
116
  describe "when restorecon binary exists on the system" do
116
- let (:path) { "/path/to/awesome directory" }
117
+ let(:path) { "/path/to/awesome directory" }
117
118
 
118
119
  before do
119
120
  @restorecon_enabled_path = File.join("/sbin", "restorecon")
@@ -81,9 +81,10 @@ describe "Chef::Win32::Security", :windows_only do
81
81
 
82
82
  context "when the user has admin privileges" do
83
83
  it "returns true" do
84
- allow(Chef::ReservedNames::Win32::Security).to receive(:open_current_process_token)
85
- token = Chef::ReservedNames::Win32::Security.open_current_process_token
84
+ token = double(:process_token)
86
85
  allow(token).to receive_message_chain(:handle, :handle)
86
+
87
+ allow(Chef::ReservedNames::Win32::Security).to receive(:open_current_process_token).and_return(token)
87
88
  allow(Chef::ReservedNames::Win32::Security).to receive(:get_token_information_elevation_type)
88
89
  allow(Chef::ReservedNames::Win32::Security).to receive(:GetTokenInformation).and_return(true)
89
90
  allow_any_instance_of(FFI::Buffer).to receive(:read_ulong).and_return(1)
@@ -128,7 +129,7 @@ describe "Chef::Win32::Security", :windows_only do
128
129
  context "when FFI::LastError.error result is not ERROR_INSUFFICIENT_BUFFER and not NO_ERROR" do
129
130
  it "raises Chef::ReservedNames::Win32::Error.raise! exception" do
130
131
  expect(FFI::LastError).to receive(:error).and_return(123).at_least(:once)
131
- expect { security_class.lookup_account_name "system" }.to raise_error
132
+ expect { security_class.lookup_account_name "system" }.to raise_error(Chef::Exceptions::Win32APIError)
132
133
  end
133
134
  end
134
135
  end
@@ -30,7 +30,7 @@ begin
30
30
  %w{chef-utils chef-config}.each do |gem|
31
31
  Dir.chdir(gem) do
32
32
  Bundler.with_unbundled_env do
33
- sh("bundle install")
33
+ sh("bundle install --jobs=3 --retry=3")
34
34
  sh("bundle exec rake spec")
35
35
  end
36
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.2.44
4
+ version: 16.4.35
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-17 00:00:00.000000000 Z
11
+ date: 2020-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef-config
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 16.2.44
19
+ version: 16.4.35
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 16.2.44
26
+ version: 16.4.35
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: chef-utils
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 16.2.44
33
+ version: 16.4.35
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 16.2.44
40
+ version: 16.4.35
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: train-core
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -158,7 +158,7 @@ dependencies:
158
158
  requirements:
159
159
  - - ">="
160
160
  - !ruby/object:Gem::Version
161
- version: 3.0.3
161
+ version: 3.1.1
162
162
  - - "<"
163
163
  - !ruby/object:Gem::Version
164
164
  version: '4.0'
@@ -168,7 +168,7 @@ dependencies:
168
168
  requirements:
169
169
  - - ">="
170
170
  - !ruby/object:Gem::Version
171
- version: 3.0.3
171
+ version: 3.1.1
172
172
  - - "<"
173
173
  - !ruby/object:Gem::Version
174
174
  version: '4.0'
@@ -342,6 +342,20 @@ dependencies:
342
342
  - - "<"
343
343
  - !ruby/object:Gem::Version
344
344
  version: '3'
345
+ - !ruby/object:Gem::Dependency
346
+ name: tty-prompt
347
+ requirement: !ruby/object:Gem::Requirement
348
+ requirements:
349
+ - - "~>"
350
+ - !ruby/object:Gem::Version
351
+ version: '0.21'
352
+ type: :runtime
353
+ prerelease: false
354
+ version_requirements: !ruby/object:Gem::Requirement
355
+ requirements:
356
+ - - "~>"
357
+ - !ruby/object:Gem::Version
358
+ version: '0.21'
345
359
  - !ruby/object:Gem::Dependency
346
360
  name: tty-screen
347
361
  requirement: !ruby/object:Gem::Requirement
@@ -388,36 +402,42 @@ dependencies:
388
402
  name: diff-lcs
389
403
  requirement: !ruby/object:Gem::Requirement
390
404
  requirements:
391
- - - "~>"
392
- - !ruby/object:Gem::Version
393
- version: '1.2'
394
405
  - - ">="
395
406
  - !ruby/object:Gem::Version
396
407
  version: 1.2.4
408
+ - - "<"
409
+ - !ruby/object:Gem::Version
410
+ version: 1.4.0
397
411
  type: :runtime
398
412
  prerelease: false
399
413
  version_requirements: !ruby/object:Gem::Requirement
400
414
  requirements:
401
- - - "~>"
402
- - !ruby/object:Gem::Version
403
- version: '1.2'
404
415
  - - ">="
405
416
  - !ruby/object:Gem::Version
406
417
  version: 1.2.4
418
+ - - "<"
419
+ - !ruby/object:Gem::Version
420
+ version: 1.4.0
407
421
  - !ruby/object:Gem::Dependency
408
422
  name: ffi-libarchive
409
423
  requirement: !ruby/object:Gem::Requirement
410
424
  requirements:
425
+ - - "~>"
426
+ - !ruby/object:Gem::Version
427
+ version: '1.0'
411
428
  - - ">="
412
429
  - !ruby/object:Gem::Version
413
- version: '0'
430
+ version: 1.0.3
414
431
  type: :runtime
415
432
  prerelease: false
416
433
  version_requirements: !ruby/object:Gem::Requirement
417
434
  requirements:
435
+ - - "~>"
436
+ - !ruby/object:Gem::Version
437
+ version: '1.0'
418
438
  - - ">="
419
439
  - !ruby/object:Gem::Version
420
- version: '0'
440
+ version: 1.0.3
421
441
  - !ruby/object:Gem::Dependency
422
442
  name: chef-zero
423
443
  requirement: !ruby/object:Gem::Requirement
@@ -576,7 +596,8 @@ files:
576
596
  - lib/chef/application/windows_service.rb
577
597
  - lib/chef/application/windows_service_manager.rb
578
598
  - lib/chef/applications.rb
579
- - lib/chef/blacklist.rb
599
+ - lib/chef/attribute_allowlist.rb
600
+ - lib/chef/attribute_blocklist.rb
580
601
  - lib/chef/chef_class.rb
581
602
  - lib/chef/chef_fs.rb
582
603
  - lib/chef/chef_fs/chef_fs_data_store.rb
@@ -968,9 +989,11 @@ files:
968
989
  - lib/chef/mash.rb
969
990
  - lib/chef/mixin/api_version_request_handling.rb
970
991
  - lib/chef/mixin/checksum.rb
992
+ - lib/chef/mixin/chef_utils_wiring.rb
971
993
  - lib/chef/mixin/convert_to_class_name.rb
972
994
  - lib/chef/mixin/create_path.rb
973
995
  - lib/chef/mixin/deep_merge.rb
996
+ - lib/chef/mixin/default_paths.rb
974
997
  - lib/chef/mixin/deprecation.rb
975
998
  - lib/chef/mixin/descendants_tracker.rb
976
999
  - lib/chef/mixin/enforce_ownership_and_permissions.rb
@@ -1077,7 +1100,6 @@ files:
1077
1100
  - lib/chef/provider/mount/solaris.rb
1078
1101
  - lib/chef/provider/mount/windows.rb
1079
1102
  - lib/chef/provider/noop.rb
1080
- - lib/chef/provider/osx_profile.rb
1081
1103
  - lib/chef/provider/package.rb
1082
1104
  - lib/chef/provider/package/apt.rb
1083
1105
  - lib/chef/provider/package/bff.rb
@@ -1336,6 +1358,7 @@ files:
1336
1358
  - lib/chef/resource/windows_feature.rb
1337
1359
  - lib/chef/resource/windows_feature_dism.rb
1338
1360
  - lib/chef/resource/windows_feature_powershell.rb
1361
+ - lib/chef/resource/windows_firewall_profile.rb
1339
1362
  - lib/chef/resource/windows_firewall_rule.rb
1340
1363
  - lib/chef/resource/windows_font.rb
1341
1364
  - lib/chef/resource/windows_package.rb
@@ -1417,7 +1440,6 @@ files:
1417
1440
  - lib/chef/version_constraint.rb
1418
1441
  - lib/chef/version_constraint/platform.rb
1419
1442
  - lib/chef/version_string.rb
1420
- - lib/chef/whitelist.rb
1421
1443
  - lib/chef/win32/api.rb
1422
1444
  - lib/chef/win32/api/command_line_helper.rb
1423
1445
  - lib/chef/win32/api/crypto.rb
@@ -1896,7 +1918,6 @@ files:
1896
1918
  - spec/functional/resource/aix_service_spec.rb
1897
1919
  - spec/functional/resource/aixinit_service_spec.rb
1898
1920
  - spec/functional/resource/apt_package_spec.rb
1899
- - spec/functional/resource/base.rb
1900
1921
  - spec/functional/resource/bash_spec.rb
1901
1922
  - spec/functional/resource/batch_spec.rb
1902
1923
  - spec/functional/resource/bff_spec.rb
@@ -1933,6 +1954,7 @@ files:
1933
1954
  - spec/functional/resource/user/windows_spec.rb
1934
1955
  - spec/functional/resource/windows_certificate_spec.rb
1935
1956
  - spec/functional/resource/windows_env_spec.rb
1957
+ - spec/functional/resource/windows_font_spec.rb
1936
1958
  - spec/functional/resource/windows_package_spec.rb
1937
1959
  - spec/functional/resource/windows_path_spec.rb
1938
1960
  - spec/functional/resource/windows_security_policy_spec.rb
@@ -2119,7 +2141,7 @@ files:
2119
2141
  - spec/unit/chef_fs/file_system/repository/base_file_spec.rb
2120
2142
  - spec/unit/chef_fs/file_system/repository/directory_spec.rb
2121
2143
  - spec/unit/chef_fs/file_system_spec.rb
2122
- - spec/unit/chef_fs/parallelizer.rb
2144
+ - spec/unit/chef_fs/parallelizer_spec.rb
2123
2145
  - spec/unit/chef_fs/path_util_spec.rb
2124
2146
  - spec/unit/chef_spec.rb
2125
2147
  - spec/unit/client_spec.rb
@@ -2296,19 +2318,18 @@ files:
2296
2318
  - spec/unit/knife_spec.rb
2297
2319
  - spec/unit/log/syslog_spec.rb
2298
2320
  - spec/unit/log/winevt_spec.rb
2299
- - spec/unit/log_spec.rb
2300
2321
  - spec/unit/lwrp_spec.rb
2301
2322
  - spec/unit/mixin/api_version_request_handling_spec.rb
2302
2323
  - spec/unit/mixin/checksum_spec.rb
2303
2324
  - spec/unit/mixin/convert_to_class_name_spec.rb
2304
2325
  - spec/unit/mixin/deep_merge_spec.rb
2326
+ - spec/unit/mixin/default_paths_spec.rb
2305
2327
  - spec/unit/mixin/deprecation_spec.rb
2306
2328
  - spec/unit/mixin/enforce_ownership_and_permissions_spec.rb
2307
2329
  - spec/unit/mixin/homebrew_user_spec.rb
2308
2330
  - spec/unit/mixin/lazy_module_include.rb
2309
2331
  - spec/unit/mixin/openssl_helper_spec.rb
2310
2332
  - spec/unit/mixin/params_validate_spec.rb
2311
- - spec/unit/mixin/path_sanity_spec.rb
2312
2333
  - spec/unit/mixin/powershell_exec_spec.rb
2313
2334
  - spec/unit/mixin/powershell_out_spec.rb
2314
2335
  - spec/unit/mixin/powershell_type_coercions_spec.rb
@@ -2380,7 +2401,6 @@ files:
2380
2401
  - spec/unit/provider/mount/solaris_spec.rb
2381
2402
  - spec/unit/provider/mount/windows_spec.rb
2382
2403
  - spec/unit/provider/mount_spec.rb
2383
- - spec/unit/provider/osx_profile_spec.rb
2384
2404
  - spec/unit/provider/package/apt_spec.rb
2385
2405
  - spec/unit/provider/package/bff_spec.rb
2386
2406
  - spec/unit/provider/package/cab_spec.rb
@@ -2600,6 +2620,7 @@ files:
2600
2620
  - spec/unit/resource/windows_feature_dism_spec.rb
2601
2621
  - spec/unit/resource/windows_feature_powershell_spec.rb
2602
2622
  - spec/unit/resource/windows_feature_spec.rb
2623
+ - spec/unit/resource/windows_firewall_profile_spec.rb
2603
2624
  - spec/unit/resource/windows_firewall_rule_spec.rb
2604
2625
  - spec/unit/resource/windows_font_spec.rb
2605
2626
  - spec/unit/resource/windows_package_spec.rb
@@ -1,255 +0,0 @@
1
- #
2
- # Author:: Nate Walck (<nate.walck@gmail.com>)
3
- # Copyright:: Copyright 2015-2016, Facebook, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require_relative "../log"
20
- require_relative "../provider"
21
- require_relative "../resource"
22
- require_relative "../resource/file"
23
- require "uuidtools"
24
- require "plist"
25
-
26
- class Chef
27
- class Provider
28
- class OsxProfile < Chef::Provider
29
- provides :osx_profile
30
- provides :osx_config_profile
31
-
32
- def load_current_resource
33
- @current_resource = Chef::Resource::OsxProfile.new(new_resource.name)
34
- current_resource.profile_name(new_resource.profile_name)
35
-
36
- all_profiles = get_installed_profiles
37
- # FIXME: stop mutating the desired state
38
- new_resource.profile(
39
- new_resource.profile ||
40
- new_resource.profile_name
41
- )
42
-
43
- @new_profile_hash = get_profile_hash(new_resource.profile)
44
- if @new_profile_hash
45
- @new_profile_hash["PayloadUUID"] =
46
- config_uuid(@new_profile_hash)
47
- end
48
-
49
- if @new_profile_hash
50
- @new_profile_identifier = @new_profile_hash["PayloadIdentifier"]
51
- else
52
- @new_profile_identifier = new_resource.identifier ||
53
- new_resource.profile_name
54
- end
55
-
56
- current_profile = nil
57
- if all_profiles && all_profiles.key?("_computerlevel")
58
- current_profile = all_profiles["_computerlevel"].find do |item|
59
- item["ProfileIdentifier"] == @new_profile_identifier
60
- end
61
- end
62
- current_resource.profile(current_profile)
63
- end
64
-
65
- def define_resource_requirements
66
- requirements.assert(:remove) do |a|
67
- if @new_profile_identifier
68
- a.assertion do
69
- !@new_profile_identifier.nil? &&
70
- !@new_profile_identifier.end_with?(".mobileconfig") &&
71
- /^\w+(?:(\.| )\w+)+$/.match(@new_profile_identifier)
72
- end
73
- a.failure_message RuntimeError, "when removing using the identifier property, it must match the profile identifier"
74
- else
75
- new_profile_name = new_resource.profile_name
76
- a.assertion do
77
- !new_profile_name.end_with?(".mobileconfig") &&
78
- /^\w+(?:(\.| )\w+)+$/.match(new_profile_name)
79
- end
80
- a.failure_message RuntimeError, "When removing by resource name, it must match the profile identifier "
81
- end
82
- end
83
-
84
- requirements.assert(:install) do |a|
85
- if @new_profile_hash.is_a?(Hash)
86
- a.assertion do
87
- @new_profile_hash.include?("PayloadIdentifier")
88
- end
89
- a.failure_message RuntimeError, "The specified profile does not seem to be valid"
90
- end
91
- if @new_profile_hash.is_a?(String)
92
- a.assertion do
93
- @new_profile_hash.end_with?(".mobileconfig")
94
- end
95
- a.failure_message RuntimeError, "#{new_profile_hash}' is not a valid profile"
96
- end
97
- end
98
- end
99
-
100
- action :install do
101
- unless profile_installed?
102
- converge_by("install profile #{@new_profile_identifier}") do
103
- profile_path = write_profile_to_disk
104
- install_profile(profile_path)
105
- get_installed_profiles(true)
106
- end
107
- end
108
- end
109
-
110
- action :remove do
111
- # Clean up profile after removing it
112
- if profile_installed?
113
- converge_by("remove profile #{@new_profile_identifier}") do
114
- remove_profile
115
- get_installed_profiles(true)
116
- end
117
- end
118
- end
119
-
120
- def load_profile_hash(new_profile)
121
- # file must exist in cookbook
122
- if new_profile.end_with?(".mobileconfig")
123
- unless cookbook_file_available?(new_profile)
124
- error_string = "#{self}: '#{new_profile}' not found in cookbook"
125
- raise Chef::Exceptions::FileNotFound, error_string
126
- end
127
- cookbook_profile = cache_cookbook_profile(new_profile)
128
- read_plist(cookbook_profile)
129
- else
130
- nil
131
- end
132
- end
133
-
134
- def cookbook_file_available?(cookbook_file)
135
- run_context.has_cookbook_file_in_cookbook?(
136
- new_resource.cookbook_name, cookbook_file
137
- )
138
- end
139
-
140
- def get_cache_dir
141
- cache_dir = Chef::FileCache.create_cache_path(
142
- "profiles/#{new_resource.cookbook_name}"
143
- )
144
- end
145
-
146
- def cache_cookbook_profile(cookbook_file)
147
- Chef::FileCache.create_cache_path(
148
- ::File.join(
149
- "profiles",
150
- new_resource.cookbook_name,
151
- ::File.dirname(cookbook_file)
152
- )
153
- )
154
- # FIXME: should use a real cookbook file, or document what this craziness is
155
- remote_file = Chef::Resource::CookbookFile.new(
156
- ::File.join(
157
- get_cache_dir,
158
- "#{cookbook_file}.remote"
159
- ),
160
- run_context
161
- )
162
- remote_file.cookbook_name = new_resource.cookbook_name
163
- remote_file.source(cookbook_file)
164
- remote_file.backup(false)
165
- remote_file.run_action(:create)
166
- remote_file.path
167
- end
168
-
169
- def get_profile_hash(new_profile)
170
- if new_profile.is_a?(Hash)
171
- new_profile
172
- elsif new_profile.is_a?(String)
173
- load_profile_hash(new_profile)
174
- end
175
- end
176
-
177
- def config_uuid(profile)
178
- # Make a UUID of the profile contents and return as string
179
- UUIDTools::UUID.sha1_create(
180
- UUIDTools::UUID_DNS_NAMESPACE,
181
- profile.to_s
182
- ).to_s
183
- end
184
-
185
- def write_profile_to_disk
186
- # FIXME: use a real chef file resource and stop hacking up tempfiles directly
187
- new_resource.path(Chef::FileCache.create_cache_path("profiles"))
188
- tempfile = Chef::FileContentManagement::Tempfile.new(new_resource).tempfile
189
- tempfile.write(@new_profile_hash.to_plist)
190
- tempfile.close
191
- tempfile.path
192
- end
193
-
194
- def install_profile(profile_path)
195
- cmd = [ "/usr/bin/profiles", "-I", "-F", profile_path ]
196
- logger.trace("cmd: #{cmd.join(" ")}")
197
- shellout_results = shell_out(*cmd)
198
- shellout_results.exitstatus
199
- end
200
-
201
- def remove_profile
202
- cmd = [ "/usr/bin/profiles", "-R", "-p", @new_profile_identifier ]
203
- logger.trace("cmd: #{cmd.join(" ")}")
204
- shellout_results = shell_out(*cmd)
205
- shellout_results.exitstatus
206
- end
207
-
208
- def get_installed_profiles(update = nil)
209
- if update
210
- node.run_state[:config_profiles] = query_installed_profiles
211
- else
212
- node.run_state[:config_profiles] ||= query_installed_profiles
213
- end
214
- end
215
-
216
- def query_installed_profiles
217
- # Dump all profile metadata to a tempfile
218
- tempfile = generate_tempfile
219
- write_installed_profiles(tempfile)
220
- installed_profiles = read_plist(tempfile)
221
- logger.trace("Saved profiles to run_state")
222
- # Clean up the temp file as we do not need it anymore
223
- ::File.unlink(tempfile)
224
- installed_profiles
225
- end
226
-
227
- def generate_tempfile
228
- tempfile = ::Dir::Tmpname.create("allprofiles.plist") {}
229
- end
230
-
231
- def write_installed_profiles(tempfile)
232
- shell_out!( "/usr/bin/profiles", "-P", "-o", tempfile )
233
- end
234
-
235
- def read_plist(xml_file)
236
- ::Plist.parse_xml(xml_file)
237
- end
238
-
239
- def profile_installed?
240
- # Profile Identifier and UUID must match a currently installed profile
241
- if current_resource.profile.nil? || current_resource.profile.empty?
242
- false
243
- else
244
- if new_resource.action.include?(:remove)
245
- true
246
- else
247
- current_resource.profile["ProfileUUID"] ==
248
- @new_profile_hash["PayloadUUID"]
249
- end
250
- end
251
- end
252
-
253
- end
254
- end
255
- end