chef 16.4.41 → 16.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (494) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -14
  3. data/README.md +1 -1
  4. data/Rakefile +22 -15
  5. data/bin/knife +1 -1
  6. data/chef-universal-mingw32.gemspec +1 -1
  7. data/chef.gemspec +4 -2
  8. data/lib/chef/application.rb +19 -17
  9. data/lib/chef/application/apply.rb +12 -7
  10. data/lib/chef/application/base.rb +27 -24
  11. data/lib/chef/application/client.rb +16 -5
  12. data/lib/chef/application/exit_code.rb +13 -4
  13. data/lib/chef/application/knife.rb +22 -11
  14. data/lib/chef/application/solo.rb +2 -1
  15. data/lib/chef/application/windows_service.rb +14 -14
  16. data/lib/chef/application/windows_service_manager.rb +6 -6
  17. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  18. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
  19. data/lib/chef/chef_fs/file_pattern.rb +1 -1
  20. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  21. data/lib/chef/chef_fs/knife.rb +2 -2
  22. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  23. data/lib/chef/client.rb +16 -43
  24. data/lib/chef/compliance/default_attributes.rb +89 -0
  25. data/lib/chef/compliance/fetcher/automate.rb +69 -0
  26. data/lib/chef/compliance/fetcher/chef_server.rb +134 -0
  27. data/lib/chef/compliance/reporter/automate.rb +202 -0
  28. data/lib/chef/compliance/reporter/chef_server_automate.rb +92 -0
  29. data/lib/chef/compliance/reporter/compliance_enforcer.rb +20 -0
  30. data/lib/chef/compliance/reporter/json_file.rb +19 -0
  31. data/lib/chef/compliance/runner.rb +250 -0
  32. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  33. data/lib/chef/cookbook/gem_installer.rb +1 -1
  34. data/lib/chef/cookbook/synchronizer.rb +2 -2
  35. data/lib/chef/cookbook_manifest.rb +2 -1
  36. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  37. data/lib/chef/cookbook_uploader.rb +1 -1
  38. data/lib/chef/cookbook_version.rb +2 -5
  39. data/lib/chef/data_collector.rb +7 -6
  40. data/lib/chef/data_collector/config_validation.rb +22 -13
  41. data/lib/chef/data_collector/run_end_message.rb +2 -2
  42. data/lib/chef/data_collector/run_start_message.rb +1 -1
  43. data/lib/chef/deprecated.rb +1 -1
  44. data/lib/chef/deprecation/warnings.rb +2 -2
  45. data/lib/chef/digester.rb +2 -2
  46. data/lib/chef/dsl/chef_vault.rb +1 -1
  47. data/lib/chef/dsl/data_query.rb +2 -2
  48. data/lib/chef/dsl/platform_introspection.rb +1 -1
  49. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  50. data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
  51. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  52. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  53. data/lib/chef/environment.rb +3 -3
  54. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  55. data/lib/chef/exceptions.rb +9 -5
  56. data/lib/chef/file_access_control/windows.rb +6 -5
  57. data/lib/chef/file_content_management/tempfile.rb +1 -1
  58. data/lib/chef/formatters/doc.rb +7 -6
  59. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  60. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +2 -2
  61. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  62. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  63. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +6 -6
  64. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  65. data/lib/chef/formatters/indentable_output_stream.rb +2 -2
  66. data/lib/chef/formatters/minimal.rb +5 -4
  67. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +28 -39
  68. data/lib/chef/http.rb +6 -14
  69. data/lib/chef/http/auth_credentials.rb +5 -1
  70. data/lib/chef/http/authenticator.rb +1 -1
  71. data/lib/chef/http/basic_client.rb +4 -2
  72. data/lib/chef/http/decompressor.rb +1 -1
  73. data/lib/chef/http/http_request.rb +7 -5
  74. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  75. data/lib/chef/http/ssl_policies.rb +7 -1
  76. data/lib/chef/json_compat.rb +3 -8
  77. data/lib/chef/key.rb +1 -1
  78. data/lib/chef/knife.rb +4 -4
  79. data/lib/chef/knife/bootstrap.rb +18 -15
  80. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  81. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  82. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +9 -9
  83. data/lib/chef/knife/bootstrap/train_connector.rb +1 -1
  84. data/lib/chef/knife/client_create.rb +3 -3
  85. data/lib/chef/knife/config_get.rb +8 -97
  86. data/lib/chef/knife/config_get_profile.rb +9 -9
  87. data/lib/chef/knife/config_list.rb +139 -0
  88. data/lib/chef/knife/config_list_profiles.rb +8 -98
  89. data/lib/chef/knife/config_show.rb +127 -0
  90. data/lib/chef/knife/config_use.rb +61 -0
  91. data/lib/chef/knife/config_use_profile.rb +9 -24
  92. data/lib/chef/knife/configure.rb +2 -2
  93. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  94. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  95. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  96. data/lib/chef/knife/core/object_loader.rb +1 -1
  97. data/lib/chef/knife/core/ui.rb +5 -2
  98. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -15
  99. data/lib/chef/knife/exec.rb +2 -2
  100. data/lib/chef/knife/node_policy_set.rb +2 -2
  101. data/lib/chef/knife/node_run_list_add.rb +1 -1
  102. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  103. data/lib/chef/knife/node_run_list_set.rb +1 -1
  104. data/lib/chef/knife/node_show.rb +2 -2
  105. data/lib/chef/knife/role_env_run_list_add.rb +1 -1
  106. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  107. data/lib/chef/knife/role_run_list_add.rb +1 -1
  108. data/lib/chef/knife/role_run_list_set.rb +1 -1
  109. data/lib/chef/knife/search.rb +0 -1
  110. data/lib/chef/knife/serve.rb +3 -3
  111. data/lib/chef/knife/ssh.rb +19 -4
  112. data/lib/chef/knife/ssl_check.rb +3 -3
  113. data/lib/chef/knife/status.rb +2 -2
  114. data/lib/chef/knife/tag_create.rb +1 -1
  115. data/lib/chef/knife/tag_delete.rb +1 -1
  116. data/lib/chef/knife/user_create.rb +2 -2
  117. data/lib/chef/knife/yaml_convert.rb +1 -1
  118. data/lib/chef/local_mode.rb +2 -2
  119. data/lib/chef/log/syslog.rb +2 -2
  120. data/lib/chef/log/winevt.rb +2 -2
  121. data/lib/chef/mixin/convert_to_class_name.rb +0 -56
  122. data/lib/chef/mixin/deep_merge.rb +0 -12
  123. data/lib/chef/mixin/openssl_helper.rb +2 -5
  124. data/lib/chef/mixin/powershell_exec.rb +24 -10
  125. data/lib/chef/mixin/powershell_out.rb +12 -5
  126. data/lib/chef/mixin/properties.rb +2 -0
  127. data/lib/chef/mixin/template.rb +3 -3
  128. data/lib/chef/mixin/unformatter.rb +1 -1
  129. data/lib/chef/mixin/uris.rb +4 -2
  130. data/lib/chef/mixin/versioned_api.rb +1 -2
  131. data/lib/chef/node/attribute_collections.rb +2 -6
  132. data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
  133. data/lib/chef/node_map.rb +4 -4
  134. data/lib/chef/platform/query_helpers.rb +4 -4
  135. data/lib/chef/policy_builder/dynamic.rb +2 -0
  136. data/lib/chef/policy_builder/policyfile.rb +2 -2
  137. data/lib/chef/powershell.rb +10 -4
  138. data/lib/chef/property.rb +1 -1
  139. data/lib/chef/provider.rb +1 -5
  140. data/lib/chef/provider/cron.rb +2 -13
  141. data/lib/chef/provider/dsc_resource.rb +12 -24
  142. data/lib/chef/provider/dsc_script.rb +16 -20
  143. data/lib/chef/provider/file.rb +2 -2
  144. data/lib/chef/provider/git.rb +5 -5
  145. data/lib/chef/provider/group.rb +14 -6
  146. data/lib/chef/provider/group/windows.rb +12 -1
  147. data/lib/chef/provider/ifconfig.rb +9 -9
  148. data/lib/chef/provider/ifconfig/debian.rb +38 -22
  149. data/lib/chef/provider/ifconfig/redhat.rb +54 -18
  150. data/lib/chef/provider/launchd.rb +3 -13
  151. data/lib/chef/provider/link.rb +0 -9
  152. data/lib/chef/provider/mount.rb +18 -1
  153. data/lib/chef/provider/mount/linux.rb +67 -0
  154. data/lib/chef/provider/mount/mount.rb +41 -43
  155. data/lib/chef/provider/package.rb +3 -0
  156. data/lib/chef/provider/package/apt.rb +1 -1
  157. data/lib/chef/provider/package/chocolatey.rb +6 -6
  158. data/lib/chef/provider/package/dpkg.rb +3 -12
  159. data/lib/chef/provider/package/freebsd/base.rb +3 -2
  160. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
  161. data/lib/chef/provider/package/homebrew.rb +1 -1
  162. data/lib/chef/provider/package/ips.rb +1 -1
  163. data/lib/chef/provider/package/powershell.rb +2 -3
  164. data/lib/chef/provider/package/rubygems.rb +22 -19
  165. data/lib/chef/provider/package/snap.rb +1 -4
  166. data/lib/chef/provider/package/solaris.rb +0 -2
  167. data/lib/chef/provider/package/windows.rb +2 -2
  168. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
  169. data/lib/chef/provider/package/yum/rpm_utils.rb +1 -1
  170. data/lib/chef/provider/package/zypper.rb +99 -72
  171. data/lib/chef/provider/powershell_script.rb +12 -1
  172. data/lib/chef/provider/registry_key.rb +4 -3
  173. data/lib/chef/provider/remote_file/content.rb +3 -0
  174. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  175. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  176. data/lib/chef/provider/route.rb +4 -8
  177. data/lib/chef/provider/service/debian.rb +2 -1
  178. data/lib/chef/provider/service/macosx.rb +2 -2
  179. data/lib/chef/provider/service/redhat.rb +1 -1
  180. data/lib/chef/provider/template_finder.rb +2 -10
  181. data/lib/chef/provider/user.rb +17 -9
  182. data/lib/chef/provider/user/aix.rb +1 -1
  183. data/lib/chef/provider/user/dscl.rb +5 -5
  184. data/lib/chef/provider/user/mac.rb +15 -7
  185. data/lib/chef/provider/user/solaris.rb +1 -1
  186. data/lib/chef/provider/user/windows.rb +10 -3
  187. data/lib/chef/provider/zypper_repository.rb +2 -2
  188. data/lib/chef/provider_resolver.rb +1 -1
  189. data/lib/chef/providers.rb +1 -3
  190. data/lib/chef/pwsh.rb +71 -0
  191. data/lib/chef/recipe.rb +2 -2
  192. data/lib/chef/resource.rb +2 -2
  193. data/lib/chef/resource/apt_repository.rb +6 -5
  194. data/lib/chef/resource/bash.rb +119 -1
  195. data/lib/chef/resource/batch.rb +1 -1
  196. data/lib/chef/resource/bff_package.rb +22 -0
  197. data/lib/chef/resource/breakpoint.rb +59 -2
  198. data/lib/chef/resource/build_essential.rb +5 -8
  199. data/lib/chef/resource/cab_package.rb +29 -0
  200. data/lib/chef/resource/chef_client_config.rb +313 -0
  201. data/lib/chef/resource/chef_client_cron.rb +35 -28
  202. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  203. data/lib/chef/resource/chef_client_scheduled_task.rb +24 -21
  204. data/lib/chef/resource/chef_client_systemd_timer.rb +27 -20
  205. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  206. data/lib/chef/resource/chef_gem.rb +10 -10
  207. data/lib/chef/resource/chef_handler.rb +149 -4
  208. data/lib/chef/resource/chef_sleep.rb +3 -3
  209. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  210. data/lib/chef/resource/cookbook_file.rb +2 -2
  211. data/lib/chef/resource/cron/_cron_shared.rb +1 -0
  212. data/lib/chef/resource/cron/cron_d.rb +2 -3
  213. data/lib/chef/resource/csh.rb +2 -2
  214. data/lib/chef/resource/dnf_package.rb +2 -2
  215. data/lib/chef/resource/dsc_resource.rb +0 -1
  216. data/lib/chef/resource/dsc_script.rb +9 -2
  217. data/lib/chef/resource/execute.rb +10 -8
  218. data/lib/chef/resource/file.rb +4 -4
  219. data/lib/chef/resource/gem_package.rb +5 -5
  220. data/lib/chef/resource/homebrew_package.rb +3 -3
  221. data/lib/chef/resource/homebrew_update.rb +9 -6
  222. data/lib/chef/resource/hostname.rb +7 -7
  223. data/lib/chef/resource/ifconfig.rb +52 -5
  224. data/lib/chef/resource/kernel_module.rb +1 -1
  225. data/lib/chef/resource/ksh.rb +3 -3
  226. data/lib/chef/resource/launchd.rb +17 -16
  227. data/lib/chef/resource/locale.rb +2 -2
  228. data/lib/chef/resource/lwrp_base.rb +3 -5
  229. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  230. data/lib/chef/resource/mount.rb +8 -2
  231. data/lib/chef/resource/notify_group.rb +0 -1
  232. data/lib/chef/resource/ohai.rb +46 -3
  233. data/lib/chef/resource/ohai_hint.rb +33 -0
  234. data/lib/chef/resource/openssl_dhparam.rb +27 -5
  235. data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
  236. data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
  237. data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
  238. data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
  239. data/lib/chef/resource/openssl_x509_crl.rb +19 -10
  240. data/lib/chef/resource/openssl_x509_request.rb +14 -16
  241. data/lib/chef/resource/osx_profile.rb +77 -13
  242. data/lib/chef/resource/perl.rb +2 -2
  243. data/lib/chef/resource/plist.rb +3 -7
  244. data/lib/chef/resource/powershell_package_source.rb +24 -23
  245. data/lib/chef/resource/powershell_script.rb +14 -11
  246. data/lib/chef/resource/python.rb +2 -2
  247. data/lib/chef/resource/reboot.rb +2 -2
  248. data/lib/chef/resource/registry_key.rb +93 -2
  249. data/lib/chef/resource/remote_file.rb +3 -3
  250. data/lib/chef/resource/rhsm_register.rb +22 -10
  251. data/lib/chef/resource/route.rb +1 -1
  252. data/lib/chef/resource/ruby.rb +2 -2
  253. data/lib/chef/resource/ruby_block.rb +2 -2
  254. data/lib/chef/resource/scm/_scm.rb +2 -1
  255. data/lib/chef/resource/scm/git.rb +82 -1
  256. data/lib/chef/resource/scm/subversion.rb +14 -2
  257. data/lib/chef/resource/script.rb +2 -2
  258. data/lib/chef/resource/service.rb +3 -3
  259. data/lib/chef/resource/solaris_package.rb +0 -2
  260. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  261. data/lib/chef/resource/sudo.rb +1 -1
  262. data/lib/chef/resource/support/client.erb +64 -0
  263. data/lib/chef/resource/support/cron.d.erb +1 -1
  264. data/lib/chef/resource/support/cron_access.erb +1 -1
  265. data/lib/chef/resource/support/sudoer.erb +1 -1
  266. data/lib/chef/resource/support/ulimit.erb +1 -1
  267. data/lib/chef/resource/sysctl.rb +1 -5
  268. data/lib/chef/resource/systemd_unit.rb +44 -3
  269. data/lib/chef/resource/template.rb +4 -4
  270. data/lib/chef/resource/windows_ad_join.rb +19 -12
  271. data/lib/chef/resource/windows_audit_policy.rb +26 -24
  272. data/lib/chef/resource/windows_certificate.rb +19 -11
  273. data/lib/chef/resource/windows_dfs_server.rb +7 -4
  274. data/lib/chef/resource/windows_env.rb +173 -0
  275. data/lib/chef/resource/windows_feature.rb +2 -0
  276. data/lib/chef/resource/windows_firewall_profile.rb +28 -31
  277. data/lib/chef/resource/windows_firewall_rule.rb +9 -11
  278. data/lib/chef/resource/windows_font.rb +1 -1
  279. data/lib/chef/resource/windows_package.rb +29 -5
  280. data/lib/chef/resource/windows_path.rb +38 -0
  281. data/lib/chef/resource/windows_printer.rb +5 -3
  282. data/lib/chef/resource/windows_printer_port.rb +6 -4
  283. data/lib/chef/resource/windows_security_policy.rb +5 -5
  284. data/lib/chef/resource/windows_service.rb +108 -0
  285. data/lib/chef/resource/windows_share.rb +18 -18
  286. data/lib/chef/resource/windows_task.rb +629 -28
  287. data/lib/chef/resource/windows_user_privilege.rb +53 -54
  288. data/lib/chef/resource/windows_workgroup.rb +9 -7
  289. data/lib/chef/resource/yum_package.rb +2 -2
  290. data/lib/chef/resource/yum_repository.rb +1 -1
  291. data/lib/chef/resource_collection/resource_set.rb +2 -6
  292. data/lib/chef/resource_inspector.rb +77 -75
  293. data/lib/chef/resource_reporter.rb +0 -2
  294. data/lib/chef/resources.rb +4 -1
  295. data/lib/chef/run_context.rb +2 -2
  296. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  297. data/lib/chef/run_lock.rb +3 -3
  298. data/lib/chef/search/query.rb +6 -5
  299. data/lib/chef/server_api.rb +0 -4
  300. data/lib/chef/shell.rb +31 -26
  301. data/lib/chef/shell/ext.rb +12 -12
  302. data/lib/chef/shell/shell_session.rb +2 -2
  303. data/lib/chef/train_transport.rb +5 -104
  304. data/lib/chef/util/backup.rb +1 -1
  305. data/lib/chef/util/diff.rb +3 -3
  306. data/lib/chef/util/dsc/configuration_generator.rb +52 -11
  307. data/lib/chef/util/dsc/lcm_output_parser.rb +4 -7
  308. data/lib/chef/util/dsc/local_configuration_manager.rb +18 -15
  309. data/lib/chef/util/dsc/resource_store.rb +5 -11
  310. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  311. data/lib/chef/util/threaded_job_queue.rb +0 -2
  312. data/lib/chef/version.rb +1 -1
  313. data/lib/chef/win32/api/file.rb +4 -0
  314. data/lib/chef/win32/crypto.rb +1 -1
  315. data/lib/chef/win32/file.rb +1 -1
  316. data/lib/chef/win32/registry.rb +1 -2
  317. data/lib/chef/win32/security/sid.rb +1 -1
  318. data/lib/chef/win32/unicode.rb +1 -1
  319. data/spec/data/shef-config.rb +1 -1
  320. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  321. data/spec/functional/mixin/powershell_out_spec.rb +11 -3
  322. data/spec/functional/resource/aix_service_spec.rb +2 -2
  323. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  324. data/spec/functional/resource/apt_package_spec.rb +4 -6
  325. data/spec/functional/resource/chocolatey_package_spec.rb +3 -3
  326. data/spec/functional/resource/cron_spec.rb +3 -3
  327. data/spec/functional/resource/dsc_script_spec.rb +6 -9
  328. data/spec/functional/resource/insserv_spec.rb +1 -1
  329. data/spec/functional/resource/mount_spec.rb +10 -2
  330. data/spec/functional/resource/powershell_package_source_spec.rb +107 -0
  331. data/spec/functional/resource/powershell_script_spec.rb +57 -14
  332. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  333. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  334. data/spec/functional/resource/windows_certificate_spec.rb +10 -6
  335. data/spec/functional/resource/windows_firewall_rule_spec.rb +93 -0
  336. data/spec/functional/resource/windows_package_spec.rb +36 -10
  337. data/spec/functional/resource/windows_share_spec.rb +103 -0
  338. data/spec/functional/resource/windows_task_spec.rb +15 -16
  339. data/spec/functional/resource/zypper_package_spec.rb +11 -0
  340. data/spec/functional/version_spec.rb +3 -3
  341. data/spec/integration/client/client_spec.rb +6 -5
  342. data/spec/integration/client/exit_code_spec.rb +3 -2
  343. data/spec/integration/client/ipv6_spec.rb +1 -1
  344. data/spec/integration/compliance/compliance_spec.rb +81 -0
  345. data/spec/integration/knife/client_key_create_spec.rb +1 -1
  346. data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
  347. data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
  348. data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
  349. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  350. data/spec/integration/knife/node_create_spec.rb +1 -1
  351. data/spec/integration/knife/node_environment_set_spec.rb +1 -1
  352. data/spec/integration/knife/node_run_list_add_spec.rb +4 -4
  353. data/spec/integration/knife/node_run_list_remove_spec.rb +1 -1
  354. data/spec/integration/knife/node_run_list_set_spec.rb +1 -1
  355. data/spec/integration/knife/node_show_spec.rb +1 -1
  356. data/spec/integration/ohai/ohai_spec.rb +61 -0
  357. data/spec/integration/recipes/notifies_spec.rb +1 -1
  358. data/spec/integration/recipes/provider_choice.rb +2 -2
  359. data/spec/integration/recipes/recipe_dsl_spec.rb +1 -0
  360. data/spec/integration/recipes/remote_directory.rb +1 -1
  361. data/spec/integration/solo/solo_spec.rb +5 -5
  362. data/spec/spec_helper.rb +9 -7
  363. data/spec/stress/win32/file_spec.rb +1 -1
  364. data/spec/support/chef_helpers.rb +2 -2
  365. data/spec/support/lib/chef/resource/cat.rb +1 -1
  366. data/spec/support/lib/chef/resource/one_two_three_four.rb +1 -1
  367. data/spec/support/matchers/leak.rb +2 -2
  368. data/spec/support/mock/platform.rb +24 -16
  369. data/spec/support/platform_helpers.rb +27 -38
  370. data/spec/support/shared/functional/securable_resource.rb +108 -27
  371. data/spec/support/shared/functional/win32_service.rb +1 -1
  372. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  373. data/spec/support/shared/unit/knife_shared.rb +1 -1
  374. data/spec/support/shared/unit/script_resource.rb +4 -4
  375. data/spec/support/shared/unit/windows_script_resource.rb +1 -1
  376. data/spec/tiny_server.rb +0 -1
  377. data/spec/unit/application/client_spec.rb +2 -2
  378. data/spec/unit/application/exit_code_spec.rb +10 -0
  379. data/spec/unit/application_spec.rb +4 -6
  380. data/spec/unit/chef_fs/config_spec.rb +1 -1
  381. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  382. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  383. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  384. data/spec/unit/client_spec.rb +17 -0
  385. data/spec/unit/compliance/fetcher/automate_spec.rb +134 -0
  386. data/spec/unit/compliance/fetcher/chef_server_spec.rb +93 -0
  387. data/spec/unit/compliance/reporter/automate_spec.rb +427 -0
  388. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +177 -0
  389. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +48 -0
  390. data/spec/unit/compliance/runner_spec.rb +113 -0
  391. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  392. data/spec/unit/cookbook_spec.rb +2 -2
  393. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  394. data/spec/unit/data_collector_spec.rb +0 -117
  395. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  396. data/spec/unit/file_access_control_spec.rb +1 -1
  397. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +11 -11
  398. data/spec/unit/http/ssl_policies_spec.rb +11 -0
  399. data/spec/unit/knife/bootstrap_spec.rb +6 -6
  400. data/spec/unit/knife/client_create_spec.rb +2 -2
  401. data/spec/unit/knife/configure_client_spec.rb +5 -5
  402. data/spec/unit/knife/configure_spec.rb +3 -3
  403. data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
  404. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  405. data/spec/unit/knife/cookbook_list_spec.rb +2 -2
  406. data/spec/unit/knife/cookbook_metadata_spec.rb +3 -3
  407. data/spec/unit/knife/core/node_editor_spec.rb +1 -1
  408. data/spec/unit/knife/core/ui_spec.rb +1 -0
  409. data/spec/unit/knife/environment_compare_spec.rb +3 -3
  410. data/spec/unit/knife/ssh_spec.rb +2 -2
  411. data/spec/unit/knife/supermarket_download_spec.rb +8 -8
  412. data/spec/unit/knife/supermarket_list_spec.rb +3 -3
  413. data/spec/unit/knife/supermarket_search_spec.rb +1 -1
  414. data/spec/unit/knife/tag_create_spec.rb +1 -1
  415. data/spec/unit/knife/tag_delete_spec.rb +1 -1
  416. data/spec/unit/knife/user_create_spec.rb +1 -1
  417. data/spec/unit/lwrp_spec.rb +3 -3
  418. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  419. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  420. data/spec/unit/mixin/powershell_exec_spec.rb +40 -3
  421. data/spec/unit/mixin/powershell_out_spec.rb +14 -0
  422. data/spec/unit/mixin/securable_spec.rb +2 -2
  423. data/spec/unit/mixin/which.rb +1 -1
  424. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  425. data/spec/unit/platform/query_helpers_spec.rb +11 -12
  426. data/spec/unit/provider/dsc_resource_spec.rb +10 -27
  427. data/spec/unit/provider/dsc_script_spec.rb +1 -1
  428. data/spec/unit/provider/group/windows_spec.rb +6 -0
  429. data/spec/unit/provider/group_spec.rb +1 -1
  430. data/spec/unit/provider/mount/linux_spec.rb +107 -0
  431. data/spec/unit/provider/mount/mount_spec.rb +21 -10
  432. data/spec/unit/provider/mount/solaris_spec.rb +1 -1
  433. data/spec/unit/provider/mount/windows_spec.rb +1 -0
  434. data/spec/unit/provider/mount_spec.rb +31 -0
  435. data/spec/unit/provider/package/chocolatey_spec.rb +2 -3
  436. data/spec/unit/provider/package/powershell_spec.rb +88 -96
  437. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  438. data/spec/unit/provider/package/zypper_spec.rb +0 -25
  439. data/spec/unit/provider/package_spec.rb +2 -2
  440. data/spec/unit/provider/powershell_script_spec.rb +11 -0
  441. data/spec/unit/provider/route_spec.rb +0 -2
  442. data/spec/unit/provider/subversion_spec.rb +0 -3
  443. data/spec/unit/provider/systemd_unit_spec.rb +1 -1
  444. data/spec/unit/provider/user_spec.rb +7 -1
  445. data/spec/unit/provider/windows_env_spec.rb +18 -34
  446. data/spec/unit/provider/windows_path_spec.rb +6 -11
  447. data/spec/unit/provider/windows_task_spec.rb +7 -6
  448. data/spec/unit/recipe_spec.rb +1 -1
  449. data/spec/unit/resource/breakpoint_spec.rb +1 -1
  450. data/spec/unit/resource/build_essential_spec.rb +0 -12
  451. data/spec/unit/resource/chef_client_config_spec.rb +137 -0
  452. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  453. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  454. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  455. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  456. data/spec/unit/resource/ifconfig_spec.rb +2 -10
  457. data/spec/unit/resource/launchd_spec.rb +8 -0
  458. data/spec/unit/resource/mount_spec.rb +18 -5
  459. data/spec/unit/resource/osx_profile_spec.rb +67 -1
  460. data/spec/unit/resource/powershell_package_source_spec.rb +20 -20
  461. data/spec/unit/resource/powershell_script_spec.rb +4 -74
  462. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  463. data/spec/unit/resource/service_spec.rb +2 -2
  464. data/spec/unit/resource/solaris_package_spec.rb +8 -10
  465. data/spec/unit/resource/windows_certificate_spec.rb +12 -0
  466. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  467. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  468. data/spec/unit/resource_inspector_spec.rb +3 -3
  469. data/spec/unit/run_lock_spec.rb +5 -1
  470. data/spec/unit/runner_spec.rb +1 -2
  471. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  472. data/spec/unit/shell/shell_session_spec.rb +35 -64
  473. data/spec/unit/shell_spec.rb +18 -21
  474. data/spec/unit/train_transport_spec.rb +14 -13
  475. data/spec/unit/util/dsc/configuration_generator_spec.rb +79 -0
  476. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +27 -35
  477. data/spec/unit/util/selinux_spec.rb +2 -0
  478. data/tasks/rspec.rb +1 -3
  479. metadata +80 -33
  480. data/lib/chef/dist.rb +0 -68
  481. data/lib/chef/monkey_patches/net_http.rb +0 -22
  482. data/lib/chef/provider/windows_env.rb +0 -210
  483. data/lib/chef/provider/windows_path.rb +0 -61
  484. data/lib/chef/provider/windows_task.rb +0 -632
  485. data/lib/chef/util/powershell/cmdlet.rb +0 -173
  486. data/lib/chef/util/powershell/cmdlet_result.rb +0 -61
  487. data/spec/functional/util/powershell/cmdlet_spec.rb +0 -111
  488. data/spec/integration/knife/config_get_profile_spec.rb +0 -114
  489. data/spec/support/mock/constant.rb +0 -52
  490. data/spec/unit/monkey_patches/uri_spec.rb +0 -34
  491. data/spec/unit/provider_resolver_spec.rb +0 -885
  492. data/spec/unit/resource/data/InstallHistory_with_CLT.plist +0 -92
  493. data/spec/unit/resource/data/InstallHistory_without_CLT.plist +0 -38
  494. data/spec/unit/util/powershell/cmdlet_spec.rb +0 -106
