chef 16.3.38-universal-mingw32 → 16.5.64-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 (405) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Rakefile +2 -2
  4. data/bin/knife +1 -1
  5. data/chef-universal-mingw32.gemspec +0 -1
  6. data/chef.gemspec +2 -1
  7. data/distro/templates/powershell/chef/chef.psm1.erb +18 -18
  8. data/ext/win32-eventlog/Rakefile +2 -2
  9. data/ext/win32-eventlog/chef-log.man.erb +4 -4
  10. data/lib/chef/action_collection.rb +4 -0
  11. data/lib/chef/api_client/registration.rb +2 -2
  12. data/lib/chef/application.rb +19 -17
  13. data/lib/chef/application/apply.rb +17 -12
  14. data/lib/chef/application/base.rb +26 -23
  15. data/lib/chef/application/client.rb +10 -4
  16. data/lib/chef/application/exit_code.rb +13 -4
  17. data/lib/chef/application/knife.rb +22 -11
  18. data/lib/chef/application/solo.rb +2 -1
  19. data/lib/chef/application/windows_service.rb +39 -39
  20. data/lib/chef/application/windows_service_manager.rb +6 -6
  21. data/lib/chef/chef_class.rb +0 -1
  22. data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
  23. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  24. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  25. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  26. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  27. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  28. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  29. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  30. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  31. data/lib/chef/chef_fs/knife.rb +2 -2
  32. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  33. data/lib/chef/client.rb +21 -22
  34. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  35. data/lib/chef/cookbook/synchronizer.rb +2 -2
  36. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  37. data/lib/chef/cookbook_uploader.rb +1 -1
  38. data/lib/chef/data_collector.rb +6 -5
  39. data/lib/chef/data_collector/config_validation.rb +22 -13
  40. data/lib/chef/data_collector/run_end_message.rb +13 -3
  41. data/lib/chef/data_collector/run_start_message.rb +1 -1
  42. data/lib/chef/deprecated.rb +1 -1
  43. data/lib/chef/deprecation/warnings.rb +2 -2
  44. data/lib/chef/digester.rb +2 -2
  45. data/lib/chef/dsl/chef_vault.rb +1 -1
  46. data/lib/chef/dsl/data_query.rb +2 -2
  47. data/lib/chef/dsl/platform_introspection.rb +9 -9
  48. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  49. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  50. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  51. data/lib/chef/environment.rb +4 -4
  52. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  53. data/lib/chef/exceptions.rb +5 -5
  54. data/lib/chef/file_access_control/windows.rb +5 -1
  55. data/lib/chef/file_content_management/tempfile.rb +9 -9
  56. data/lib/chef/formatters/doc.rb +7 -6
  57. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  58. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  59. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  60. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  61. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  62. data/lib/chef/formatters/minimal.rb +5 -4
  63. data/lib/chef/handler.rb +2 -0
  64. data/lib/chef/http.rb +15 -13
  65. data/lib/chef/http/auth_credentials.rb +5 -1
  66. data/lib/chef/http/authenticator.rb +3 -1
  67. data/lib/chef/http/basic_client.rb +4 -2
  68. data/lib/chef/http/decompressor.rb +1 -1
  69. data/lib/chef/http/http_request.rb +7 -5
  70. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  71. data/lib/chef/http/ssl_policies.rb +1 -1
  72. data/lib/chef/json_compat.rb +2 -2
  73. data/lib/chef/knife.rb +4 -4
  74. data/lib/chef/knife/bootstrap.rb +18 -16
  75. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  76. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  77. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  78. data/lib/chef/knife/client_create.rb +3 -3
  79. data/lib/chef/knife/config_get.rb +8 -97
  80. data/lib/chef/knife/config_get_profile.rb +9 -9
  81. data/lib/chef/knife/config_list.rb +139 -0
  82. data/lib/chef/knife/config_list_profiles.rb +8 -98
  83. data/lib/chef/knife/config_show.rb +127 -0
  84. data/lib/chef/knife/config_use.rb +61 -0
  85. data/lib/chef/knife/config_use_profile.rb +9 -24
  86. data/lib/chef/knife/configure.rb +4 -2
  87. data/lib/chef/knife/cookbook_download.rb +1 -1
  88. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  89. data/lib/chef/knife/cookbook_upload.rb +23 -23
  90. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  91. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  92. data/lib/chef/knife/core/hashed_command_loader.rb +2 -2
  93. data/lib/chef/knife/core/object_loader.rb +1 -1
  94. data/lib/chef/knife/core/windows_bootstrap_context.rb +42 -34
  95. data/lib/chef/knife/delete.rb +15 -15
  96. data/lib/chef/knife/exec.rb +4 -4
  97. data/lib/chef/knife/node_show.rb +2 -2
  98. data/lib/chef/knife/serve.rb +3 -3
  99. data/lib/chef/knife/ssh.rb +22 -7
  100. data/lib/chef/knife/ssl_check.rb +3 -3
  101. data/lib/chef/knife/status.rb +2 -2
  102. data/lib/chef/knife/user_create.rb +2 -2
  103. data/lib/chef/knife/xargs.rb +19 -19
  104. data/lib/chef/knife/yaml_convert.rb +1 -1
  105. data/lib/chef/local_mode.rb +2 -2
  106. data/lib/chef/log/syslog.rb +2 -2
  107. data/lib/chef/log/winevt.rb +2 -2
  108. data/lib/chef/mixin/checksum.rb +0 -1
  109. data/lib/chef/mixin/deep_merge.rb +35 -18
  110. data/lib/chef/mixin/openssl_helper.rb +4 -5
  111. data/lib/chef/mixin/shell_out.rb +1 -1
  112. data/lib/chef/mixin/template.rb +2 -2
  113. data/lib/chef/mixin/uris.rb +2 -2
  114. data/lib/chef/mixin/versioned_api.rb +1 -2
  115. data/lib/chef/mixin/which.rb +1 -1
  116. data/lib/chef/monkey_patches/net_http.rb +4 -4
  117. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  118. data/lib/chef/node/attribute.rb +2 -4
  119. data/lib/chef/node_map.rb +2 -2
  120. data/lib/chef/platform/service_helpers.rb +1 -1
  121. data/lib/chef/policy_builder/policyfile.rb +2 -2
  122. data/lib/chef/property.rb +1 -1
  123. data/lib/chef/provider.rb +0 -4
  124. data/lib/chef/provider/cron/unix.rb +0 -2
  125. data/lib/chef/provider/file.rb +2 -2
  126. data/lib/chef/provider/git.rb +5 -5
  127. data/lib/chef/provider/group.rb +0 -2
  128. data/lib/chef/provider/group/suse.rb +5 -5
  129. data/lib/chef/provider/ifconfig.rb +1 -4
  130. data/lib/chef/provider/launchd.rb +2 -2
  131. data/lib/chef/provider/mount.rb +0 -2
  132. data/lib/chef/provider/mount/linux.rb +63 -0
  133. data/lib/chef/provider/package.rb +0 -2
  134. data/lib/chef/provider/package/rubygems.rb +22 -19
  135. data/lib/chef/provider/package/snap.rb +1 -2
  136. data/lib/chef/provider/package/windows.rb +2 -2
  137. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -10
  138. data/lib/chef/provider/package/zypper.rb +1 -1
  139. data/lib/chef/provider/powershell_script.rb +21 -5
  140. data/lib/chef/provider/remote_file/content.rb +3 -0
  141. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  142. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  143. data/lib/chef/provider/route.rb +2 -6
  144. data/lib/chef/provider/service/arch.rb +1 -1
  145. data/lib/chef/provider/service/debian.rb +1 -1
  146. data/lib/chef/provider/service/gentoo.rb +2 -2
  147. data/lib/chef/provider/service/macosx.rb +4 -4
  148. data/lib/chef/provider/service/openbsd.rb +1 -4
  149. data/lib/chef/provider/service/redhat.rb +2 -2
  150. data/lib/chef/provider/service/upstart.rb +1 -1
  151. data/lib/chef/provider/service/windows.rb +10 -10
  152. data/lib/chef/provider/systemd_unit.rb +0 -2
  153. data/lib/chef/provider/template/content.rb +1 -0
  154. data/lib/chef/provider/template_finder.rb +2 -10
  155. data/lib/chef/provider/user/dscl.rb +5 -5
  156. data/lib/chef/provider/user/mac.rb +10 -10
  157. data/lib/chef/provider/windows_task.rb +1 -5
  158. data/lib/chef/provider/zypper_repository.rb +2 -3
  159. data/lib/chef/provider_resolver.rb +1 -1
  160. data/lib/chef/providers.rb +1 -1
  161. data/lib/chef/recipe.rb +2 -2
  162. data/lib/chef/resource.rb +7 -11
  163. data/lib/chef/resource/apt_repository.rb +2 -11
  164. data/lib/chef/resource/bff_package.rb +22 -0
  165. data/lib/chef/resource/breakpoint.rb +57 -2
  166. data/lib/chef/resource/build_essential.rb +1 -1
  167. data/lib/chef/resource/cab_package.rb +29 -0
  168. data/lib/chef/resource/chef_client_cron.rb +32 -25
  169. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  170. data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
  171. data/lib/chef/resource/chef_client_systemd_timer.rb +26 -19
  172. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  173. data/lib/chef/resource/chef_gem.rb +10 -10
  174. data/lib/chef/resource/chef_handler.rb +148 -4
  175. data/lib/chef/resource/chef_sleep.rb +2 -2
  176. data/lib/chef/resource/chef_vault_secret.rb +14 -14
  177. data/lib/chef/resource/cookbook_file.rb +2 -2
  178. data/lib/chef/resource/cron/cron_d.rb +0 -1
  179. data/lib/chef/resource/dnf_package.rb +2 -2
  180. data/lib/chef/resource/dsc_resource.rb +0 -1
  181. data/lib/chef/resource/dsc_script.rb +2 -2
  182. data/lib/chef/resource/execute.rb +8 -9
  183. data/lib/chef/resource/file.rb +4 -4
  184. data/lib/chef/resource/gem_package.rb +5 -5
  185. data/lib/chef/resource/homebrew_package.rb +3 -3
  186. data/lib/chef/resource/homebrew_update.rb +7 -7
  187. data/lib/chef/resource/hostname.rb +19 -19
  188. data/lib/chef/resource/launchd.rb +2 -1
  189. data/lib/chef/resource/locale.rb +2 -2
  190. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  191. data/lib/chef/resource/notify_group.rb +0 -1
  192. data/lib/chef/resource/ohai.rb +46 -3
  193. data/lib/chef/resource/ohai_hint.rb +33 -0
  194. data/lib/chef/resource/openssl_dhparam.rb +29 -5
  195. data/lib/chef/resource/openssl_ec_private_key.rb +8 -3
  196. data/lib/chef/resource/openssl_ec_public_key.rb +4 -2
  197. data/lib/chef/resource/openssl_rsa_private_key.rb +8 -3
  198. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  199. data/lib/chef/resource/openssl_x509_certificate.rb +38 -35
  200. data/lib/chef/resource/openssl_x509_crl.rb +21 -10
  201. data/lib/chef/resource/openssl_x509_request.rb +37 -36
  202. data/lib/chef/resource/osx_profile.rb +292 -6
  203. data/lib/chef/resource/plist.rb +1 -1
  204. data/lib/chef/resource/powershell_package_source.rb +6 -6
  205. data/lib/chef/resource/powershell_script.rb +24 -30
  206. data/lib/chef/resource/reboot.rb +2 -2
  207. data/lib/chef/resource/remote_file.rb +3 -3
  208. data/lib/chef/resource/rhsm_register.rb +22 -10
  209. data/lib/chef/resource/ruby_block.rb +2 -2
  210. data/lib/chef/resource/scm/subversion.rb +2 -2
  211. data/lib/chef/resource/service.rb +3 -3
  212. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  213. data/lib/chef/resource/sudo.rb +1 -1
  214. data/lib/chef/resource/support/cron.d.erb +1 -1
  215. data/lib/chef/resource/support/cron_access.erb +1 -1
  216. data/lib/chef/resource/support/sudoer.erb +1 -1
  217. data/lib/chef/resource/support/ulimit.erb +1 -1
  218. data/lib/chef/resource/sysctl.rb +6 -10
  219. data/lib/chef/resource/systemd_unit.rb +2 -2
  220. data/lib/chef/resource/template.rb +2 -2
  221. data/lib/chef/resource/timezone.rb +112 -73
  222. data/lib/chef/resource/windows_ad_join.rb +12 -3
  223. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  224. data/lib/chef/resource/windows_auto_run.rb +2 -0
  225. data/lib/chef/resource/windows_certificate.rb +8 -4
  226. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  227. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  228. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  229. data/lib/chef/resource/windows_dns_record.rb +10 -7
  230. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  231. data/lib/chef/resource/windows_feature.rb +2 -0
  232. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  233. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  234. data/lib/chef/resource/windows_firewall_profile.rb +24 -20
  235. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  236. data/lib/chef/resource/windows_font.rb +3 -1
  237. data/lib/chef/resource/windows_package.rb +28 -5
  238. data/lib/chef/resource/windows_pagefile.rb +4 -0
  239. data/lib/chef/resource/windows_printer.rb +22 -21
  240. data/lib/chef/resource/windows_printer_port.rb +20 -17
  241. data/lib/chef/resource/windows_security_policy.rb +2 -0
  242. data/lib/chef/resource/windows_share.rb +5 -3
  243. data/lib/chef/resource/windows_shortcut.rb +2 -0
  244. data/lib/chef/resource/windows_uac.rb +2 -0
  245. data/lib/chef/resource/windows_user_privilege.rb +54 -53
  246. data/lib/chef/resource/windows_workgroup.rb +5 -6
  247. data/lib/chef/resource/yum_package.rb +2 -2
  248. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  249. data/lib/chef/resources.rb +3 -1
  250. data/lib/chef/role.rb +2 -2
  251. data/lib/chef/run_context.rb +2 -2
  252. data/lib/chef/run_context/cookbook_compiler.rb +21 -21
  253. data/lib/chef/run_lock.rb +2 -2
  254. data/lib/chef/run_status.rb +2 -6
  255. data/lib/chef/search/query.rb +4 -5
  256. data/lib/chef/server_api_versions.rb +4 -0
  257. data/lib/chef/shell.rb +32 -27
  258. data/lib/chef/shell/ext.rb +11 -11
  259. data/lib/chef/shell/shell_session.rb +2 -2
  260. data/lib/chef/train_transport.rb +5 -104
  261. data/lib/chef/util/backup.rb +1 -1
  262. data/lib/chef/util/diff.rb +14 -14
  263. data/lib/chef/util/powershell/cmdlet.rb +4 -2
  264. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  265. data/lib/chef/util/threaded_job_queue.rb +0 -2
  266. data/lib/chef/version.rb +1 -1
  267. data/lib/chef/win32/crypto.rb +1 -1
  268. data/lib/chef/win32/file.rb +2 -2
  269. data/lib/chef/win32/file/version_info.rb +5 -5
  270. data/lib/chef/win32/registry.rb +1 -2
  271. data/spec/data/shef-config.rb +1 -1
  272. data/spec/data/ssl/chef-rspec.cert +15 -15
  273. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  274. data/spec/functional/resource/aix_service_spec.rb +2 -2
  275. data/spec/functional/resource/aixinit_service_spec.rb +8 -8
  276. data/spec/functional/resource/bff_spec.rb +2 -2
  277. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  278. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  279. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  280. data/spec/functional/resource/group_spec.rb +6 -6
  281. data/spec/functional/resource/insserv_spec.rb +5 -5
  282. data/spec/functional/resource/link_spec.rb +20 -20
  283. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  284. data/spec/functional/resource/rpm_spec.rb +2 -2
  285. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  286. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  287. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  288. data/spec/functional/resource/windows_font_spec.rb +49 -0
  289. data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
  290. data/spec/functional/resource/windows_task_spec.rb +13 -13
  291. data/spec/functional/run_lock_spec.rb +24 -24
  292. data/spec/functional/version_spec.rb +3 -3
  293. data/spec/functional/win32/registry_spec.rb +8 -8
  294. data/spec/functional/win32/service_manager_spec.rb +1 -1
  295. data/spec/integration/client/client_spec.rb +4 -4
  296. data/spec/integration/client/exit_code_spec.rb +3 -2
  297. data/spec/integration/client/ipv6_spec.rb +1 -1
  298. data/spec/integration/knife/common_options_spec.rb +12 -12
  299. data/spec/integration/knife/config_list_spec.rb +220 -0
  300. data/spec/integration/knife/config_show_spec.rb +192 -0
  301. data/spec/integration/knife/config_use_spec.rb +198 -0
  302. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  303. data/spec/integration/knife/diff_spec.rb +3 -1
  304. data/spec/integration/knife/download_spec.rb +3 -1
  305. data/spec/integration/knife/serve_spec.rb +5 -5
  306. data/spec/integration/knife/upload_spec.rb +3 -1
  307. data/spec/integration/ohai/ohai_spec.rb +61 -0
  308. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  309. data/spec/integration/recipes/remote_directory.rb +1 -1
  310. data/spec/integration/solo/solo_spec.rb +5 -5
  311. data/spec/spec_helper.rb +12 -9
  312. data/spec/stress/win32/file_spec.rb +1 -1
  313. data/spec/support/chef_helpers.rb +2 -2
  314. data/spec/support/matchers/leak.rb +2 -2
  315. data/spec/support/platform_helpers.rb +17 -35
  316. data/spec/support/platforms/win32/spec_service.rb +1 -1
  317. data/spec/support/shared/functional/directory_resource.rb +1 -1
  318. data/spec/support/shared/functional/execute_resource.rb +1 -1
  319. data/spec/support/shared/functional/file_resource.rb +20 -20
  320. data/spec/support/shared/functional/securable_resource.rb +108 -27
  321. data/spec/support/shared/functional/win32_service.rb +2 -2
  322. data/spec/support/shared/functional/windows_script.rb +3 -3
  323. data/spec/support/shared/integration/integration_helper.rb +22 -52
  324. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  325. data/spec/support/shared/unit/script_resource.rb +6 -20
  326. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  327. data/spec/tiny_server.rb +0 -1
  328. data/spec/unit/application/client_spec.rb +2 -2
  329. data/spec/unit/application/exit_code_spec.rb +10 -0
  330. data/spec/unit/application_spec.rb +4 -6
  331. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  332. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  333. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  334. data/spec/unit/cookbook_spec.rb +2 -2
  335. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  336. data/spec/unit/data_collector_spec.rb +28 -113
  337. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  338. data/spec/unit/environment_spec.rb +7 -7
  339. data/spec/unit/file_access_control_spec.rb +1 -1
  340. data/spec/unit/http/api_versions_spec.rb +19 -1
  341. data/spec/unit/knife/bootstrap_spec.rb +20 -20
  342. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  343. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  344. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  345. data/spec/unit/knife/core/ui_spec.rb +1 -0
  346. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  347. data/spec/unit/knife/ssh_spec.rb +2 -2
  348. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  349. data/spec/unit/lwrp_spec.rb +3 -3
  350. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  351. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  352. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  353. data/spec/unit/mixin/securable_spec.rb +2 -2
  354. data/spec/unit/mixin/template_spec.rb +30 -30
  355. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  356. data/spec/unit/node/immutable_collections_spec.rb +8 -4
  357. data/spec/unit/node_spec.rb +5 -5
  358. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  359. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  360. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  361. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  362. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  363. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  364. data/spec/unit/provider/route_spec.rb +0 -2
  365. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  366. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  367. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  368. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  369. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  370. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  371. data/spec/unit/provider_resolver_spec.rb +6 -6
  372. data/spec/unit/recipe_spec.rb +1 -1
  373. data/spec/unit/resource/batch_spec.rb +6 -6
  374. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  375. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  376. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  377. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  378. data/spec/unit/resource/execute_spec.rb +113 -118
  379. data/spec/unit/resource/launchd_spec.rb +8 -0
  380. data/spec/unit/resource/osx_profile_spec.rb +299 -0
  381. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  382. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  383. data/spec/unit/resource/script_spec.rb +6 -1
  384. data/spec/unit/resource/timezone_spec.rb +63 -0
  385. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  386. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  387. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  388. data/spec/unit/role_spec.rb +11 -11
  389. data/spec/unit/run_lock_spec.rb +5 -1
  390. data/spec/unit/runner_spec.rb +1 -2
  391. data/spec/unit/server_api_spec.rb +43 -16
  392. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  393. data/spec/unit/shell/shell_session_spec.rb +35 -64
  394. data/spec/unit/shell_spec.rb +16 -19
  395. data/spec/unit/train_transport_spec.rb +14 -13
  396. data/spec/unit/util/selinux_spec.rb +2 -0
  397. data/tasks/rspec.rb +1 -3
  398. metadata +42 -33
  399. data/lib/chef/dist.rb +0 -68
  400. data/lib/chef/provider/osx_profile.rb +0 -255
  401. data/spec/integration/knife/config_get_profile_spec.rb +0 -113
  402. data/spec/integration/knife/config_get_spec.rb +0 -191
  403. data/spec/integration/knife/config_list_profiles_spec.rb +0 -218
  404. data/spec/integration/knife/config_use_profile_spec.rb +0 -154
  405. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -31,6 +31,8 @@ describe Chef::Util::Selinux do
