chef 16.4.35 → 16.6.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (320) 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.gemspec +2 -1
  6. data/lib/chef/api_client/registration.rb +6 -6
  7. data/lib/chef/application.rb +19 -22
  8. data/lib/chef/application/apply.rb +12 -7
  9. data/lib/chef/application/base.rb +26 -25
  10. data/lib/chef/application/client.rb +16 -8
  11. data/lib/chef/application/exit_code.rb +13 -4
  12. data/lib/chef/application/knife.rb +22 -11
  13. data/lib/chef/application/solo.rb +2 -1
  14. data/lib/chef/application/windows_service.rb +14 -14
  15. data/lib/chef/application/windows_service_manager.rb +6 -6
  16. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  18. data/lib/chef/chef_fs/knife.rb +2 -2
  19. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  20. data/lib/chef/client.rb +12 -42
  21. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  22. data/lib/chef/cookbook/gem_installer.rb +1 -1
  23. data/lib/chef/cookbook/synchronizer.rb +2 -2
  24. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  25. data/lib/chef/cookbook_uploader.rb +1 -1
  26. data/lib/chef/data_collector.rb +7 -6
  27. data/lib/chef/data_collector/config_validation.rb +22 -13
  28. data/lib/chef/data_collector/run_end_message.rb +2 -2
  29. data/lib/chef/data_collector/run_start_message.rb +1 -1
  30. data/lib/chef/deprecated.rb +1 -1
  31. data/lib/chef/deprecation/warnings.rb +2 -2
  32. data/lib/chef/digester.rb +2 -2
  33. data/lib/chef/dsl/chef_vault.rb +1 -1
  34. data/lib/chef/dsl/data_query.rb +2 -2
  35. data/lib/chef/dsl/platform_introspection.rb +1 -1
  36. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  37. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  38. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  39. data/lib/chef/environment.rb +2 -2
  40. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  41. data/lib/chef/exceptions.rb +4 -4
  42. data/lib/chef/file_access_control/windows.rb +5 -1
  43. data/lib/chef/file_content_management/tempfile.rb +1 -1
  44. data/lib/chef/formatters/doc.rb +7 -6
  45. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  46. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  47. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  48. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  49. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  50. data/lib/chef/formatters/indentable_output_stream.rb +2 -2
  51. data/lib/chef/formatters/minimal.rb +5 -4
  52. data/lib/chef/http.rb +6 -4
  53. data/lib/chef/http/auth_credentials.rb +5 -1
  54. data/lib/chef/http/authenticator.rb +1 -1
  55. data/lib/chef/http/basic_client.rb +4 -2
  56. data/lib/chef/http/decompressor.rb +1 -1
  57. data/lib/chef/http/http_request.rb +7 -5
  58. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  59. data/lib/chef/http/ssl_policies.rb +1 -1
  60. data/lib/chef/json_compat.rb +1 -1
  61. data/lib/chef/knife.rb +4 -4
  62. data/lib/chef/knife/bootstrap.rb +16 -14
  63. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  64. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  65. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  66. data/lib/chef/knife/client_create.rb +3 -3
  67. data/lib/chef/knife/config_get.rb +8 -97
  68. data/lib/chef/knife/config_get_profile.rb +9 -9
  69. data/lib/chef/knife/config_list.rb +139 -0
  70. data/lib/chef/knife/config_list_profiles.rb +8 -98
  71. data/lib/chef/knife/config_show.rb +127 -0
  72. data/lib/chef/knife/config_use.rb +61 -0
  73. data/lib/chef/knife/config_use_profile.rb +9 -24
  74. data/lib/chef/knife/configure.rb +4 -2
  75. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  76. data/lib/chef/knife/core/object_loader.rb +1 -1
  77. data/lib/chef/knife/core/ui.rb +1 -1
  78. data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
  79. data/lib/chef/knife/exec.rb +2 -2
  80. data/lib/chef/knife/node_policy_set.rb +2 -2
  81. data/lib/chef/knife/node_run_list_add.rb +1 -1
  82. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  83. data/lib/chef/knife/node_run_list_set.rb +1 -1
  84. data/lib/chef/knife/node_show.rb +2 -2
  85. data/lib/chef/knife/role_env_run_list_add.rb +1 -1
  86. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  87. data/lib/chef/knife/role_run_list_add.rb +1 -1
  88. data/lib/chef/knife/role_run_list_set.rb +1 -1
  89. data/lib/chef/knife/search.rb +0 -1
  90. data/lib/chef/knife/serve.rb +3 -3
  91. data/lib/chef/knife/ssh.rb +18 -3
  92. data/lib/chef/knife/ssl_check.rb +3 -3
  93. data/lib/chef/knife/status.rb +2 -2
  94. data/lib/chef/knife/tag_create.rb +1 -1
  95. data/lib/chef/knife/tag_delete.rb +1 -1
  96. data/lib/chef/knife/user_create.rb +2 -2
  97. data/lib/chef/knife/yaml_convert.rb +1 -1
  98. data/lib/chef/local_mode.rb +2 -2
  99. data/lib/chef/log/syslog.rb +2 -2
  100. data/lib/chef/log/winevt.rb +2 -2
  101. data/lib/chef/mixin/deep_merge.rb +0 -12
  102. data/lib/chef/mixin/openssl_helper.rb +1 -4
  103. data/lib/chef/mixin/powershell_exec.rb +22 -10
  104. data/lib/chef/mixin/powershell_out.rb +12 -5
  105. data/lib/chef/mixin/template.rb +3 -3
  106. data/lib/chef/mixin/uris.rb +4 -2
  107. data/lib/chef/mixin/versioned_api.rb +1 -2
  108. data/lib/chef/monkey_patches/net_http.rb +4 -4
  109. data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
  110. data/lib/chef/node_map.rb +4 -4
  111. data/lib/chef/policy_builder/dynamic.rb +2 -0
  112. data/lib/chef/policy_builder/policyfile.rb +2 -2
  113. data/lib/chef/powershell.rb +3 -2
  114. data/lib/chef/provider.rb +1 -5
  115. data/lib/chef/provider/file.rb +2 -2
  116. data/lib/chef/provider/ifconfig.rb +2 -2
  117. data/lib/chef/provider/ifconfig/debian.rb +33 -15
  118. data/lib/chef/provider/ifconfig/redhat.rb +51 -17
  119. data/lib/chef/provider/launchd.rb +2 -2
  120. data/lib/chef/provider/link.rb +0 -9
  121. data/lib/chef/provider/mount/linux.rb +63 -0
  122. data/lib/chef/provider/package/dpkg.rb +3 -12
  123. data/lib/chef/provider/package/homebrew.rb +1 -1
  124. data/lib/chef/provider/package/rubygems.rb +21 -18
  125. data/lib/chef/provider/package/snap.rb +0 -1
  126. data/lib/chef/provider/package/windows.rb +2 -2
  127. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
  128. data/lib/chef/provider/package/zypper.rb +1 -1
  129. data/lib/chef/provider/powershell_script.rb +12 -1
  130. data/lib/chef/provider/remote_file/content.rb +3 -0
  131. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  132. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  133. data/lib/chef/provider/route.rb +2 -6
  134. data/lib/chef/provider/service/macosx.rb +2 -2
  135. data/lib/chef/provider/service/redhat.rb +1 -1
  136. data/lib/chef/provider/template_finder.rb +2 -10
  137. data/lib/chef/provider/user/dscl.rb +5 -5
  138. data/lib/chef/provider/user/mac.rb +3 -3
  139. data/lib/chef/provider/windows_task.rb +1 -2
  140. data/lib/chef/provider/zypper_repository.rb +2 -2
  141. data/lib/chef/provider_resolver.rb +1 -1
  142. data/lib/chef/providers.rb +1 -0
  143. data/lib/chef/pwsh.rb +64 -0
  144. data/lib/chef/recipe.rb +2 -2
  145. data/lib/chef/resource.rb +2 -2
  146. data/lib/chef/resource/apt_repository.rb +6 -5
  147. data/lib/chef/resource/bff_package.rb +22 -0
  148. data/lib/chef/resource/breakpoint.rb +57 -2
  149. data/lib/chef/resource/build_essential.rb +1 -1
  150. data/lib/chef/resource/cab_package.rb +29 -0
  151. data/lib/chef/resource/chef_client_config.rb +313 -0
  152. data/lib/chef/resource/chef_client_cron.rb +35 -28
  153. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  154. data/lib/chef/resource/chef_client_scheduled_task.rb +24 -21
  155. data/lib/chef/resource/chef_client_systemd_timer.rb +27 -20
  156. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  157. data/lib/chef/resource/chef_gem.rb +10 -10
  158. data/lib/chef/resource/chef_handler.rb +149 -4
  159. data/lib/chef/resource/chef_sleep.rb +3 -3
  160. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  161. data/lib/chef/resource/cookbook_file.rb +2 -2
  162. data/lib/chef/resource/cron/_cron_shared.rb +1 -0
  163. data/lib/chef/resource/cron/cron_d.rb +2 -3
  164. data/lib/chef/resource/dnf_package.rb +2 -2
  165. data/lib/chef/resource/dsc_resource.rb +0 -1
  166. data/lib/chef/resource/dsc_script.rb +2 -2
  167. data/lib/chef/resource/execute.rb +6 -6
  168. data/lib/chef/resource/file.rb +4 -4
  169. data/lib/chef/resource/gem_package.rb +5 -5
  170. data/lib/chef/resource/homebrew_package.rb +3 -3
  171. data/lib/chef/resource/homebrew_update.rb +5 -5
  172. data/lib/chef/resource/hostname.rb +2 -2
  173. data/lib/chef/resource/kernel_module.rb +1 -1
  174. data/lib/chef/resource/launchd.rb +17 -16
  175. data/lib/chef/resource/locale.rb +2 -2
  176. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  177. data/lib/chef/resource/mount.rb +1 -1
  178. data/lib/chef/resource/notify_group.rb +0 -1
  179. data/lib/chef/resource/ohai.rb +46 -3
  180. data/lib/chef/resource/ohai_hint.rb +33 -0
  181. data/lib/chef/resource/openssl_dhparam.rb +27 -5
  182. data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
  183. data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
  184. data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
  185. data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
  186. data/lib/chef/resource/openssl_x509_crl.rb +19 -10
  187. data/lib/chef/resource/openssl_x509_request.rb +14 -16
  188. data/lib/chef/resource/osx_profile.rb +77 -13
  189. data/lib/chef/resource/plist.rb +1 -1
  190. data/lib/chef/resource/powershell_package_source.rb +5 -5
  191. data/lib/chef/resource/powershell_script.rb +7 -1
  192. data/lib/chef/resource/reboot.rb +2 -2
  193. data/lib/chef/resource/remote_file.rb +3 -3
  194. data/lib/chef/resource/rhsm_register.rb +22 -10
  195. data/lib/chef/resource/ruby_block.rb +2 -2
  196. data/lib/chef/resource/scm/subversion.rb +2 -2
  197. data/lib/chef/resource/service.rb +3 -3
  198. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  199. data/lib/chef/resource/support/client.erb +65 -0
  200. data/lib/chef/resource/support/cron.d.erb +1 -1
  201. data/lib/chef/resource/support/cron_access.erb +1 -1
  202. data/lib/chef/resource/support/sudoer.erb +1 -1
  203. data/lib/chef/resource/support/ulimit.erb +1 -1
  204. data/lib/chef/resource/sysctl.rb +1 -5
  205. data/lib/chef/resource/systemd_unit.rb +2 -2
  206. data/lib/chef/resource/template.rb +2 -2
  207. data/lib/chef/resource/timezone.rb +112 -73
  208. data/lib/chef/resource/windows_ad_join.rb +10 -3
  209. data/lib/chef/resource/windows_audit_policy.rb +26 -24
  210. data/lib/chef/resource/windows_certificate.rb +6 -4
  211. data/lib/chef/resource/windows_firewall_profile.rb +22 -20
  212. data/lib/chef/resource/windows_package.rb +28 -5
  213. data/lib/chef/resource/windows_printer.rb +5 -3
  214. data/lib/chef/resource/windows_printer_port.rb +6 -4
  215. data/lib/chef/resource/windows_user_privilege.rb +53 -54
  216. data/lib/chef/resource/windows_workgroup.rb +3 -3
  217. data/lib/chef/resource/yum_package.rb +2 -2
  218. data/lib/chef/resource_reporter.rb +0 -2
  219. data/lib/chef/resources.rb +4 -1
  220. data/lib/chef/run_context.rb +2 -2
  221. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  222. data/lib/chef/run_lock.rb +2 -2
  223. data/lib/chef/search/query.rb +6 -5
  224. data/lib/chef/shell.rb +31 -26
  225. data/lib/chef/shell/ext.rb +11 -11
  226. data/lib/chef/shell/shell_session.rb +2 -2
  227. data/lib/chef/train_transport.rb +5 -104
  228. data/lib/chef/util/backup.rb +1 -1
  229. data/lib/chef/util/diff.rb +3 -3
  230. data/lib/chef/util/powershell/cmdlet.rb +3 -1
  231. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  232. data/lib/chef/util/threaded_job_queue.rb +0 -2
  233. data/lib/chef/version.rb +1 -1
  234. data/lib/chef/win32/crypto.rb +1 -1
  235. data/lib/chef/win32/file.rb +1 -1
  236. data/lib/chef/win32/registry.rb +1 -2
  237. data/lib/chef/win32/unicode.rb +1 -1
  238. data/spec/data/shef-config.rb +1 -1
  239. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  240. data/spec/functional/mixin/powershell_out_spec.rb +9 -1
  241. data/spec/functional/resource/aix_service_spec.rb +2 -2
  242. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  243. data/spec/functional/resource/insserv_spec.rb +1 -1
  244. data/spec/functional/resource/powershell_script_spec.rb +57 -14
  245. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  246. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  247. data/spec/functional/resource/windows_task_spec.rb +13 -13
  248. data/spec/functional/version_spec.rb +3 -3
  249. data/spec/integration/client/client_spec.rb +4 -4
  250. data/spec/integration/client/exit_code_spec.rb +3 -2
  251. data/spec/integration/client/ipv6_spec.rb +1 -1
  252. data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
  253. data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
  254. data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
  255. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  256. data/spec/integration/ohai/ohai_spec.rb +61 -0
  257. data/spec/integration/recipes/remote_directory.rb +1 -1
  258. data/spec/integration/solo/solo_spec.rb +5 -5
  259. data/spec/spec_helper.rb +8 -6
  260. data/spec/stress/win32/file_spec.rb +1 -1
  261. data/spec/support/chef_helpers.rb +2 -2
  262. data/spec/support/matchers/leak.rb +2 -2
  263. data/spec/support/platform_helpers.rb +22 -35
  264. data/spec/support/shared/functional/securable_resource.rb +108 -27
  265. data/spec/support/shared/functional/win32_service.rb +1 -1
  266. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  267. data/spec/tiny_server.rb +0 -1
  268. data/spec/unit/application/client_spec.rb +2 -2
  269. data/spec/unit/application/exit_code_spec.rb +10 -0
  270. data/spec/unit/application_spec.rb +4 -6
  271. data/spec/unit/chef_fs/config_spec.rb +1 -1
  272. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  273. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  274. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  275. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  276. data/spec/unit/cookbook_spec.rb +2 -2
  277. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  278. data/spec/unit/data_collector_spec.rb +6 -117
  279. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  280. data/spec/unit/file_access_control_spec.rb +1 -1
  281. data/spec/unit/knife/bootstrap_spec.rb +6 -6
  282. data/spec/unit/knife/core/ui_spec.rb +1 -0
  283. data/spec/unit/knife/ssh_spec.rb +2 -2
  284. data/spec/unit/lwrp_spec.rb +3 -3
  285. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  286. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  287. data/spec/unit/mixin/powershell_exec_spec.rb +39 -2
  288. data/spec/unit/mixin/powershell_out_spec.rb +14 -0
  289. data/spec/unit/mixin/securable_spec.rb +2 -2
  290. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  291. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  292. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  293. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  294. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  295. data/spec/unit/provider/powershell_script_spec.rb +11 -0
  296. data/spec/unit/provider/route_spec.rb +0 -2
  297. data/spec/unit/recipe_spec.rb +1 -1
  298. data/spec/unit/resource/chef_client_config_spec.rb +137 -0
  299. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  300. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  301. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  302. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  303. data/spec/unit/resource/launchd_spec.rb +8 -0
  304. data/spec/unit/resource/osx_profile_spec.rb +67 -1
  305. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  306. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  307. data/spec/unit/resource/timezone_spec.rb +63 -0
  308. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  309. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  310. data/spec/unit/run_lock_spec.rb +5 -1
  311. data/spec/unit/runner_spec.rb +1 -2
  312. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  313. data/spec/unit/shell/shell_session_spec.rb +35 -64
  314. data/spec/unit/shell_spec.rb +16 -19
  315. data/spec/unit/train_transport_spec.rb +14 -13
  316. data/spec/unit/util/selinux_spec.rb +2 -0
  317. data/tasks/rspec.rb +0 -2
  318. metadata +46 -18
  319. data/lib/chef/dist.rb +0 -68
  320. data/spec/integration/knife/config_get_profile_spec.rb +0 -114