@@ -21,7 +21,11 @@
21
21
  # limitations under the License.
22
22
  #
23
23
  require_relative "../log"
24
- require "mixlib/authentication/signedheaderauth"
24
+ module Mixlib
25
+ module Authentication
26
+ autoload :SignedHeaderAuth, "mixlib/authentication/signedheaderauth"
27
+ end
28
+ end
25
29
 
26
30
  class Chef
27
31
  class HTTP
@@ -18,7 +18,7 @@
18
18
 
19
19
  require_relative "auth_credentials"
20
20
  require_relative "../exceptions"
21
- require "openssl" unless defined?(OpenSSL)
21
+ autoload :OpenSSL, "openssl"
22
22
 
23
23
  class Chef
24
24
  class HTTP
@@ -20,8 +20,10 @@
20
20
  # See the License for the specific language governing permissions and
21
21
  # limitations under the License.
22
22
  #
23
- require "uri" unless defined?(URI)
24
- require "net/http" unless defined?(Net::HTTP)
23
+ autoload :URI, "uri"
24
+ module Net
25
+ autoload :HTTP, "net/http"
26
+ end
25
27
  require_relative "ssl_policies"
26
28
  require_relative "http_request"
27
29
 
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "zlib"
19
+ require "zlib" unless defined?(Zlib)
20
20
  require_relative "http_request"