31
31
 
32
32
  before do
33
33
  allow(ChefUtils).to receive(:windows?).and_return(false)
34
+ allow(ENV).to receive(:[]).with("PATHEXT").and_return(nil)
35
+ allow(ENV).to receive(:[]).with("PATH").and_call_original
34
36
  TestClass.reset_state
35
37
  @test_instance = TestClass.new
36
38
  end
@@ -20,8 +20,6 @@
20
20
  require "rubygems"
21
21
  require "rake"
22
22
 
23
- CHEF_ROOT = File.join(File.dirname(__FILE__), "..")
24
-
25
23
  begin
26
24
  require "rspec/core/rake_task"
27
25
 
@@ -30,7 +28,7 @@ begin
30
28
  %w{chef-utils chef-config}.each do |gem|
31
29
  Dir.chdir(gem) do
32
30
  Bundler.with_unbundled_env do
33
- sh("bundle install")
31
+ sh("bundle install --jobs=3 --retry=3")
34
32
  sh("bundle exec rake spec")
35
33
  end
36
34
  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.3.38
4
+ version: 16.5.64
5
5
  platform: universal-mingw32
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-25 00:00:00.000000000 Z
11
+ date: 2020-09-17 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.3.38
19
+ version: 16.5.64
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.3.38
26
+ version: 16.5.64
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.3.38
33
+ version: 16.5.64
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.3.38
40
+ version: 16.5.64
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: train-core
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -76,22 +76,22 @@ dependencies:
76
76
  name: license-acceptance
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '1.0'
82
79
  - - ">="