@@ -18,32 +18,10 @@
18
18
  require "spec_helper"
19
19
  require "ostruct"
20
20
 
21
- class TestableShellSession < Shell::ShellSession
22
-
23
- def rebuild_node
24
- nil
25
- end
26
-
27
- def rebuild_collection
28
- nil
29
- end
30
-
31
- def loading
32
- nil
33
- end
34
-
35
- def loading_complete
36
- nil
37
- end
38
-
39
- end
40
-
41
21
  describe Shell::ShellSession do
42
-
43
22
  it "is a singleton object" do
44
23
  expect(Shell::ShellSession).to include(Singleton)
45
24
  end
46
-
47
25
  end
48
26
 
49
27
  describe Shell::ClientSession do
@@ -120,20 +98,10 @@ end
120
98
 
121
99
  describe Shell::StandAloneSession do
122
100
  let(:json_attribs) { { "a" => "b" } }
123
- let(:chef_rest) { double("Chef::ServerAPI") }
124
101
  let(:node) { Chef::Node.new }
125
- let(:events) { Chef::EventDispatch::Dispatcher.new }
126
102
  let(:session) { Shell::StandAloneSession.instance }
127
- let(:client) do
128
- double("Chef::Client.new",
129
- run_ohai: true,
130
- load_node: true,
131
- build_node: true,
132
- register: true,
133
- sync_cookbooks: {})
134
- end
135
103
  let(:recipe) { Chef::Recipe.new(nil, nil, run_context) }