21
21
 
22
22
  class Chef
@@ -20,10 +20,12 @@
20
20
  # See the License for the specific language governing permissions and
21
21
  # limitations under the License.
22
22
  #
23
- require "uri" unless defined?(URI)
24
- require "cgi" unless defined?(CGI)
25
- require "net/http" unless defined?(Net::HTTP)
26
- require_relative "../dist"
23
+ autoload :URI, "uri"
24
+ autoload :CGI, "cgi"
25
+ module Net
26
+ autoload :HTTP, "net/http"
27
+ end
28
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
27
29
 
28
30
  # To load faster, we only want ohai's version string.
29
31
  # However, in ohai before 0.6.0, the version is defined
@@ -42,7 +44,7 @@ class Chef
42
44
 
43
45
  engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
44
46
 
45
- UA_COMMON = "/#{::Chef::VERSION} (#{engine}-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}; ohai-#{Ohai::VERSION}; #{RUBY_PLATFORM}; +#{Chef::Dist::WEBSITE})".freeze
47
+ UA_COMMON = "/#{::Chef::VERSION} (#{engine}-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}; ohai-#{Ohai::VERSION}; #{RUBY_PLATFORM}; +#{ChefUtils::Dist::Org::WEBSITE})".freeze
46
48
  DEFAULT_UA = "Chef Client" << UA_COMMON