83
80
  - !ruby/object:Gem::Version
84
81
  version: 1.0.5
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '3'
85
85
  type: :runtime
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - "~>"
90
- - !ruby/object:Gem::Version
91
- version: '1.0'
92
89
  - - ">="
93
90
  - !ruby/object:Gem::Version
94
91
  version: 1.0.5
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '3'
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: mixlib-cli
97
97
  requirement: !ruby/object:Gem::Requirement
@@ -370,6 +370,20 @@ dependencies:
370
370
  - - "~>"
371
371
  - !ruby/object:Gem::Version
372
372
  version: '0.6'
373
+ - !ruby/object:Gem::Dependency
374
+ name: tty-table
375
+ requirement: !ruby/object:Gem::Requirement
376
+ requirements:
377
+ - - "~>"
378
+ - !ruby/object:Gem::Version
379
+ version: 0.11.0
380
+ type: :runtime
381
+ prerelease: false
382
+ version_requirements: !ruby/object:Gem::Requirement
383
+ requirements:
384
+ - - "~>"
385
+ - !ruby/object:Gem::Version
386
+ version: 0.11.0
373
387
  - !ruby/object:Gem::Dependency
374
388
  name: pastel
375
389
  requirement: !ruby/object:Gem::Requirement
@@ -578,20 +592,6 @@ dependencies:
578
592
  - - "~>"