136
- let(:run_context) { Chef::RunContext.new(node, {}, events) }
104
+ let(:run_context) { Chef::RunContext.new(node, {}, Chef::EventDispatch::Dispatcher.new) }
137
105
 
138
106
  before do
139
107
  Chef::Config[:shell_config] = { override_runlist: [Chef::RunList::RunListItem.new("shell::override")] }
@@ -172,6 +140,12 @@ describe Shell::StandAloneSession do
172
140
  end
173
141
 
174
142
  it "passes the shell CLI args to the client" do
143
+ client = double("Chef::Client.new",
144
+ run_ohai: true,
145
+ load_node: true,
146
+ build_node: true,
147
+ register: true,
148
+ sync_cookbooks: {})
175
149
  expect(Chef::Client).to receive(:new).with(json_attribs, Chef::Config[:shell_config]).and_return(client)
176
150
  session.send(:rebuild_node)
177
151
  end
@@ -180,68 +154,65 @@ end
180
154
 
181
155
  describe Shell::SoloLegacySession do
182
156
  let(:json_attribs) { { "a" => "b" } }
157
+ let(:node) { Chef::Node.new }
158
+ let(:session) { Shell::SoloLegacySession.instance }
159
+ let(:recipe) { Chef::Recipe.new(nil, nil, run_context) }
160
+ let(:run_context) { Chef::RunContext.new(node, {}, Chef::EventDispatch::Dispatcher.new) }
183
161
 