47
49
 
48
50
  USER_AGENT = "User-Agent".freeze
@@ -44,7 +44,10 @@
44
44
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
45
45
 
46
46
  require "chef_zero/server"
47
- require_relative "../dist"
47
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
48
+ module Net
49
+ autoload :HTTPResponse, "net/http"
50
+ end
48
51
 
49
52
  class Chef
50
53
  class HTTP
@@ -64,7 +67,7 @@ class Chef
64
67
  # or else streaming-style responses won't work.
65
68
  def read_body(dest = nil, &block)
66
69
  if dest
67
- raise "responses from socketless #{Chef::Dist::ZERO} can't be written to specific destination"
70
+ raise "responses from socketless #{ChefUtils::Dist::Zero::PRODUCT} can't be written to specific destination"
68
71
  end
69
72
 
70
73
  if block_given?
@@ -21,7 +21,7 @@
21
21
  # limitations under the License.
22
22
  #
23
23
 
24
- require "openssl" unless defined?(OpenSSL)
24
+ autoload :OpenSSL, "openssl"
25
25
  require_relative "../util/path_helper"
26
26
 
27
27
  class Chef
@@ -70,6 +70,12 @@ class Chef
70
70
  end
71
71
 
72
72
  http_client.ca_file = config[:ssl_ca_file]