579
593
  - !ruby/object:Gem::Version
580
594
  version: 1.5.3
581
- - !ruby/object:Gem::Dependency
582
- name: win32-dir
583
- requirement: !ruby/object:Gem::Requirement
584
- requirements:
585
- - - "~>"
586
- - !ruby/object:Gem::Version
587
- version: 0.5.0
588
- type: :runtime
589
- prerelease: false
590
- version_requirements: !ruby/object:Gem::Requirement
591
- requirements:
592
- - - "~>"
593
- - !ruby/object:Gem::Version
594
- version: 0.5.0
595
595
  - !ruby/object:Gem::Dependency
596
596
  name: win32-event
597
597
  requirement: !ruby/object:Gem::Requirement
@@ -930,7 +930,6 @@ files:
930
930
  - lib/chef/deprecated.rb
931
931
  - lib/chef/deprecation/warnings.rb
932
932
  - lib/chef/digester.rb
933
- - lib/chef/dist.rb
934
933
  - lib/chef/dsl.rb
935
934
  - lib/chef/dsl/chef_vault.rb
936
935
  - lib/chef/dsl/cheffish.rb
@@ -1044,7 +1043,10 @@ files:
1044
1043
  - lib/chef/knife/client_show.rb
1045
1044
  - lib/chef/knife/config_get.rb