184
162
  before do
185
163
  Chef::Config[:shell_config] = { override_runlist: [Chef::RunList::RunListItem.new("shell::override")] }
186
- Chef::Config[:shell_solo] = true
187
- @session = Shell::SoloLegacySession.instance
188
- @node = Chef::Node.new
189
- @events = Chef::EventDispatch::Dispatcher.new
190
- @run_context = @session.run_context = Chef::RunContext.new(@node, {}, @events)
191
- @session.node = @node
192
- @recipe = @session.recipe = Chef::Recipe.new(nil, nil, @run_context)
193
- Shell::Extensions.extend_context_recipe(@recipe)
194
- end
195
-
196
- after do
197
- Chef::Config[:shell_solo] = nil
164
+ Chef::Config[:solo_legacy_shell] = true
165
+ session.node = node
166
+ session.json_configuration = json_attribs
167
+ session.run_context = run_context
168
+ session.recipe = recipe
169
+ Shell::Extensions.extend_context_recipe(recipe)
198
170
  end
199
171
 
200
172
  it "returns a collection based on it's compilation object and the extra recipe provided by chef-shell" do
201
- allow(@session).to receive(:node_built?).and_return(true)
173
+ allow(session).to receive(:node_built?).and_return(true)
202
174
  kitteh = Chef::Resource::Cat.new("keyboard")
