chef 16.3.45-universal-mingw32 → 16.5.77-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 (424) 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 +20 -18
  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 +55 -55
  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 +2 -2
  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/gem_installer.rb +1 -1
  36. data/lib/chef/cookbook/synchronizer.rb +2 -2
  37. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  38. data/lib/chef/cookbook_uploader.rb +1 -1
  39. data/lib/chef/data_collector.rb +6 -5
  40. data/lib/chef/data_collector/config_validation.rb +22 -13
  41. data/lib/chef/data_collector/run_end_message.rb +13 -3
  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 +9 -9
  49. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  50. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  51. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  52. data/lib/chef/environment.rb +4 -4
  53. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  54. data/lib/chef/exceptions.rb +5 -5
  55. data/lib/chef/file_access_control/windows.rb +5 -1
  56. data/lib/chef/file_content_management/tempfile.rb +10 -10
  57. data/lib/chef/formatters/doc.rb +7 -6
  58. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  59. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  60. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  61. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  62. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  63. data/lib/chef/formatters/indentable_output_stream.rb +2 -2
  64. data/lib/chef/formatters/minimal.rb +5 -4
  65. data/lib/chef/http.rb +6 -3
  66. data/lib/chef/http/auth_credentials.rb +5 -1
  67. data/lib/chef/http/authenticator.rb +1 -1
  68. data/lib/chef/http/basic_client.rb +4 -2
  69. data/lib/chef/http/decompressor.rb +1 -1
  70. data/lib/chef/http/http_request.rb +7 -5
  71. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  72. data/lib/chef/http/ssl_policies.rb +1 -1
  73. data/lib/chef/json_compat.rb +2 -2
  74. data/lib/chef/knife.rb +4 -4
  75. data/lib/chef/knife/bootstrap.rb +18 -16
  76. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  77. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  78. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  79. data/lib/chef/knife/client_create.rb +3 -3
  80. data/lib/chef/knife/config_get.rb +8 -97
  81. data/lib/chef/knife/config_get_profile.rb +9 -9
  82. data/lib/chef/knife/config_list.rb +139 -0
  83. data/lib/chef/knife/config_list_profiles.rb +8 -98
  84. data/lib/chef/knife/config_show.rb +127 -0
  85. data/lib/chef/knife/config_use.rb +61 -0
  86. data/lib/chef/knife/config_use_profile.rb +9 -24
  87. data/lib/chef/knife/configure.rb +4 -2
  88. data/lib/chef/knife/cookbook_download.rb +1 -1
  89. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  90. data/lib/chef/knife/cookbook_upload.rb +23 -23
  91. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  92. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  93. data/lib/chef/knife/core/hashed_command_loader.rb +2 -2
  94. data/lib/chef/knife/core/object_loader.rb +1 -1
  95. data/lib/chef/knife/core/ui.rb +1 -1
  96. data/lib/chef/knife/core/windows_bootstrap_context.rb +42 -34
  97. data/lib/chef/knife/delete.rb +15 -15
  98. data/lib/chef/knife/exec.rb +4 -4
  99. data/lib/chef/knife/node_policy_set.rb +2 -2
  100. data/lib/chef/knife/node_run_list_add.rb +1 -1
  101. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  102. data/lib/chef/knife/node_run_list_set.rb +1 -1
  103. data/lib/chef/knife/node_show.rb +2 -2
  104. data/lib/chef/knife/role_env_run_list_add.rb +1 -1
  105. data/lib/chef/knife/role_env_run_list_set.rb +1 -1
  106. data/lib/chef/knife/role_run_list_add.rb +1 -1
  107. data/lib/chef/knife/role_run_list_set.rb +1 -1
  108. data/lib/chef/knife/search.rb +0 -1
  109. data/lib/chef/knife/serve.rb +3 -3
  110. data/lib/chef/knife/ssh.rb +24 -9
  111. data/lib/chef/knife/ssl_check.rb +3 -3
  112. data/lib/chef/knife/status.rb +2 -2
  113. data/lib/chef/knife/tag_create.rb +1 -1
  114. data/lib/chef/knife/tag_delete.rb +1 -1
  115. data/lib/chef/knife/user_create.rb +2 -2
  116. data/lib/chef/knife/xargs.rb +19 -19
  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/checksum.rb +0 -1
  122. data/lib/chef/mixin/deep_merge.rb +35 -18
  123. data/lib/chef/mixin/openssl_helper.rb +4 -5
  124. data/lib/chef/mixin/shell_out.rb +1 -1
  125. data/lib/chef/mixin/template.rb +3 -3
  126. data/lib/chef/mixin/uris.rb +4 -2
  127. data/lib/chef/mixin/versioned_api.rb +1 -2
  128. data/lib/chef/mixin/which.rb +1 -1
  129. data/lib/chef/monkey_patches/net_http.rb +4 -4
  130. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  131. data/lib/chef/node/attribute.rb +2 -4
  132. data/lib/chef/node_map.rb +4 -4
  133. data/lib/chef/platform/service_helpers.rb +1 -1
  134. data/lib/chef/policy_builder/dynamic.rb +2 -0
  135. data/lib/chef/policy_builder/policyfile.rb +2 -2
  136. data/lib/chef/property.rb +1 -1
  137. data/lib/chef/provider.rb +1 -5
  138. data/lib/chef/provider/cron/unix.rb +0 -2
  139. data/lib/chef/provider/file.rb +2 -2
  140. data/lib/chef/provider/git.rb +5 -5
  141. data/lib/chef/provider/group.rb +0 -2
  142. data/lib/chef/provider/group/suse.rb +5 -5
  143. data/lib/chef/provider/ifconfig.rb +1 -4
  144. data/lib/chef/provider/launchd.rb +2 -2
  145. data/lib/chef/provider/link.rb +0 -9
  146. data/lib/chef/provider/mount.rb +0 -2
  147. data/lib/chef/provider/mount/linux.rb +63 -0
  148. data/lib/chef/provider/package.rb +0 -2
  149. data/lib/chef/provider/package/dpkg.rb +3 -12
  150. data/lib/chef/provider/package/homebrew.rb +1 -1
  151. data/lib/chef/provider/package/rubygems.rb +22 -19
  152. data/lib/chef/provider/package/snap.rb +1 -2
  153. data/lib/chef/provider/package/windows.rb +2 -2
  154. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -10
  155. data/lib/chef/provider/package/zypper.rb +1 -1
  156. data/lib/chef/provider/powershell_script.rb +21 -5
  157. data/lib/chef/provider/remote_file/content.rb +3 -0
  158. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  159. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  160. data/lib/chef/provider/route.rb +2 -6
  161. data/lib/chef/provider/service/arch.rb +1 -1
  162. data/lib/chef/provider/service/debian.rb +1 -1
  163. data/lib/chef/provider/service/gentoo.rb +2 -2
  164. data/lib/chef/provider/service/macosx.rb +4 -4
  165. data/lib/chef/provider/service/openbsd.rb +1 -4
  166. data/lib/chef/provider/service/redhat.rb +3 -3
  167. data/lib/chef/provider/service/upstart.rb +1 -1
  168. data/lib/chef/provider/service/windows.rb +10 -10
  169. data/lib/chef/provider/systemd_unit.rb +0 -2
  170. data/lib/chef/provider/template/content.rb +1 -0
  171. data/lib/chef/provider/template_finder.rb +2 -10
  172. data/lib/chef/provider/user/dscl.rb +7 -7
  173. data/lib/chef/provider/user/mac.rb +12 -12
  174. data/lib/chef/provider/windows_task.rb +1 -5
  175. data/lib/chef/provider/zypper_repository.rb +2 -3
  176. data/lib/chef/provider_resolver.rb +1 -1
  177. data/lib/chef/providers.rb +1 -1
  178. data/lib/chef/recipe.rb +2 -2
  179. data/lib/chef/resource.rb +8 -12
  180. data/lib/chef/resource/apt_repository.rb +5 -12
  181. data/lib/chef/resource/bff_package.rb +22 -0
  182. data/lib/chef/resource/breakpoint.rb +57 -2
  183. data/lib/chef/resource/build_essential.rb +1 -1
  184. data/lib/chef/resource/cab_package.rb +29 -0
  185. data/lib/chef/resource/chef_client_cron.rb +32 -25
  186. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  187. data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
  188. data/lib/chef/resource/chef_client_systemd_timer.rb +26 -19
  189. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  190. data/lib/chef/resource/chef_gem.rb +10 -10
  191. data/lib/chef/resource/chef_handler.rb +149 -4
  192. data/lib/chef/resource/chef_sleep.rb +2 -2
  193. data/lib/chef/resource/chef_vault_secret.rb +14 -14
  194. data/lib/chef/resource/cookbook_file.rb +2 -2
  195. data/lib/chef/resource/cron/_cron_shared.rb +1 -0
  196. data/lib/chef/resource/cron/cron_d.rb +0 -1
  197. data/lib/chef/resource/dnf_package.rb +2 -2
  198. data/lib/chef/resource/dsc_resource.rb +0 -1
  199. data/lib/chef/resource/dsc_script.rb +2 -2
  200. data/lib/chef/resource/execute.rb +8 -9
  201. data/lib/chef/resource/file.rb +4 -4
  202. data/lib/chef/resource/gem_package.rb +5 -5
  203. data/lib/chef/resource/homebrew_package.rb +3 -3
  204. data/lib/chef/resource/homebrew_update.rb +7 -7
  205. data/lib/chef/resource/hostname.rb +2 -2
  206. data/lib/chef/resource/launchd.rb +2 -1
  207. data/lib/chef/resource/locale.rb +2 -2
  208. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  209. data/lib/chef/resource/notify_group.rb +0 -1
  210. data/lib/chef/resource/ohai.rb +46 -3
  211. data/lib/chef/resource/ohai_hint.rb +33 -0
  212. data/lib/chef/resource/openssl_dhparam.rb +29 -5
  213. data/lib/chef/resource/openssl_ec_private_key.rb +8 -3
  214. data/lib/chef/resource/openssl_ec_public_key.rb +4 -2
  215. data/lib/chef/resource/openssl_rsa_private_key.rb +8 -3
  216. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  217. data/lib/chef/resource/openssl_x509_certificate.rb +38 -35
  218. data/lib/chef/resource/openssl_x509_crl.rb +21 -10
  219. data/lib/chef/resource/openssl_x509_request.rb +37 -36
  220. data/lib/chef/resource/osx_profile.rb +292 -6
  221. data/lib/chef/resource/plist.rb +1 -1
  222. data/lib/chef/resource/powershell_package_source.rb +6 -6
  223. data/lib/chef/resource/powershell_script.rb +24 -30
  224. data/lib/chef/resource/reboot.rb +2 -2
  225. data/lib/chef/resource/remote_file.rb +3 -3
  226. data/lib/chef/resource/rhsm_register.rb +22 -10
  227. data/lib/chef/resource/ruby_block.rb +2 -2
  228. data/lib/chef/resource/scm/subversion.rb +2 -2
  229. data/lib/chef/resource/service.rb +3 -3
  230. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  231. data/lib/chef/resource/sudo.rb +1 -1
  232. data/lib/chef/resource/support/cron.d.erb +1 -1
  233. data/lib/chef/resource/support/cron_access.erb +1 -1
  234. data/lib/chef/resource/support/sudoer.erb +1 -1
  235. data/lib/chef/resource/support/ulimit.erb +1 -1
  236. data/lib/chef/resource/sysctl.rb +6 -10
  237. data/lib/chef/resource/systemd_unit.rb +2 -2
  238. data/lib/chef/resource/template.rb +2 -2
  239. data/lib/chef/resource/timezone.rb +112 -73
  240. data/lib/chef/resource/windows_ad_join.rb +12 -3
  241. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  242. data/lib/chef/resource/windows_auto_run.rb +2 -0
  243. data/lib/chef/resource/windows_certificate.rb +8 -4
  244. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  245. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  246. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  247. data/lib/chef/resource/windows_dns_record.rb +10 -7
  248. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  249. data/lib/chef/resource/windows_feature.rb +2 -0
  250. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  251. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  252. data/lib/chef/resource/windows_firewall_profile.rb +24 -20
  253. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  254. data/lib/chef/resource/windows_font.rb +3 -1
  255. data/lib/chef/resource/windows_package.rb +28 -5
  256. data/lib/chef/resource/windows_pagefile.rb +4 -0
  257. data/lib/chef/resource/windows_printer.rb +22 -21
  258. data/lib/chef/resource/windows_printer_port.rb +20 -17
  259. data/lib/chef/resource/windows_security_policy.rb +2 -0
  260. data/lib/chef/resource/windows_share.rb +5 -3
  261. data/lib/chef/resource/windows_shortcut.rb +2 -0
  262. data/lib/chef/resource/windows_uac.rb +2 -0
  263. data/lib/chef/resource/windows_user_privilege.rb +54 -53
  264. data/lib/chef/resource/windows_workgroup.rb +5 -6
  265. data/lib/chef/resource/yum_package.rb +2 -2
  266. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  267. data/lib/chef/resource_reporter.rb +0 -2
  268. data/lib/chef/resources.rb +3 -1
  269. data/lib/chef/role.rb +2 -2
  270. data/lib/chef/run_context.rb +2 -2
  271. data/lib/chef/run_context/cookbook_compiler.rb +21 -21
  272. data/lib/chef/run_lock.rb +2 -2
  273. data/lib/chef/run_status.rb +2 -6
  274. data/lib/chef/search/query.rb +6 -5
  275. data/lib/chef/shell.rb +32 -27
  276. data/lib/chef/shell/ext.rb +11 -11
  277. data/lib/chef/shell/shell_session.rb +2 -2
  278. data/lib/chef/train_transport.rb +5 -104
  279. data/lib/chef/util/backup.rb +2 -2
  280. data/lib/chef/util/diff.rb +14 -14
  281. data/lib/chef/util/powershell/cmdlet.rb +4 -2
  282. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  283. data/lib/chef/util/threaded_job_queue.rb +0 -2
  284. data/lib/chef/version.rb +1 -1
  285. data/lib/chef/win32/crypto.rb +1 -1
  286. data/lib/chef/win32/file.rb +3 -3
  287. data/lib/chef/win32/file/version_info.rb +5 -5
  288. data/lib/chef/win32/registry.rb +1 -2
  289. data/lib/chef/win32/unicode.rb +1 -1
  290. data/spec/data/shef-config.rb +1 -1
  291. data/spec/data/ssl/chef-rspec.cert +15 -15
  292. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  293. data/spec/functional/resource/aix_service_spec.rb +2 -2
  294. data/spec/functional/resource/aixinit_service_spec.rb +8 -8
  295. data/spec/functional/resource/bff_spec.rb +2 -2
  296. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  297. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  298. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  299. data/spec/functional/resource/group_spec.rb +6 -6
  300. data/spec/functional/resource/insserv_spec.rb +5 -5
  301. data/spec/functional/resource/link_spec.rb +20 -20
  302. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  303. data/spec/functional/resource/rpm_spec.rb +2 -2
  304. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  305. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  306. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  307. data/spec/functional/resource/windows_font_spec.rb +49 -0
  308. data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
  309. data/spec/functional/resource/windows_task_spec.rb +13 -13
  310. data/spec/functional/run_lock_spec.rb +24 -24
  311. data/spec/functional/version_spec.rb +3 -3
  312. data/spec/functional/win32/registry_spec.rb +8 -8
  313. data/spec/functional/win32/service_manager_spec.rb +1 -1
  314. data/spec/integration/client/client_spec.rb +4 -4
  315. data/spec/integration/client/exit_code_spec.rb +3 -2
  316. data/spec/integration/client/ipv6_spec.rb +1 -1
  317. data/spec/integration/knife/common_options_spec.rb +12 -12
  318. data/spec/integration/knife/config_list_spec.rb +220 -0
  319. data/spec/integration/knife/config_show_spec.rb +192 -0
  320. data/spec/integration/knife/config_use_spec.rb +198 -0
  321. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  322. data/spec/integration/knife/diff_spec.rb +3 -1
  323. data/spec/integration/knife/download_spec.rb +3 -1
  324. data/spec/integration/knife/serve_spec.rb +5 -5
  325. data/spec/integration/knife/upload_spec.rb +3 -1
  326. data/spec/integration/ohai/ohai_spec.rb +61 -0
  327. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  328. data/spec/integration/recipes/remote_directory.rb +1 -1
  329. data/spec/integration/solo/solo_spec.rb +5 -5
  330. data/spec/spec_helper.rb +12 -11
  331. data/spec/stress/win32/file_spec.rb +1 -1
  332. data/spec/support/chef_helpers.rb +2 -2
  333. data/spec/support/matchers/leak.rb +2 -2
  334. data/spec/support/platform_helpers.rb +17 -35
  335. data/spec/support/platforms/win32/spec_service.rb +1 -1
  336. data/spec/support/shared/functional/directory_resource.rb +1 -1
  337. data/spec/support/shared/functional/execute_resource.rb +1 -1
  338. data/spec/support/shared/functional/file_resource.rb +20 -20
  339. data/spec/support/shared/functional/securable_resource.rb +108 -27
  340. data/spec/support/shared/functional/win32_service.rb +2 -2
  341. data/spec/support/shared/functional/windows_script.rb +3 -3
  342. data/spec/support/shared/integration/integration_helper.rb +22 -52
  343. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  344. data/spec/support/shared/unit/script_resource.rb +6 -20
  345. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  346. data/spec/tiny_server.rb +0 -1
  347. data/spec/unit/application/client_spec.rb +2 -2
  348. data/spec/unit/application/exit_code_spec.rb +10 -0
  349. data/spec/unit/application_spec.rb +4 -6
  350. data/spec/unit/chef_fs/config_spec.rb +1 -1
  351. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  352. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  353. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  354. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  355. data/spec/unit/cookbook_spec.rb +2 -2
  356. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  357. data/spec/unit/data_collector_spec.rb +28 -117
  358. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  359. data/spec/unit/environment_spec.rb +7 -7
  360. data/spec/unit/file_access_control_spec.rb +1 -1
  361. data/spec/unit/knife/bootstrap_spec.rb +20 -20
  362. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  363. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  364. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  365. data/spec/unit/knife/core/ui_spec.rb +1 -0
  366. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  367. data/spec/unit/knife/ssh_spec.rb +2 -2
  368. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  369. data/spec/unit/lwrp_spec.rb +3 -3
  370. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  371. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  372. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  373. data/spec/unit/mixin/securable_spec.rb +2 -2
  374. data/spec/unit/mixin/template_spec.rb +30 -30
  375. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  376. data/spec/unit/node/immutable_collections_spec.rb +8 -4
  377. data/spec/unit/node_spec.rb +5 -5
  378. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  379. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  380. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  381. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  382. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  383. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  384. data/spec/unit/provider/route_spec.rb +0 -2
  385. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  386. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  387. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  388. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  389. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  390. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  391. data/spec/unit/provider_resolver_spec.rb +6 -6
  392. data/spec/unit/recipe_spec.rb +1 -1
  393. data/spec/unit/resource/batch_spec.rb +6 -6
  394. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  395. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  396. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  397. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  398. data/spec/unit/resource/execute_spec.rb +113 -118
  399. data/spec/unit/resource/launchd_spec.rb +8 -0
  400. data/spec/unit/resource/osx_profile_spec.rb +299 -0
  401. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  402. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  403. data/spec/unit/resource/script_spec.rb +6 -1
  404. data/spec/unit/resource/timezone_spec.rb +63 -0
  405. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  406. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  407. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  408. data/spec/unit/role_spec.rb +11 -11
  409. data/spec/unit/run_lock_spec.rb +5 -1
  410. data/spec/unit/runner_spec.rb +1 -2
  411. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  412. data/spec/unit/shell/shell_session_spec.rb +35 -64
  413. data/spec/unit/shell_spec.rb +16 -19
  414. data/spec/unit/train_transport_spec.rb +14 -13
  415. data/spec/unit/util/selinux_spec.rb +2 -0
  416. data/tasks/rspec.rb +1 -3
  417. metadata +42 -33
  418. data/lib/chef/dist.rb +0 -68
  419. data/lib/chef/provider/osx_profile.rb +0 -255
  420. data/spec/integration/knife/config_get_profile_spec.rb +0 -113
  421. data/spec/integration/knife/config_get_spec.rb +0 -191
  422. data/spec/integration/knife/config_list_profiles_spec.rb +0 -218
  423. data/spec/integration/knife/config_use_profile_spec.rb +0 -154
  424. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -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