73
+ elsif ENV["SSL_CERT_FILE"]
74
+ unless ::File.exist?(ENV["SSL_CERT_FILE"])
75
+ raise Chef::Exceptions::ConfigurationError, "The configured ssl_ca_file #{ENV["SSL_CERT_FILE"]} does not exist"
76
+ end
77
+
78
+ http_client.ca_file = ENV["SSL_CERT_FILE"]
73
79
  end
74
80
  end
75
81
 
@@ -17,25 +17,22 @@
17
17
 
18
18
  # Wrapper class for interacting with JSON.
19
19
 
20
- require "ffi_yajl" unless defined?(FFI_Yajl)
20
+ autoload :FFI_Yajl, "ffi_yajl"
21
21
  require_relative "exceptions"
22
22
  # We're requiring this to prevent breaking consumers using Hash.to_json
23
23
  require "json" unless defined?(JSON)
24
24
 
25
25
  class Chef
26
26
  class JSONCompat
27
- JSON_MAX_NESTING = 1000
28
27
 
29
28
  class <<self
30
29
 
31
- # API to use to avoid create_additions
32
30
  def parse(source, opts = {})
33
31
  FFI_Yajl::Parser.parse(source, opts)
34
32
  rescue FFI_Yajl::ParseError => e
35
33
  raise Chef::Exceptions::JSON::ParseError, e.message