203
- @recipe.run_context.resource_collection << kitteh
204
- expect(@session.resource_collection.include?(kitteh)).to be true
175
+ recipe.run_context.resource_collection << kitteh
176
+ expect(session.resource_collection.include?(kitteh)).to be true
205
177
  end
206
178
 
207
179
  it "returns definitions from its compilation object" do
208
- expect(@session.definitions).to eq(@run_context.definitions)
180
+ expect(session.definitions).to eq(run_context.definitions)
209
181
  end
210
182
 
211
183
  it "keeps json attribs and passes them to the node for consumption" do
212
- @session.node_attributes = { "besnard_lakes" => "are_the_dark_horse" }
213
- expect(@session.node["besnard_lakes"]).to eq("are_the_dark_horse")
184
+ session.node_attributes = { "besnard_lakes" => "are_the_dark_horse" }
185
+ expect(session.node["besnard_lakes"]).to eq("are_the_dark_horse")
214
186
  # pending "1) keep attribs in an ivar 2) pass them to the node 3) feed them to the node on reset"
215
187
  end
216
188
 
217
189
  it "generates its resource collection from the compiled cookbooks and the ad hoc recipe" do
218
- allow(@session).to receive(:node_built?).and_return(true)
190
+ allow(session).to receive(:node_built?).and_return(true)
219
191
  kitteh_cat = Chef::Resource::Cat.new("kitteh")
220
- @run_context.resource_collection << kitteh_cat
192
+ run_context.resource_collection << kitteh_cat
221
193
  keyboard_cat = Chef::Resource::Cat.new("keyboard_cat")
222
- @recipe.run_context.resource_collection << keyboard_cat
223
- # @session.rebuild_collection
224
- expect(@session.resource_collection.include?(kitteh_cat)).to be true
225
- expect(@session.resource_collection.include?(keyboard_cat)).to be true
194
+ recipe.run_context.resource_collection << keyboard_cat
195
+ # session.rebuild_collection
196
+ expect(session.resource_collection.include?(kitteh_cat)).to be true
197
+ expect(session.resource_collection.include?(keyboard_cat)).to be true
226
198
  end
227
199
 
228
200
  it "runs chef with a resource collection from the compiled cookbooks" do
229
- allow(@session).to receive(:node_built?).and_return(true)
201
+ allow(session).to receive(:node_built?).and_return(true)
230
202
  chef_runner = double("Chef::Runner.new", converge: :converged)
231
- expect(Chef::Runner).to receive(:new).with(an_instance_of(Chef::RunContext)).and_return(chef_runner)
203
+ expect(Chef::Runner).to receive(:new).with(session.recipe.run_context).and_return(chef_runner)
232
204
 
233
- expect(@recipe.run_chef).to eq(:converged)
205
+ expect(recipe.run_chef).to eq(:converged)
234
206
  end
235
207
 
236
208
  it "passes the shell CLI args to the client" do