@@ -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 %>
@@ -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)"
@@ -18,110 +18,21 @@
18
18
  #
19
19
 
20
20
  require_relative "../knife"
21
+ require_relative "./config_show"
21
22
 
22
23
  class Chef
23
24
  class Knife
24
- class ConfigGet < Knife
25
- banner "knife config get [OPTION...] (options)\nDisplays the value of Chef::Config[OPTION] (or all config values)"
25
+ class ConfigGet < ConfigShow
26
26
 
27
- option :all,
28
- short: "-a",
29
- long: "--all",
30
- description: "Include options that are not set in the configuration.",
31
- default: false
27
+ # Handle the subclassing (knife doesn't do this :()
28
+ dependency_loaders.concat(superclass.dependency_loaders)
32
29
 
33
- option :raw,
34
- short: "-r",
35
- long: "--raw",
36
- description: "Display a each value with no formatting.",
37
- default: false
30
+ banner "knife config get [OPTION...] (options)\nDisplays the value of Chef::Config[OPTION] (or all config values)"
31
+ category "deprecated"
38
32
 
39
33
  def run
40
- if config[:format] == "summary" && !config[:raw]
41
- # If using the default, human-readable output, also show which config files are being loaded.
42
- # Some of this is a bit hacky since it duplicates
43
- wcl = self.class.config_loader
44
- if wcl.credentials_found
45
- loading_from("credentials", ChefConfig::PathHelper.home(".chef", "credentials"))
46
- end
47
- if wcl.config_location
48
- loading_from("configuration", wcl.config_location)
49
- end
50
-
51
- if Chef::Config[:config_d_dir]
52
- wcl.find_dot_d(Chef::Config[:config_d_dir]).each do |path|
53
- loading_from(".d/ configuration", path)
54
- end
55
- end
56
- end
57
-
58
- # Dump the whole config, including defaults is --all was given.
59
- config_data = Chef::Config.save(config[:all])
60
- # Two special cases, these are set during knife startup but we don't usually care about them.
61
- unless config[:all]
62
- config_data.delete(:color)
63
- # Only keep these if true, false is much less important because it's the default.
64
- config_data.delete(:local_mode) unless config_data[:local_mode]
65
- config_data.delete(:enforce_default_paths) unless config_data[:enforce_default_paths]
66
- config_data.delete(:enforce_path_sanity) unless config_data[:enforce_path_sanity]
67
- end
68
-
69
- # Extract the data to show.
70
- output_data = {}
71
- if @name_args.empty?
72
- output_data = config_data
73
- else
74
- @name_args.each do |filter|
75
- if filter =~ %r{^/(.*)/(i?)$}
76
- # It's a regex.
77
- filter_re = Regexp.new($1, $2 ? Regexp::IGNORECASE : 0)
78
- config_data.each do |key, value|
79
- output_data[key] = value if key.to_s&.match?(filter_re)
80
- end
81
- else
82
- # It's a dotted path string.
83
- filter_parts = filter.split(/\./)
84
- extract = lambda do |memo, filter_part|
85
- memo.is_a?(Hash) ? memo[filter_part.to_sym] : nil
86
- end
87
- # Check against both config_data and all of the data, so that even
88
- # in non-all mode, if you ask for a key that isn't in the non-all
89
- # data, it will check against the broader set.
90
- output_data[filter] = filter_parts.inject(config_data, &extract) || filter_parts.inject(Chef::Config.save(true), &extract)
91
- end
92
- end
93
- end
94
-
95
- # Fix up some values.
96
- output_data.each do |key, value|
97
- if value == STDOUT
98
- output_data[key] = "STDOUT"
99
- elsif value == STDERR
100
- output_data[key] = "STDERR"
101
- end
102
- end
103
-
104
- # Show the data.
105
- if config[:raw]
106
- output_data.each_value do |value|
107
- ui.msg(value)
108
- end
109
- else
110
- ui.output(output_data)
111
- end
112
- end
113
-
114
- private
115
-
116
- # Display a banner about loading from a config file.
117
- #
118
- # @api private
119
- # @param type_of_file [String] Description of the file for the banner.
120
- # @param path [String] Path of the file.
121
- # @return [nil]
122
- def loading_from(type_of_file, path)
123
- path = Pathname.new(path).realpath
124
- ui.msg(ui.color("Loading from #{type_of_file} file #{path}", :yellow))
34
+ Chef::Log.warn("knife config get has been deprecated in favor of knife config show. This will be removed in the major release version!")
35
+ super
125
36
  end