36
34
  end
37
35
 
38
- # Just call the JSON gem's parse method with a modified :max_nesting field
39
36
  def from_json(source, opts = {})
40
37
  obj = parse(source, opts)
41
38
 
@@ -56,10 +53,8 @@ class Chef
56
53
  end
57
54
 
58
55
  def to_json_pretty(obj, opts = nil)
59
- opts ||= {}
60
- options_map = {}
61
- options_map[:pretty] = true
62
- options_map[:indent] = opts[:indent] if opts.key?(:indent)
56
+ options_map = { pretty: true }
57
+ options_map[:indent] = opts[:indent] if opts.respond_to?(:key?) && opts.key?(:indent)
63
58
  to_json(obj, options_map).chomp
64
59
  end
65
60
 
@@ -46,7 +46,7 @@ class Chef
46
46
  # Actor that the key is for, either a client or a user.
47
47
  @actor = actor
48
48
 
49
- unless actor_field_name == "user" || actor_field_name == "client"
49
+ unless %w{user client}.include?(actor_field_name)
50
50
  raise Chef::Exceptions::InvalidKeyArgument, "the second argument to initialize must be either 'user' or 'client'"
51
51
  end
52
52
 
@@ -21,6 +21,7 @@ require "forwardable" unless defined?(Forwardable)
21
21
  require_relative "version"
22
22
  require "mixlib/cli" unless defined?(Mixlib::CLI)
23
23
  require "chef-utils/dsl/default_paths" unless defined?(ChefUtils::DSL::DefaultPaths)
24
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
24
25
  require_relative "workstation_config_loader"
25
26
  require_relative "mixin/convert_to_class_name"
26
27
  require_relative "mixin/default_paths"
@@ -32,12 +33,11 @@ require_relative "http/authenticator"
32
33
  require_relative "http/http_request"
33
34
  require_relative "http"
34
35
  require "pp" unless defined?(PP)
35
- require_relative "dist"
36
36
 
37
37
  class Chef
38
38
  class Knife
39
39
 
40
- Chef::HTTP::HTTPRequest.user_agent = "#{Chef::Dist::PRODUCT} Knife#{Chef::HTTP::HTTPRequest::UA_COMMON}"
40
+ Chef::HTTP::HTTPRequest.user_agent = "#{ChefUtils::Dist::Infra::PRODUCT} Knife#{Chef::HTTP::HTTPRequest::UA_COMMON}"
41
41
 
42
42
  include Mixlib::CLI
43
43
  include ChefUtils::DSL::DefaultPaths
@@ -282,7 +282,7 @@ class Chef
282
282
  elsif category_commands = guess_category(args)
283
283
  list_commands(category_commands)
284
284
  elsif OFFICIAL_PLUGINS.include?(args[0]) # command was an uninstalled official chef knife plugin
285
- ui.info("Use `#{Chef::Dist::EXEC} gem install knife-#{args[0]}` to install the plugin into Chef Workstation")
285
+ ui.info("Use `#{ChefUtils::Dist::Infra::EXEC} gem install knife-#{args[0]}` to install the plugin into Chef Workstation")
286
286
  else
287
287
  list_commands
288
288
  end
@@ -564,7 +564,7 @@ class Chef
564
564
  ui.error "The API version that Knife is using is not supported by the server you sent this request to."
565
565
  ui.info "The request that Knife sent was using API version #{client_api_version}."
566
566
  ui.info "The server you sent the request to supports a min API version of #{min_server_version} and a max API version of #{max_server_version}."
567
- ui.info "Please either update your #{Chef::Dist::PRODUCT} or the server to be a compatible set."
567
+ ui.info "Please either update your #{ChefUtils::Dist::Infra::PRODUCT} or the server to be a compatible set."
568
568
  else
569
569
  ui.error response.message
570
570
  ui.info "Response: #{format_rest_error(response)}"
@@ -18,9 +18,11 @@
18
18
 
19
19
  require_relative "../knife"
20
20
  require_relative "data_bag_secret_options"
21
- require_relative "../dist"
21
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
22
22
  require "license_acceptance/cli_flags/mixlib_cli"
23
- require "license_acceptance/acceptor"
23
+ module LicenseAcceptance
24
+ autoload :Acceptor, "license_acceptance/acceptor"
25
+ end
24
26
 
25
27
  class Chef
26
28
  class Knife
@@ -144,7 +146,7 @@ class Chef
144
146
  # client.rb content via chef-full/bootstrap_context
145
147
  option :bootstrap_version,
146
148
  long: "--bootstrap-version VERSION",