1046
1045
  - lib/chef/knife/config_get_profile.rb
1046
+ - lib/chef/knife/config_list.rb
1047
1047
  - lib/chef/knife/config_list_profiles.rb
1048
+ - lib/chef/knife/config_show.rb
1049
+ - lib/chef/knife/config_use.rb
1048
1050
  - lib/chef/knife/config_use_profile.rb
1049
1051
  - lib/chef/knife/configure.rb
1050
1052
  - lib/chef/knife/configure_client.rb
@@ -1286,11 +1288,11 @@ files:
1286
1288
  - lib/chef/provider/lwrp_base.rb
1287
1289
  - lib/chef/provider/mount.rb
1288
1290
  - lib/chef/provider/mount/aix.rb
1291
+ - lib/chef/provider/mount/linux.rb
1289
1292
  - lib/chef/provider/mount/mount.rb
1290
1293
  - lib/chef/provider/mount/solaris.rb
1291
1294
  - lib/chef/provider/mount/windows.rb
1292
1295
  - lib/chef/provider/noop.rb
1293
- - lib/chef/provider/osx_profile.rb
1294
1296
  - lib/chef/provider/package.rb
1295
1297
  - lib/chef/provider/package/apt.rb
1296
1298
  - lib/chef/provider/package/bff.rb