126
37
  end
127
38
  end
@@ -16,22 +16,22 @@
16
16
  #
17
17
 
18
18
  require_relative "../knife"
19
+ require_relative "./config_use"
19
20
 
20
21
  class Chef
21
22
  class Knife
22
- class ConfigGetProfile < Knife
23
- banner "knife config get-profile"
23
+ class ConfigGetProfile < ConfigUse
24
24
 
25
- # Disable normal config loading since this shouldn't fail if the profile
26
- # doesn't exist of the config is otherwise corrupted.
27
- def configure_chef
28
- apply_computed_config
29
- end
25
+ # Handle the subclassing (knife doesn't do this :()
26
+ dependency_loaders.concat(superclass.dependency_loaders)
27
+
28
+ banner "knife config get-profile"
29
+ category "deprecated"
30
30
 
31
31
  def run
32
- ui.msg(self.class.config_loader.credentials_profile(config[:profile]))
32
+ Chef::Log.warn("knife config get-profiles has been deprecated in favor of knife config use. This will be removed in the major release version!")
33
+ super
33
34
  end
34
-
35
35
  end
36
36
  end
37
37
  end
@@ -0,0 +1,139 @@
1
+ #
2
+ # Copyright:: Copyright (c) 2018, Noah Kantrowitz
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require_relative "../knife"
19
+
20
+ class Chef
21
+ class Knife
22
+ class ConfigList < Knife
23
+ banner "knife config list (options)"
24
+
25
+ TABLE_HEADER ||= [" Profile", "Client", "Key", "Server"].freeze
26
+
27
+ deps do
28
+ require_relative "../workstation_config_loader"
29
+ require "tty-screen" unless defined?(TTY::Screen)
30
+ require "tty-table" unless defined?(TTY::Table)
31
+ end
32
+
33
+ option :ignore_knife_rb,
34
+ short: "-i",
35
+ long: "--ignore-knife-rb",
36
+ description: "Ignore the current config.rb/knife.rb configuration.",
37
+ default: false
38
+
39
+ def configure_chef
40
+ apply_computed_config
41
+ end
42
+
43
+ def run
44
+ credentials_data = self.class.config_loader.parse_credentials_file
45
+ if credentials_data.nil? || credentials_data.empty?
46
+ # Should this just show the ambient knife.rb config as "default" instead?
47
+ ui.fatal("No profiles found, #{self.class.config_loader.credentials_file_path} does not exist or is empty")
48
+ exit 1
49
+ end
50
+
51
+ current_profile = self.class.config_loader.credentials_profile(config[:profile])
52
+ profiles = credentials_data.keys.map do |profile|
53
+ if config[:ignore_knife_rb]
54
+ # Don't do any fancy loading nonsense, just the raw data.
55
+ profile_data = credentials_data[profile]
56
+ {
57
+ profile: profile,
58
+ active: profile == current_profile,
59
+ client_name: profile_data["client_name"] || profile_data["node_name"],
60
+ client_key: profile_data["client_key"],
61
+ server_url: profile_data["chef_server_url"],
62
+ }
63
+ else
64
+ # Fancy loading nonsense so we get what the actual config would be.
65
+ # Note that this modifies the global config, after this, all bets are
66
+ # off as to whats in the config.
67
+ Chef::Config.reset
68
+ wcl = Chef::WorkstationConfigLoader.new(nil, Chef::Log, profile: profile)
69
+ wcl.load
70
+ {
71
+ profile: profile,
72
+ active: profile == current_profile,
73
+ client_name: Chef::Config[:node_name],
74
+ client_key: Chef::Config[:client_key],
75
+ server_url: Chef::Config[:chef_server_url],
76
+ }
77
+ end
78
+ end
79
+
80
+ # Try to reset the config.
81
+ unless config[:ignore_knife_rb]
82
+ Chef::Config.reset
83
+ apply_computed_config
84
+ end
85
+
86
+ if ui.interchange?
87
+ # Machine-readable output.
88
+ ui.output(profiles)
89
+ else
90
+ # Table output.
91
+ ui.output(render_table(profiles))
92
+ end
93
+ end
94
+
95
+ private
96
+
97
+ def render_table(profiles, padding: 1)
98
+ rows = []
99
+ # Render the data to a 2D array that will be used for the table.
100
+ profiles.each do |profile|
101
+ # Replace the home dir in the client key path with ~.
102
+ profile[:client_key] = profile[:client_key].to_s.gsub(/^#{Regexp.escape(Dir.home)}/, "~") if profile[:client_key]
103
+ profile[:profile] = "#{profile[:active] ? "*" : " "}#{profile[:profile]}"
104
+ rows << profile.values_at(:profile, :client_name, :client_key, :server_url)
105
+ end
106
+
107
+ table = TTY::Table.new(header: TABLE_HEADER, rows: rows)
108
+
109
+ # Rotate the table to vertical if the screen width is less than table width.
110
+ if table.width > TTY::Screen.width
111
+ table.orientation = :vertical
112
+ table.rotate
113
+ # Add a new line after each profile record.
114
+ table.render do |renderer|
115
+ renderer.border do
116
+ separator ->(row) { (row + 1) % TABLE_HEADER.size == 0 }
117
+ end
118
+ # Remove the leading space added of the first column.
119
+ renderer.filter = Proc.new do |val, row_index, col_index|
120
+ if col_index == 1 || (row_index) % TABLE_HEADER.size == 0
121
+ val.strip
122
+ else
123
+ val
124
+ end
125
+ end
126
+ end
127
+ else
128
+ table.render do |renderer|
129
+ renderer.border do
130
+ mid "-"
131
+ end
132
+ renderer.padding = [0, padding, 0, 0] # pad right with 2 characters
133
+ end
134
+ end
135
+ end
136
+
137
+ end
138
+ end
139
+ end
@@ -16,112 +16,22 @@
16
16
  #
17
17
 
18
18
  require_relative "../knife"
19
+ require_relative "./config_list"
19
20
 
20
21
  class Chef
21
22
  class Knife
22
- class ConfigListProfiles < Knife
23
- banner "knife config list-profiles (options)"
24
-
25
- deps do
26
- require_relative "../workstation_config_loader"
27
- end
23
+ class ConfigListProfiles < ConfigList
28
24
 
29
- option :ignore_knife_rb,
30
- short: "-i",
31
- long: "--ignore-knife-rb",
32
- description: "Ignore the current config.rb/knife.rb configuration.",
33
- default: false
25
+ # Handle the subclassing (knife doesn't do this :()
26
+ dependency_loaders.concat(superclass.dependency_loaders)
34
27
 
35
- def configure_chef
36
- apply_computed_config
37
- end
28
+ banner "knife config list-profiles (options)"
29
+ category "deprecated"
38
30
 
39
31
  def run
40
- credentials_data = self.class.config_loader.parse_credentials_file
41
- if credentials_data.nil? || credentials_data.empty?
42
- # Should this just show the ambient knife.rb config as "default" instead?
43
- ui.fatal("No profiles found, #{self.class.config_loader.credentials_file_path} does not exist or is empty")
44
- exit 1
45
- end
46
-
47
- current_profile = self.class.config_loader.credentials_profile(config[:profile])
48
- profiles = credentials_data.keys.map do |profile|
49
- if config[:ignore_knife_rb]
50
- # Don't do any fancy loading nonsense, just the raw data.
51
- profile_data = credentials_data[profile]
52
- {
53
- profile: profile,
54
- active: profile == current_profile,
55
- client_name: profile_data["client_name"] || profile_data["node_name"],
56
- client_key: profile_data["client_key"],
57
- server_url: profile_data["chef_server_url"],
58
- }
59
- else
60
- # Fancy loading nonsense so we get what the actual config would be.
61
- # Note that this modifies the global config, after this, all bets are
62
- # off as to whats in the config.
63
- Chef::Config.reset
64
- wcl = Chef::WorkstationConfigLoader.new(nil, Chef::Log, profile: profile)
65
- wcl.load
66
- {
67
- profile: profile,
68
- active: profile == current_profile,
69
- client_name: Chef::Config[:node_name],
70
- client_key: Chef::Config[:client_key],
71
- server_url: Chef::Config[:chef_server_url],
72
- }
73
- end
74
- end
75
-
76
- # Try to reset the config.
77
- unless config[:ignore_knife_rb]
78
- Chef::Config.reset
79
- apply_computed_config
80
- end
81
-
82
- if ui.interchange?
83
- # Machine-readable output.
84
- ui.output(profiles)
85
- else
86
- # Table output.
87
- ui.output(render_table(profiles))
88
- end
89
- end
90
-
91
- private
92
-
93
- def render_table(profiles, padding: 2)
94
- # Replace the home dir in the client key path with ~.
95
- profiles.each do |profile|
96
- profile[:client_key] = profile[:client_key].to_s.gsub(/^#{Regexp.escape(Dir.home)}/, "~") if profile[:client_key]
97
- end
98
- # Render the data to a 2D array that will be used for the table.
99
- table_data = [["", "Profile", "Client", "Key", "Server"]] + profiles.map do |profile|
100
- [profile[:active] ? "*" : ""] + profile.values_at(:profile, :client_name, :client_key, :server_url).map(&:to_s)
101
- end
102
- # Compute column widths.
103
- column_widths = Array.new(table_data.first.length) do |i|
104
- table_data.map { |row| row[i].length + padding }.max
105
- end
106
- # Special case, the first col gets no padding (because indicator) and last
107
- # get no padding because last.
108
- column_widths[0] -= padding
109
- column_widths[-1] -= padding
110
- # Build the format string for each row.
111
- format_string = column_widths.map { |w| "%-#{w}.#{w}s" }.join("")
112
- format_string << "\n"
113
- # Print the header row and a separator.
114
- table = ui.color(format_string % table_data.first, :green)
115
- table << "-" * column_widths.sum
116
- table << "\n"
117
- # Print the rest of the table.
118
- table_data.drop(1).each do |row|
119
- table << format_string % row
120
- end
121
- # Trim the last newline because ui.output adds one.
122
- table.chomp!
32
+ Chef::Log.warn("knife config list-profiles has been deprecated in favor of knife config list. This will be removed in the major release version!")
33
+ super
123
34
  end
124
-
125
35
  end
126
36
  end
127
37
  end