147
- description: "The version of #{Chef::Dist::PRODUCT} to install."
149
+ description: "The version of #{ChefUtils::Dist::Infra::PRODUCT} to install."
148
150
 
149
151
  option :channel,
150
152
  long: "--channel CHANNEL",
@@ -176,7 +178,7 @@ class Chef
176
178
  option :bootstrap_template,
177
179
  short: "-t TEMPLATE",
178
180
  long: "--bootstrap-template TEMPLATE",
179
- description: "Bootstrap #{Chef::Dist::PRODUCT} using a built-in or custom template. Set to the full path of an erb template or use one of the built-in templates."
181
+ description: "Bootstrap #{ChefUtils::Dist::Infra::PRODUCT} using a built-in or custom template. Set to the full path of an erb template or use one of the built-in templates."
180
182
 
181
183
  # client.rb content via bootstrap_context
182
184
  option :node_ssl_verify_mode,
@@ -194,7 +196,7 @@ class Chef
194
196
  # bootstrap_context - client.rb
195
197
  option :node_verify_api_cert,
196
198
  long: "--[no-]node-verify-api-cert",
197
- description: "Verify the SSL cert for HTTPS requests to the #{Chef::Dist::SERVER_PRODUCT} API.",
199
+ description: "Verify the SSL cert for HTTPS requests to the #{ChefUtils::Dist::Server::PRODUCT} API.",
198
200
  boolean: true
199
201
 
200
202
  # runtime - sudo settings (train handles sudo)
@@ -252,14 +254,14 @@ class Chef
252
254
  option :first_boot_attributes,
253
255
  short: "-j JSON_ATTRIBS",
254
256
  long: "--json-attributes",
255
- description: "A JSON string to be added to the first run of #{Chef::Dist::CLIENT}.",
257
+ description: "A JSON string to be added to the first run of #{ChefUtils::Dist::Infra::CLIENT}.",
256
258
  proc: lambda { |o| Chef::JSONCompat.parse(o) },
257
259
  default: nil
258
260
 
259
261
  # bootstrap template
260
262
  option :first_boot_attributes_from_file,
261
263
  long: "--json-attribute-file FILE",
262
- description: "A JSON file to be used to the first run of #{Chef::Dist::CLIENT}.",
264
+ description: "A JSON file to be used to the first run of #{ChefUtils::Dist::Infra::CLIENT}.",
263
265
  proc: lambda { |o| Chef::JSONCompat.parse(File.read(o)) },
264
266
  default: nil
265
267
 
@@ -290,28 +292,28 @@ class Chef
290
292
  option :msi_url, # Windows target only
291
293
  short: "-m URL",
292
294
  long: "--msi-url URL",
293
- description: "Location of the #{Chef::Dist::PRODUCT} MSI. The default templates will prefer to download from this location. The MSI will be downloaded from #{Chef::Dist::WEBSITE} if not provided (Windows).",
295
+ description: "Location of the #{ChefUtils::Dist::Infra::PRODUCT} MSI. The default templates will prefer to download from this location. The MSI will be downloaded from #{ChefUtils::Dist::Org::WEBSITE} if not provided (Windows).",
294
296
  default: ""
295
297
 
296
298
  # bootstrap override: Do this instead of our own setup.sh from omnitruck. Causes bootstrap_url to be ignored.
297
299
  option :bootstrap_install_command,
298
300
  long: "--bootstrap-install-command COMMANDS",
299
- description: "Custom command to install #{Chef::Dist::PRODUCT}."
301
+ description: "Custom command to install #{ChefUtils::Dist::Infra::PRODUCT}."
300
302
 
301
303
  # bootstrap template: Run this command first in the bootstrap script
302
304
  option :bootstrap_preinstall_command,
303
305
  long: "--bootstrap-preinstall-command COMMANDS",
304
- description: "Custom commands to run before installing #{Chef::Dist::PRODUCT}."
306
+ description: "Custom commands to run before installing #{ChefUtils::Dist::Infra::PRODUCT}."
305
307
 
306
308
  # bootstrap template
307
309
  option :bootstrap_wget_options,
308
310
  long: "--bootstrap-wget-options OPTIONS",
309
- description: "Add options to wget when installing #{Chef::Dist::PRODUCT}."
311
+ description: "Add options to wget when installing #{ChefUtils::Dist::Infra::PRODUCT}."
310
312
 
311
313
  # bootstrap template
312
314
  option :bootstrap_curl_options,
313
315
  long: "--bootstrap-curl-options OPTIONS",
314
- description: "Add options to curl when install #{Chef::Dist::PRODUCT}."
316
+ description: "Add options to curl when install #{ChefUtils::Dist::Infra::PRODUCT}."
315
317
 
316
318
  # chef_vault_handler
317
319
  option :bootstrap_vault_file,
@@ -328,7 +330,7 @@ class Chef
328
330
  long: "--bootstrap-vault-item VAULT_ITEM",
329
331
  description: 'A single vault and item to update as "vault:item".',