@@ -1416,8 +1418,10 @@ files:
1416
1418
  - lib/chef/resource/build_essential.rb
1417
1419
  - lib/chef/resource/cab_package.rb
1418
1420
  - lib/chef/resource/chef_client_cron.rb
1421
+ - lib/chef/resource/chef_client_launchd.rb
1419
1422
  - lib/chef/resource/chef_client_scheduled_task.rb
1420
1423
  - lib/chef/resource/chef_client_systemd_timer.rb
1424
+ - lib/chef/resource/chef_client_trusted_certificate.rb
1421
1425
  - lib/chef/resource/chef_gem.rb
1422
1426
  - lib/chef/resource/chef_handler.rb
1423
1427
  - lib/chef/resource/chef_sleep.rb
@@ -2145,6 +2149,7 @@ files:
2145
2149
  - spec/functional/resource/user/windows_spec.rb
2146
2150
  - spec/functional/resource/windows_certificate_spec.rb
2147
2151
  - spec/functional/resource/windows_env_spec.rb
2152
+ - spec/functional/resource/windows_font_spec.rb
2148
2153
  - spec/functional/resource/windows_package_spec.rb
2149
2154
  - spec/functional/resource/windows_path_spec.rb
2150
2155
  - spec/functional/resource/windows_security_policy_spec.rb