237
- @client = double("Chef::Client.new",
209
+ client = double("Chef::Client.new",
238
210
  run_ohai: true,
239
211
  load_node: true,
240
212
  build_node: true,
241
213
  register: true,
242
214
  sync_cookbooks: {})
243
- expect(Chef::Client).to receive(:new).with(json_attribs, Chef::Config[:shell_config]).and_return(@client)
244
- @session.json_configuration = json_attribs
245
- @session.send(:rebuild_node)
215
+ expect(Chef::Client).to receive(:new).with(json_attribs, Chef::Config[:shell_config]).and_return(client)
216
+ session.send(:rebuild_node)
246
217
  end
247
218
  end
@@ -18,26 +18,23 @@
18
18
  require "spec_helper"
19
19
  require "ostruct"
20
20
 
21
- ObjectTestHarness = Proc.new do
22
- extend Shell::Extensions::ObjectCoreExtensions
23
-
24
- def conf=(new_conf)
25
- @conf = new_conf
26
- end
27
-
28
- def conf
29
- @conf
30
- end
21
+ describe Shell do
22
+ let(:object_test_harness) do
23
+ Proc.new do
24
+ extend Shell::Extensions::ObjectCoreExtensions
31
25
 
32
- desc "rspecin'"
33
- def rspec_method; end
34
- end
26
+ def conf=(new_conf)
27
+ @conf = new_conf
28
+ end
35
29
 
36
- class TestJobManager
37
- attr_accessor :jobs
38
- end
30
+ def conf
31
+ @conf
32
+ end
39
33
 
40
- describe Shell do
34
+ desc "rspecin'"
35
+ def rspec_method; end
36
+ end
37
+ end
41
38
 
42
39
  before do
43
40
  Shell.irb_conf = {}
@@ -66,7 +63,7 @@ describe Shell do
66
63
 
67
64
  conf = OpenStruct.new
68
65
  conf.main = Object.new
69
- conf.main.instance_eval(&ObjectTestHarness)
66
+ conf.main.instance_eval(&object_test_harness)
70
67
  Shell.irb_conf[:IRB_RC].call(conf)
71
68
  expect(conf.prompt_c).to eq("chef > ")
72
69
  expect(conf.return_format).to eq(" => %s \n")
@@ -107,7 +104,7 @@ describe Shell do
107
104
 
108
105
  before do
109
106
  @chef_object = Object.new
110
- @chef_object.instance_eval(&ObjectTestHarness)
107
+ @chef_object.instance_eval(&object_test_harness)
111
108
  end
112
109
 
113
110
  it "creates help text for methods with descriptions" do
@@ -19,32 +19,33 @@
19
19
  require "spec_helper"
20
20
 
21
21
  describe Chef::TrainTransport do
22
+ let(:transport) { Chef::TrainTransport.new(Chef::Log) }
23
+
22
24
  describe "load_credentials" do
23
- let(:transport) { Chef::TrainTransport.new }
24
25
  let(:good_credentials) { { "switch.cisco.com" => { "user" => "cisco", "password" => "cisco", "enable_password" => "secret" } } }
25
26
 
26
27
  before do
27
- allow(Chef::TrainTransport).to receive(:parse_credentials_file).and_return(good_credentials)
28
+ allow(transport).to receive(:parse_credentials_file).and_return(good_credentials)
28
29
  end
29
30
 
30
31
  it "matches credentials when they exist" do
31
- expect(Chef::TrainTransport.load_credentials("switch.cisco.com")[:user]).to eq("cisco")
32
- expect(Chef::TrainTransport.load_credentials("switch.cisco.com")[:password]).to eq("cisco")
33
- expect(Chef::TrainTransport.load_credentials("switch.cisco.com")[:enable_password]).to eq("secret")
32
+ expect(transport.load_credentials("switch.cisco.com")[:user]).to eq("cisco")
33
+ expect(transport.load_credentials("switch.cisco.com")[:password]).to eq("cisco")
34
+ expect(transport.load_credentials("switch.cisco.com")[:enable_password]).to eq("secret")
34
35
  end
35
36
 
36
37
  it "returns nil if there is no match" do
37
- expect(Chef::TrainTransport.load_credentials("router.unicorns.com")).to be_nil
38
+ expect(transport.load_credentials("router.unicorns.com")).to be_nil
38
39
  end
39
40
 
40
41
  # [foo.example.org] => {"foo"=>{"example"=>{"org"=>{}}}}
41
42
  # ['foo.example.org'] => {"foo.example.org"=>{}}
42
43
  it "warns if the host has been split by toml" do
43
- allow(Chef::TrainTransport).to receive(:credentials_file_path).and_return("/Users/scotthourglass/.chef/credentials")
44
- allow(Chef::TrainTransport).to receive(:parse_credentials_file).and_return({ "foo" => { "example" => { "org" => {} } } })
44
+ allow(transport).to receive(:credentials_file_path).and_return("/Users/scotthourglass/.chef/credentials")
45
+ allow(transport).to receive(:parse_credentials_file).and_return({ "foo" => { "example" => { "org" => {} } } })
45
46
  expect(Chef::Log).to receive(:warn).with(/as a Hash/)
46
47
  expect(Chef::Log).to receive(:warn).with(/Hostnames must be surrounded by single quotes/)
47
- expect(Chef::TrainTransport.load_credentials("foo.example.org")).to be_nil
48
+ expect(transport.load_credentials("foo.example.org")).to be_nil
48
49
  end
49
50
  end
50
51
 
@@ -60,25 +61,25 @@ describe Chef::TrainTransport do
60
61
 
61
62
  it "returns the path if it exists" do
62
63
  allow(File).to receive(:exist?).with(config_cred_file_path).and_return(true)
63
- expect(Chef::TrainTransport.credentials_file_path).to eq(config_cred_file_path)
64
+ expect(transport.credentials_file_path).to eq(config_cred_file_path)
64
65
  end
65
66
 
66
67
  it "raises an error if it does not exist" do
67
68
  allow(File).to receive(:exist?).and_return(false)
68
- expect { Chef::TrainTransport.credentials_file_path }.to raise_error(ArgumentError, /does not exist/)
69
+ expect { transport.credentials_file_path }.to raise_error(ArgumentError, /does not exist/)
69
70
  end
70
71
  end
71
72
 
72
73
  it "raises an error if the default creds files do not exist" do
73
74
  allow(File).to receive(:exist?).and_return(false)
74
- expect { Chef::TrainTransport.credentials_file_path }.to raise_error(ArgumentError, /does not exist/)
75
+ expect { transport.credentials_file_path }.to raise_error(ArgumentError, /does not exist/)
75
76
  end
76
77
 
77
78
  it "returns the path to the default config file if it exists" do
78
79
  tm_config = double("Config Context", host: "foo.example.org", credentials_file: nil)
79
80
  allow(Chef::Config).to receive(:target_mode).and_return(tm_config)
80
81
  allow(File).to receive(:exist?).with(host_cred_file_path).and_return(true)
81
- expect(Chef::TrainTransport.credentials_file_path).to eq(host_cred_file_path)
82
+ expect(transport.credentials_file_path).to eq(host_cred_file_path)
82
83
  end
83
84
  end
84
85
  end
@@ -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
 
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.4.35
4
+ version: 16.6.14
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-08-18 00:00:00.000000000 Z
11
+ date: 2020-10-14 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.4.35
19
+ version: 16.6.14
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.4.35
26
+ version: 16.6.14
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.4.35
33
+ version: 16.6.14
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.4.35
40
+ version: 16.6.14
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'
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'
373
387
  - !ruby/object:Gem::Dependency
374
388
  name: pastel
375
389
  requirement: !ruby/object:Gem::Requirement
@@ -740,7 +754,6 @@ files:
740
754
  - lib/chef/deprecated.rb
741
755
  - lib/chef/deprecation/warnings.rb
742
756
  - lib/chef/digester.rb
743
- - lib/chef/dist.rb
744
757
  - lib/chef/dsl.rb
745
758
  - lib/chef/dsl/chef_vault.rb
746
759
  - lib/chef/dsl/cheffish.rb
@@ -854,7 +867,10 @@ files:
854
867
  - lib/chef/knife/client_show.rb
855
868
  - lib/chef/knife/config_get.rb
856
869
  - lib/chef/knife/config_get_profile.rb
870
+ - lib/chef/knife/config_list.rb
857
871
  - lib/chef/knife/config_list_profiles.rb
872
+ - lib/chef/knife/config_show.rb
873
+ - lib/chef/knife/config_use.rb
858
874
  - lib/chef/knife/config_use_profile.rb
859
875
  - lib/chef/knife/configure.rb
860
876
  - lib/chef/knife/configure_client.rb
@@ -1096,6 +1112,7 @@ files:
1096
1112
  - lib/chef/provider/lwrp_base.rb
1097
1113
  - lib/chef/provider/mount.rb
1098
1114
  - lib/chef/provider/mount/aix.rb
1115
+ - lib/chef/provider/mount/linux.rb
1099
1116
  - lib/chef/provider/mount/mount.rb
1100
1117
  - lib/chef/provider/mount/solaris.rb
1101
1118
  - lib/chef/provider/mount/windows.rb
@@ -1207,6 +1224,7 @@ files:
1207
1224
  - lib/chef/provider/zypper_repository.rb
1208
1225
  - lib/chef/provider_resolver.rb
1209
1226
  - lib/chef/providers.rb
1227
+ - lib/chef/pwsh.rb
1210
1228
  - lib/chef/recipe.rb
1211
1229
  - lib/chef/request_id.rb
1212
1230
  - lib/chef/reserved_names.rb
@@ -1224,9 +1242,12 @@ files:
1224
1242
  - lib/chef/resource/breakpoint.rb
1225
1243
  - lib/chef/resource/build_essential.rb
1226
1244
  - lib/chef/resource/cab_package.rb
1245
+ - lib/chef/resource/chef_client_config.rb
1227
1246
  - lib/chef/resource/chef_client_cron.rb
1247
+ - lib/chef/resource/chef_client_launchd.rb
1228
1248
  - lib/chef/resource/chef_client_scheduled_task.rb
1229
1249
  - lib/chef/resource/chef_client_systemd_timer.rb
1250
+ - lib/chef/resource/chef_client_trusted_certificate.rb
1230
1251
  - lib/chef/resource/chef_gem.rb
1231
1252
  - lib/chef/resource/chef_handler.rb
1232
1253
  - lib/chef/resource/chef_sleep.rb
@@ -1325,6 +1346,7 @@ files:
1325
1346
  - lib/chef/resource/solaris_package.rb
1326
1347
  - lib/chef/resource/ssh_known_hosts_entry.rb
1327
1348
  - lib/chef/resource/sudo.rb
1349
+ - lib/chef/resource/support/client.erb
1328
1350
  - lib/chef/resource/support/cron.d.erb
1329
1351
  - lib/chef/resource/support/cron_access.erb
1330
1352
  - lib/chef/resource/support/ssh_known_hosts.erb
@@ -1994,10 +2016,9 @@ files:
1994
2016
  - spec/integration/knife/client_list_spec.rb
1995
2017
  - spec/integration/knife/client_show_spec.rb
1996
2018
  - spec/integration/knife/common_options_spec.rb
1997
- - spec/integration/knife/config_get_profile_spec.rb
1998
- - spec/integration/knife/config_get_spec.rb
1999
- - spec/integration/knife/config_list_profiles_spec.rb
2000
- - spec/integration/knife/config_use_profile_spec.rb
2019
+ - spec/integration/knife/config_list_spec.rb
2020
+ - spec/integration/knife/config_show_spec.rb
2021
+ - spec/integration/knife/config_use_spec.rb
2001
2022
  - spec/integration/knife/cookbook_api_ipv6_spec.rb
2002
2023
  - spec/integration/knife/cookbook_bulk_delete_spec.rb
2003
2024
  - spec/integration/knife/cookbook_download_spec.rb
@@ -2043,6 +2064,7 @@ files:
2043
2064
  - spec/integration/knife/serve_spec.rb
2044
2065
  - spec/integration/knife/show_spec.rb
2045
2066
  - spec/integration/knife/upload_spec.rb
2067
+ - spec/integration/ohai/ohai_spec.rb
2046
2068
  - spec/integration/recipes/accumulator_spec.rb
2047
2069
  - spec/integration/recipes/lwrp_inline_resources_spec.rb
2048
2070
  - spec/integration/recipes/lwrp_spec.rb
@@ -2166,6 +2188,7 @@ files:
2166
2188
  - spec/unit/daemon_spec.rb
2167
2189
  - spec/unit/data_bag_item_spec.rb
2168
2190
  - spec/unit/data_bag_spec.rb
2191
+ - spec/unit/data_collector/config_validation_spec.rb
2169
2192
  - spec/unit/data_collector_spec.rb
2170
2193
  - spec/unit/decorator/lazy_array_spec.rb
2171
2194
  - spec/unit/decorator/lazy_spec.rb
@@ -2397,6 +2420,7 @@ files:
2397
2420
  - spec/unit/provider/log_spec.rb
2398
2421
  - spec/unit/provider/mdadm_spec.rb
2399
2422
  - spec/unit/provider/mount/aix_spec.rb
2423
+ - spec/unit/provider/mount/linux_spec.rb
2400
2424
  - spec/unit/provider/mount/mount_spec.rb
2401
2425
  - spec/unit/provider/mount/solaris_spec.rb
2402
2426
  - spec/unit/provider/mount/windows_spec.rb
@@ -2499,9 +2523,12 @@ files:
2499
2523
  - spec/unit/resource/breakpoint_spec.rb
2500
2524
  - spec/unit/resource/build_essential_spec.rb
2501
2525
  - spec/unit/resource/cab_package_spec.rb
2526
+ - spec/unit/resource/chef_client_config_spec.rb
2502
2527
  - spec/unit/resource/chef_client_cron_spec.rb
2528
+ - spec/unit/resource/chef_client_launchd_spec.rb
2503
2529
  - spec/unit/resource/chef_client_scheduled_task_spec.rb
2504
2530
  - spec/unit/resource/chef_client_systemd_timer_spec.rb
2531
+ - spec/unit/resource/chef_client_trusted_certificate_spec.rb
2505
2532
  - spec/unit/resource/chef_gem_spec.rb
2506
2533
  - spec/unit/resource/chef_handler_spec.rb
2507
2534
  - spec/unit/resource/chef_sleep_spec.rb
@@ -2633,6 +2660,7 @@ files:
2633
2660
  - spec/unit/resource/windows_shortcut_spec.rb
2634
2661
  - spec/unit/resource/windows_task_spec.rb
2635
2662
  - spec/unit/resource/windows_uac_spec.rb
2663
+ - spec/unit/resource/windows_user_privilege_spec.rb
2636
2664
  - spec/unit/resource/windows_workgroup_spec.rb
2637
2665
  - spec/unit/resource/yum_package_spec.rb
2638
2666
  - spec/unit/resource/yum_repository_spec.rb
@@ -2713,7 +2741,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2713
2741
  - !ruby/object:Gem::Version
2714
2742
  version: '0'
2715
2743
  requirements: []
2716
- rubygems_version: 3.1.2
2744
+ rubygems_version: 3.1.4
2717
2745
  signing_key:
2718
2746
  specification_version: 4
2719
2747
  summary: A systems integration framework, built to bring the benefits of configuration