330
332
  proc: Proc.new { |i, accumulator|
331
- (vault, item) = i.split(/:/)
333
+ (vault, item) = i.split(":")
332
334
  accumulator ||= {}
333
335
  accumulator[vault] ||= []
334
336
  accumulator[vault].push(item)
@@ -405,6 +407,7 @@ class Chef
405
407
  deps do
406
408
  require "erubis" unless defined?(Erubis)
407
409
 
410
+ require "net/ssh" unless defined?(Net::SSH)
408
411
  require_relative "../json_compat"
409
412
  require_relative "../util/path_helper"
410
413
  require_relative "bootstrap/chef_vault_handler"
@@ -487,7 +490,7 @@ class Chef
487
490
 
488
491
  # Otherwise search the template directories until we find the right one
489
492
  bootstrap_files = []
490
- bootstrap_files << File.join(File.dirname(__FILE__), "bootstrap/templates", "#{template}.erb")
493
+ bootstrap_files << File.join(__dir__, "bootstrap/templates", "#{template}.erb")
491
494
  bootstrap_files << File.join(Knife.chef_config_dir, "bootstrap", "#{template}.erb") if Chef::Knife.chef_config_dir
492
495
  Chef::Util::PathHelper.home(".chef", "bootstrap", "#{template}.erb") { |p| bootstrap_files << p }
493
496
  bootstrap_files << Gem.find_files(File.join("chef", "knife", "bootstrap", "#{template}.erb"))
@@ -538,7 +541,7 @@ class Chef
538
541
  end
539
542
 
540
543
  def run
541
- check_license if ChefConfig::Dist::ENFORCE_LICENSE
544
+ check_license if ChefUtils::Dist::Org::ENFORCE_LICENSE
542
545
 
543
546
  plugin_setup!
544
547
  validate_name_args!
@@ -112,7 +112,7 @@ class Chef
112
112
  if bootstrap_vault_item
113
113
  bootstrap_vault_item
114
114
  else
115
- json = bootstrap_vault_json ? bootstrap_vault_json : File.read(bootstrap_vault_file)
115
+ json = bootstrap_vault_json || File.read(bootstrap_vault_file)
116
116
  Chef::JSONCompat.from_json(json)
117
117
  end
118
118
  end
@@ -172,8 +172,8 @@ do_download() {
172
172
  <%= @config[:bootstrap_install_command] %>
173
173
  <% else %>
174
174
  install_sh="<%= @config[:bootstrap_url] ? @config[:bootstrap_url] : "https://omnitruck.chef.io/chef/install.sh" %>"
175
- if test -f /usr/bin/<%= Chef::Dist::CLIENT %>; then
176
- echo "-----> Existing <%= Chef::Dist::PRODUCT %> installation detected"
175
+ if test -f /usr/bin/<%= ChefUtils::Dist::Infra::CLIENT %>; then
176
+ echo "-----> Existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation detected"
177
177
  else
178
178
  echo "-----> Installing Chef Omnibus (<%= @config[:channel] %>/<%= version_to_install %>)"
179
179
  do_download ${install_sh} $tmp_dir/install.sh
@@ -237,6 +237,6 @@ mkdir -p /etc/chef/client.d
237
237
  <%= client_d %>
238
238
  <% end -%>
239
239
 
240
- echo "Starting the first <%= Chef::Dist::PRODUCT %> Client run..."
240
+ echo "Starting the first <%= ChefUtils::Dist::Infra::PRODUCT %> Client run..."
241
241
 
242
242
  <%= start_chef %>
@@ -109,13 +109,13 @@ goto Version10.0
109
109
  goto chef_installed
110
110
 
111
111
  :chef_installed
112
- @echo Checking for existing <%= Chef::Dist::PRODUCT %> installation
113
- WHERE <%= Chef::Dist::CLIENT %> >nul 2>nul
112
+ @echo Checking for existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation
113
+ WHERE <%= ChefUtils::Dist::Infra::CLIENT %> >nul 2>nul
114
114
  If !ERRORLEVEL!==0 (
115
- @echo Existing <%= Chef::Dist::PRODUCT %> installation detected, skipping download
115
+ @echo Existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation detected, skipping download
116
116
  goto key_create
117
117
  ) else (
118
- @echo No existing installation of <%= Chef::Dist::PRODUCT %> detected
118
+ @echo No existing installation of <%= ChefUtils::Dist::Infra::PRODUCT %> detected
119
119
  goto install
120
120
  )
121
121
 
@@ -127,7 +127,7 @@ If !ERRORLEVEL!==0 (
127
127
  @rem Install Chef using the MSI installer
128
128
 
129
129
  @set "LOCAL_DESTINATION_MSI_PATH=<%= local_download_path %>"
130
- @set "CHEF_CLIENT_MSI_LOG_PATH=%TEMP%\<%= Chef::Dist::CLIENT %>-msi%RANDOM%.log"
130
+ @set "CHEF_CLIENT_MSI_LOG_PATH=%TEMP%\<%= ChefUtils::Dist::Infra::CLIENT %>-msi%RANDOM%.log"
131
131
 
132
132
  @rem Clear any pre-existing downloads
133
133
  @echo Checking for existing downloaded package at "%LOCAL_DESTINATION_MSI_PATH%"
@@ -197,7 +197,7 @@ If !ERRORLEVEL!==0 (
197
197
  <%= install_chef %>
198
198
 
199
199
  @if ERRORLEVEL 1 (
200
- echo <%= Chef::Dist::CLIENT %> package failed to install with status code !ERRORLEVEL!. > "&2"
200
+ echo <%= ChefUtils::Dist::Infra::CLIENT %> package failed to install with status code !ERRORLEVEL!. > "&2"
201
201
  echo See installation log for additional detail: %CHEF_CLIENT_MSI_LOG_PATH%. > "&2"
202
202
  ) else (
203
203
  @echo Installation completed successfully
@@ -230,9 +230,9 @@ echo Writing validation key...
230
230
  echo Validation key written.
231
231
  @echo on
232
232
 
233
- <% if @config[:secret] -%>
233
+ <% if secret -%>
234
234
  > <%= bootstrap_directory %>\encrypted_data_bag_secret (
235
- <%= secret %>
235
+ <%= encrypted_data_bag_secret %>
236
236
  )
237
237
  <% end -%>
238
238
 
@@ -274,5 +274,5 @@ echo Validation key written.
274
274
  <%= client_d %>
275
275
  <% end -%>
276
276
 
277
- @echo Starting <%= Chef::Dist::CLIENT %> to bootstrap the node...
277
+ @echo Starting <%= ChefUtils::Dist::Infra::CLIENT %> to bootstrap the node...
278
278
  <%= start_chef %>
@@ -285,7 +285,7 @@ class Chef
285
285
  # Train.unpack_target_from_uri only works for complete URIs in
286
286
  # form of proto://[user[:pass]@]host[:port]/
287
287
  # So we'll add the protocol prefix if it's not supplied.
288
- uri_to_check = if URI.regexp.match(uri)
288
+ uri_to_check = if URI::DEFAULT_PARSER.make_regexp.match(uri)
289
289
  uri
290
290
  else
291
291
  "#{default_protocol}://#{uri}"
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "../knife"
20
- require_relative "../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  class Knife
@@ -30,7 +30,7 @@ class Chef
30
30
  option :file,
31
31
  short: "-f FILE",
32
32
  long: "--file FILE",
33
- description: "Write the private key to a file if the #{Chef::Dist::SERVER_PRODUCT} generated one."
33
+ description: "Write the private key to a file if the #{ChefUtils::Dist::Server::PRODUCT} generated one."
34
34
 
35
35
  option :validator,
36
36
  long: "--validator",
@@ -45,7 +45,7 @@ class Chef
45
45
  option :prevent_keygen,
46
46
  short: "-k",
47
47
  long: "--prevent-keygen",
48
- description: "Prevent #{Chef::Dist::SERVER_PRODUCT} from generating a default key pair for you. Cannot be passed with --public-key.",
48
+ description: "Prevent #{ChefUtils::Dist::Server::PRODUCT} from generating a default key pair for you. Cannot be passed with --public-key.",
49
49
  boolean: true
50
50
 
51
51
  banner "knife client create CLIENTNAME (options)"