@@ -2184,10 +2189,9 @@ files:
2184
2189
  - spec/integration/knife/client_list_spec.rb
2185
2190
  - spec/integration/knife/client_show_spec.rb
2186
2191
  - spec/integration/knife/common_options_spec.rb
2187
- - spec/integration/knife/config_get_profile_spec.rb
2188
- - spec/integration/knife/config_get_spec.rb
2189
- - spec/integration/knife/config_list_profiles_spec.rb
2190
- - spec/integration/knife/config_use_profile_spec.rb
2192
+ - spec/integration/knife/config_list_spec.rb
2193
+ - spec/integration/knife/config_show_spec.rb
2194
+ - spec/integration/knife/config_use_spec.rb
2191
2195
  - spec/integration/knife/cookbook_api_ipv6_spec.rb
2192
2196
  - spec/integration/knife/cookbook_bulk_delete_spec.rb
2193
2197
  - spec/integration/knife/cookbook_download_spec.rb
@@ -2233,6 +2237,7 @@ files:
2233
2237
  - spec/integration/knife/serve_spec.rb
2234
2238
  - spec/integration/knife/show_spec.rb
2235
2239
  - spec/integration/knife/upload_spec.rb
2240
+ - spec/integration/ohai/ohai_spec.rb
2236
2241
  - spec/integration/recipes/accumulator_spec.rb
2237
2242
  - spec/integration/recipes/lwrp_inline_resources_spec.rb
2238
2243
  - spec/integration/recipes/lwrp_spec.rb
@@ -2356,6 +2361,7 @@ files:
2356
2361
  - spec/unit/daemon_spec.rb
2357
2362
  - spec/unit/data_bag_item_spec.rb
2358
2363
  - spec/unit/data_bag_spec.rb
2364
+ - spec/unit/data_collector/config_validation_spec.rb
2359
2365
  - spec/unit/data_collector_spec.rb
2360
2366
  - spec/unit/decorator/lazy_array_spec.rb
2361
2367
  - spec/unit/decorator/lazy_spec.rb
@@ -2587,11 +2593,11 @@ files:
2587
2593
  - spec/unit/provider/log_spec.rb
2588
2594
  - spec/unit/provider/mdadm_spec.rb
2589
2595
  - spec/unit/provider/mount/aix_spec.rb
2596
+ - spec/unit/provider/mount/linux_spec.rb
2590
2597
  - spec/unit/provider/mount/mount_spec.rb
2591
2598
  - spec/unit/provider/mount/solaris_spec.rb
2592
2599
  - spec/unit/provider/mount/windows_spec.rb
2593
2600
  - spec/unit/provider/mount_spec.rb
2594
- - spec/unit/provider/osx_profile_spec.rb
2595
2601
  - spec/unit/provider/package/apt_spec.rb
2596
2602
  - spec/unit/provider/package/bff_spec.rb
2597
2603
  - spec/unit/provider/package/cab_spec.rb
@@ -2691,8 +2697,10 @@ files:
2691
2697
  - spec/unit/resource/build_essential_spec.rb
2692
2698
  - spec/unit/resource/cab_package_spec.rb
2693
2699
  - spec/unit/resource/chef_client_cron_spec.rb
2700
+ - spec/unit/resource/chef_client_launchd_spec.rb
2694
2701
  - spec/unit/resource/chef_client_scheduled_task_spec.rb
2695
2702
  - spec/unit/resource/chef_client_systemd_timer_spec.rb
2703
+ - spec/unit/resource/chef_client_trusted_certificate_spec.rb
2696
2704
  - spec/unit/resource/chef_gem_spec.rb
2697
2705
  - spec/unit/resource/chef_handler_spec.rb
2698
2706
  - spec/unit/resource/chef_sleep_spec.rb
@@ -2824,6 +2832,7 @@ files:
2824
2832
  - spec/unit/resource/windows_shortcut_spec.rb
2825
2833
  - spec/unit/resource/windows_task_spec.rb
2826
2834
  - spec/unit/resource/windows_uac_spec.rb
2835
+ - spec/unit/resource/windows_user_privilege_spec.rb
2827
2836
  - spec/unit/resource/windows_workgroup_spec.rb
2828
2837
  - spec/unit/resource/yum_package_spec.rb
2829
2838
  - spec/unit/resource/yum_repository_spec.rb
@@ -1,68 +0,0 @@
1
- class Chef
2
- class Dist
3
- require "chef-config/dist"
4
- require "chef-config/config"
5
-
6
- # This class is not fully implemented, depending on it is not recommended!
7
- # When referencing a product directly, like Chef (Now Chef Infra)
8
- PRODUCT = "Chef Infra Client".freeze
9
-
10
- # A short designation for the product, used in Windows event logs
11
- # and some nomenclature.
12
- SHORT = ChefConfig::Dist::SHORT.freeze
13
-
14
- # The name of the server product
15
- SERVER_PRODUCT = "Chef Infra Server".freeze
16
-
17
- # The client's alias (chef-client)
18
- CLIENT = ChefConfig::Dist::CLIENT.freeze
19
-
20
- # name of the automate product
21
- AUTOMATE = "Chef Automate".freeze
22
-
23
- # The chef executable, as in `chef gem install` or `chef generate cookbook`
24
- EXEC = ChefConfig::Dist::EXEC.freeze
25
-
26
- # product website address
27
- WEBSITE = "https://chef.io".freeze
28
-
29
- # Chef-Zero's product name
30
- ZERO = "Chef Infra Zero".freeze
31
-
32
- # Chef-Solo's product name
33
- SOLO = "Chef Infra Solo".freeze
34
-
35
- # The chef-zero executable (local mode)
36
- ZEROEXEC = "chef-zero".freeze
37
-
38
- # The chef-solo executable (legacy local mode)
39
- SOLOEXEC = "chef-solo".freeze
40
-
41
- # The chef-shell executable
42
- SHELL = "chef-shell".freeze
43
-
44
- # The chef-apply executable
45
- APPLY = "chef-apply".freeze
46
-
47
- # Configuration related constants
48
- # The chef-shell configuration file
49
- SHELL_CONF = "chef_shell.rb".freeze
50
-
51
- # The configuration directory
52
- CONF_DIR = ChefConfig::Config.etc_chef_dir.freeze
53
-
54
- # The user's configuration directory
55
- USER_CONF_DIR = ChefConfig::Dist::USER_CONF_DIR.freeze
56
-
57
- # The suffix for Chef's /etc/chef, /var/chef and C:\\Chef directories
58
- # "cinc" => /etc/cinc, /var/cinc, C:\\cinc
59
- DIR_SUFFIX = ChefConfig::Dist::DIR_SUFFIX.freeze
60
-
61
- # The legacy conf folder: C:/opscode/chef. Specifically the "opscode" part
62
- # DIR_SUFFIX is appended to it in code where relevant
63
- LEGACY_CONF_DIR = ChefConfig::Dist::LEGACY_CONF_DIR.freeze
64
-
65
- # The server's configuration directory
66
- SERVER_CONF_DIR = "/etc/chef-server".freeze
67
- end
68
- end
@@ -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