chef 16.16.13 → 17.0.242

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 (638) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -13
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +6 -8
  7. data/lib/chef/application/base.rb +1 -1
  8. data/lib/chef/applications.rb +0 -1
  9. data/lib/chef/chef_fs/command_line.rb +5 -2
  10. data/lib/chef/chef_fs/file_system.rb +9 -10
  11. data/lib/chef/client.rb +2 -2
  12. data/lib/chef/compliance/default_attributes.rb +4 -3
  13. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  14. data/lib/chef/compliance/reporter/automate.rb +17 -7
  15. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  16. data/lib/chef/compliance/reporter/cli.rb +77 -0
  17. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  18. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  19. data/lib/chef/compliance/runner.rb +65 -27
  20. data/lib/chef/cookbook/gem_installer.rb +1 -5
  21. data/lib/chef/cookbook/synchronizer.rb +3 -5
  22. data/lib/chef/cookbook_loader.rb +2 -4
  23. data/lib/chef/cookbook_uploader.rb +0 -1
  24. data/lib/chef/cookbook_version.rb +4 -26
  25. data/lib/chef/data_bag_item.rb +11 -2
  26. data/lib/chef/data_collector/run_end_message.rb +1 -1
  27. data/lib/chef/delayed_evaluator.rb +4 -0
  28. data/lib/chef/deprecated.rb +6 -12
  29. data/lib/chef/dsl/chef_vault.rb +6 -6
  30. data/lib/chef/dsl/reboot_pending.rb +1 -2
  31. data/lib/chef/exceptions.rb +0 -3
  32. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  33. data/lib/chef/formatters/error_mapper.rb +2 -2
  34. data/lib/chef/group.rb +75 -0
  35. data/lib/chef/http.rb +5 -5
  36. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  37. data/lib/chef/node/attribute.rb +6 -4
  38. data/lib/chef/node/immutable_collections.rb +13 -0
  39. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  40. data/lib/chef/node.rb +19 -20
  41. data/lib/chef/org.rb +3 -2
  42. data/lib/chef/policy_builder/policyfile.rb +0 -5
  43. data/lib/chef/property.rb +18 -0
  44. data/lib/chef/provider/cron.rb +1 -1
  45. data/lib/chef/provider/execute.rb +2 -1
  46. data/lib/chef/provider/file.rb +1 -1
  47. data/lib/chef/provider/git.rb +5 -7
  48. data/lib/chef/provider/group/dscl.rb +1 -1
  49. data/lib/chef/provider/group/groupadd.rb +3 -3
  50. data/lib/chef/provider/group/groupmod.rb +3 -3
  51. data/lib/chef/provider/group/pw.rb +3 -3
  52. data/lib/chef/provider/ifconfig.rb +2 -2
  53. data/lib/chef/provider/link.rb +2 -2
  54. data/lib/chef/provider/mount/aix.rb +3 -3
  55. data/lib/chef/provider/mount/mount.rb +5 -5
  56. data/lib/chef/provider/mount/windows.rb +1 -1
  57. data/lib/chef/provider/mount.rb +5 -5
  58. data/lib/chef/provider/package/apt.rb +27 -1
  59. data/lib/chef/provider/package/deb.rb +3 -3
  60. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  61. data/lib/chef/provider/package/portage.rb +2 -2
  62. data/lib/chef/provider/package/powershell.rb +0 -5
  63. data/lib/chef/provider/package/rubygems.rb +9 -15
  64. data/lib/chef/provider/package/windows.rb +2 -4
  65. data/lib/chef/provider/package/yum/yum_helper.py +1 -1
  66. data/lib/chef/provider/package.rb +17 -21
  67. data/lib/chef/provider/route.rb +2 -2
  68. data/lib/chef/provider/service/aixinit.rb +1 -1
  69. data/lib/chef/provider/service/debian.rb +1 -1
  70. data/lib/chef/provider/service/freebsd.rb +15 -21
  71. data/lib/chef/provider/service/macosx.rb +4 -4
  72. data/lib/chef/provider/service/systemd.rb +43 -14
  73. data/lib/chef/provider/service/upstart.rb +2 -13
  74. data/lib/chef/provider/service/windows.rb +12 -12
  75. data/lib/chef/provider/service.rb +6 -6
  76. data/lib/chef/provider/subversion.rb +10 -12
  77. data/lib/chef/provider/systemd_unit.rb +36 -10
  78. data/lib/chef/provider/template/content.rb +3 -7
  79. data/lib/chef/provider/user/dscl.rb +1 -1
  80. data/lib/chef/provider/user/mac.rb +17 -20
  81. data/lib/chef/provider/user/pw.rb +1 -1
  82. data/lib/chef/provider/user/windows.rb +1 -1
  83. data/lib/chef/provider/user.rb +2 -2
  84. data/lib/chef/provider/zypper_repository.rb +2 -2
  85. data/lib/chef/provider.rb +1 -1
  86. data/lib/chef/providers.rb +0 -1
  87. data/lib/chef/resource/alternatives.rb +6 -6
  88. data/lib/chef/resource/apt_package.rb +1 -1
  89. data/lib/chef/resource/apt_preference.rb +2 -2
  90. data/lib/chef/resource/apt_repository.rb +6 -6
  91. data/lib/chef/resource/apt_update.rb +3 -2
  92. data/lib/chef/resource/archive_file.rb +2 -3
  93. data/lib/chef/resource/breakpoint.rb +1 -1
  94. data/lib/chef/resource/build_essential.rb +2 -6
  95. data/lib/chef/resource/chef_client_config.rb +2 -2
  96. data/lib/chef/resource/chef_client_cron.rb +4 -4
  97. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  98. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  99. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  100. data/lib/chef/resource/chef_handler.rb +3 -7
  101. data/lib/chef/resource/chef_sleep.rb +1 -1
  102. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  103. data/lib/chef/resource/chocolatey_config.rb +2 -6
  104. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  105. data/lib/chef/resource/chocolatey_source.rb +4 -10
  106. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  107. data/lib/chef/resource/cron_access.rb +2 -4
  108. data/lib/chef/resource/dmg_package.rb +6 -10
  109. data/lib/chef/resource/dpkg_package.rb +1 -1
  110. data/lib/chef/resource/execute.rb +6 -1
  111. data/lib/chef/resource/file.rb +1 -1
  112. data/lib/chef/resource/group.rb +2 -2
  113. data/lib/chef/resource/homebrew_cask.rb +5 -15
  114. data/lib/chef/resource/homebrew_tap.rb +2 -6
  115. data/lib/chef/resource/hostname.rb +21 -17
  116. data/lib/chef/resource/http_request.rb +1 -1
  117. data/lib/chef/resource/kernel_module.rb +6 -17
  118. data/lib/chef/resource/locale.rb +2 -3
  119. data/lib/chef/resource/lwrp_base.rb +4 -0
  120. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  121. data/lib/chef/resource/mdadm.rb +53 -7
  122. data/lib/chef/resource/mount.rb +3 -2
  123. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  124. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  125. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  126. data/lib/chef/resource/plist.rb +7 -7
  127. data/lib/chef/resource/powershell_script.rb +1 -1
  128. data/lib/chef/resource/remote_file.rb +1 -1
  129. data/lib/chef/resource/rhsm_errata.rb +16 -1
  130. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  131. data/lib/chef/resource/rhsm_register.rb +12 -6
  132. data/lib/chef/resource/rhsm_repo.rb +2 -6
  133. data/lib/chef/resource/rhsm_subscription.rb +7 -11
  134. data/lib/chef/resource/scm/git.rb +1 -1
  135. data/lib/chef/resource/sudo.rb +6 -6
  136. data/lib/chef/resource/support/client.erb +0 -6
  137. data/lib/chef/resource/sysctl.rb +2 -6
  138. data/lib/chef/resource/systemd_unit.rb +3 -3
  139. data/lib/chef/resource/template.rb +1 -1
  140. data/lib/chef/resource/timezone.rb +1 -3
  141. data/lib/chef/resource/user/mac_user.rb +1 -1
  142. data/lib/chef/resource/user_ulimit.rb +2 -3
  143. data/lib/chef/resource/windows_ad_join.rb +2 -6
  144. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  145. data/lib/chef/resource/windows_auto_run.rb +2 -5
  146. data/lib/chef/resource/windows_certificate.rb +207 -73
  147. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  148. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  149. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  150. data/lib/chef/resource/windows_dns_record.rb +2 -6
  151. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  152. data/lib/chef/resource/windows_env.rb +5 -4
  153. data/lib/chef/resource/windows_feature.rb +3 -9
  154. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  155. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  156. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  157. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  158. data/lib/chef/resource/windows_font.rb +2 -4
  159. data/lib/chef/resource/windows_pagefile.rb +2 -6
  160. data/lib/chef/resource/windows_path.rb +2 -2
  161. data/lib/chef/resource/windows_printer.rb +4 -4
  162. data/lib/chef/resource/windows_printer_port.rb +6 -6
  163. data/lib/chef/resource/windows_security_policy.rb +9 -12
  164. data/lib/chef/resource/windows_share.rb +14 -21
  165. data/lib/chef/resource/windows_shortcut.rb +4 -6
  166. data/lib/chef/resource/windows_task.rb +17 -5
  167. data/lib/chef/resource/windows_uac.rb +2 -4
  168. data/lib/chef/resource/windows_user_privilege.rb +5 -5
  169. data/lib/chef/resource/windows_workgroup.rb +1 -2
  170. data/lib/chef/resources.rb +0 -1
  171. data/lib/chef/user.rb +0 -1
  172. data/lib/chef/user_v1.rb +3 -4
  173. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  174. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  175. data/lib/chef/version.rb +1 -1
  176. data/lib/chef/win32/api.rb +2 -9
  177. data/lib/chef/win32/registry.rb +4 -2
  178. data/lib/chef/win32/version.rb +1 -2
  179. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  180. data/spec/data/lwrp/resources/bar.rb +2 -0
  181. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  182. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  183. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  184. data/spec/data/lwrp/resources/foo.rb +2 -0
  185. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  186. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  187. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  188. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  189. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  190. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  191. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  192. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  193. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  194. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  195. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  196. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  197. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  198. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  199. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  200. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  201. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  202. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  203. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  204. data/spec/functional/resource/apt_package_spec.rb +1 -1
  205. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  206. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  207. data/spec/functional/resource/group_spec.rb +1 -5
  208. data/spec/functional/resource/link_spec.rb +0 -8
  209. data/spec/functional/resource/registry_spec.rb +8 -8
  210. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  211. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  212. data/spec/functional/version_spec.rb +1 -1
  213. data/spec/functional/win32/registry_spec.rb +1 -1
  214. data/spec/integration/client/client_spec.rb +5 -2
  215. data/spec/integration/client/exit_code_spec.rb +1 -1
  216. data/spec/integration/client/ipv6_spec.rb +1 -1
  217. data/spec/integration/compliance/compliance_spec.rb +1 -1
  218. data/spec/integration/ohai/ohai_spec.rb +7 -6
  219. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  220. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  221. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  222. data/spec/integration/recipes/notifies_spec.rb +15 -1
  223. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  224. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  225. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  226. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  227. data/spec/spec_helper.rb +10 -13
  228. data/spec/support/chef_helpers.rb +0 -16
  229. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  230. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  231. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  232. data/spec/support/matchers/leak.rb +7 -9
  233. data/spec/support/platform_helpers.rb +1 -8
  234. data/spec/support/shared/integration/integration_helper.rb +0 -1
  235. data/spec/support/shared/unit/script_resource.rb +2 -2
  236. data/spec/unit/application/solo_spec.rb +2 -2
  237. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  238. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  239. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  240. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  241. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  242. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  243. data/spec/unit/compliance/runner_spec.rb +30 -4
  244. data/spec/unit/cookbook_version_spec.rb +0 -52
  245. data/spec/unit/data_bag_item_spec.rb +1 -6
  246. data/spec/unit/data_collector_spec.rb +1 -47
  247. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  248. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  249. data/spec/unit/lwrp_spec.rb +1 -1
  250. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  251. data/spec/unit/node/attribute_spec.rb +1 -1
  252. data/spec/unit/node_spec.rb +78 -0
  253. data/spec/unit/org_group_spec.rb +45 -0
  254. data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
  255. data/spec/unit/property_spec.rb +23 -22
  256. data/spec/unit/provider/cron_spec.rb +1 -1
  257. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  258. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  259. data/spec/unit/provider/group/pw_spec.rb +2 -2
  260. data/spec/unit/provider/group_spec.rb +1 -1
  261. data/spec/unit/provider/package/apt_spec.rb +84 -18
  262. data/spec/unit/provider/package/deb_spec.rb +3 -3
  263. data/spec/unit/provider/package/powershell_spec.rb +12 -74
  264. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  265. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  266. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  267. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  268. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  269. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  270. data/spec/unit/provider/service/windows_spec.rb +2 -2
  271. data/spec/unit/provider/subversion_spec.rb +2 -2
  272. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  273. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  274. data/spec/unit/provider_spec.rb +0 -8
  275. data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
  276. data/spec/unit/resource/mount_spec.rb +0 -10
  277. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  278. data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
  279. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  280. data/spec/unit/resource/user_ulimit_spec.rb +1 -14
  281. data/spec/unit/resource/windows_task_spec.rb +1 -1
  282. data/spec/unit/user_spec.rb +1 -1
  283. data/spec/unit/user_v1_spec.rb +6 -4
  284. data/tasks/rspec.rb +15 -7
  285. metadata +17 -380
  286. data/bin/knife +0 -24
  287. data/lib/chef/application/knife.rb +0 -234
  288. data/lib/chef/application/windows_service.rb +0 -338
  289. data/lib/chef/application/windows_service_manager.rb +0 -205
  290. data/lib/chef/chef_fs/knife.rb +0 -160
  291. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  292. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  293. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  294. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  295. data/lib/chef/knife/acl_add.rb +0 -57
  296. data/lib/chef/knife/acl_base.rb +0 -183
  297. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  298. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  299. data/lib/chef/knife/acl_remove.rb +0 -62
  300. data/lib/chef/knife/acl_show.rb +0 -56
  301. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  302. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  303. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  304. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  305. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  306. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  307. data/lib/chef/knife/bootstrap.rb +0 -1192
  308. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  309. data/lib/chef/knife/client_create.rb +0 -101
  310. data/lib/chef/knife/client_delete.rb +0 -62
  311. data/lib/chef/knife/client_edit.rb +0 -52
  312. data/lib/chef/knife/client_key_create.rb +0 -73
  313. data/lib/chef/knife/client_key_delete.rb +0 -80
  314. data/lib/chef/knife/client_key_edit.rb +0 -83
  315. data/lib/chef/knife/client_key_list.rb +0 -73
  316. data/lib/chef/knife/client_key_show.rb +0 -80
  317. data/lib/chef/knife/client_list.rb +0 -41
  318. data/lib/chef/knife/client_reregister.rb +0 -58
  319. data/lib/chef/knife/client_show.rb +0 -48
  320. data/lib/chef/knife/config_get.rb +0 -39
  321. data/lib/chef/knife/config_get_profile.rb +0 -37
  322. data/lib/chef/knife/config_list.rb +0 -139
  323. data/lib/chef/knife/config_list_profiles.rb +0 -37
  324. data/lib/chef/knife/config_show.rb +0 -127
  325. data/lib/chef/knife/config_use.rb +0 -61
  326. data/lib/chef/knife/config_use_profile.rb +0 -47
  327. data/lib/chef/knife/configure.rb +0 -150
  328. data/lib/chef/knife/configure_client.rb +0 -48
  329. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  330. data/lib/chef/knife/cookbook_delete.rb +0 -151
  331. data/lib/chef/knife/cookbook_download.rb +0 -142
  332. data/lib/chef/knife/cookbook_list.rb +0 -47
  333. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  334. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  335. data/lib/chef/knife/cookbook_show.rb +0 -98
  336. data/lib/chef/knife/cookbook_upload.rb +0 -292
  337. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  338. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  339. data/lib/chef/knife/core/formatting_options.rb +0 -49
  340. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  341. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  342. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  343. data/lib/chef/knife/core/node_editor.rb +0 -130
  344. data/lib/chef/knife/core/node_presenter.rb +0 -133
  345. data/lib/chef/knife/core/object_loader.rb +0 -115
  346. data/lib/chef/knife/core/status_presenter.rb +0 -147
  347. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  348. data/lib/chef/knife/core/text_formatter.rb +0 -85
  349. data/lib/chef/knife/core/ui.rb +0 -338
  350. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  351. data/lib/chef/knife/data_bag_create.rb +0 -81
  352. data/lib/chef/knife/data_bag_delete.rb +0 -49
  353. data/lib/chef/knife/data_bag_edit.rb +0 -74
  354. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  355. data/lib/chef/knife/data_bag_list.rb +0 -42
  356. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  357. data/lib/chef/knife/data_bag_show.rb +0 -69
  358. data/lib/chef/knife/delete.rb +0 -125
  359. data/lib/chef/knife/deps.rb +0 -156
  360. data/lib/chef/knife/diff.rb +0 -83
  361. data/lib/chef/knife/download.rb +0 -84
  362. data/lib/chef/knife/edit.rb +0 -88
  363. data/lib/chef/knife/environment_compare.rb +0 -128
  364. data/lib/chef/knife/environment_create.rb +0 -52
  365. data/lib/chef/knife/environment_delete.rb +0 -44
  366. data/lib/chef/knife/environment_edit.rb +0 -44
  367. data/lib/chef/knife/environment_from_file.rb +0 -84
  368. data/lib/chef/knife/environment_list.rb +0 -41
  369. data/lib/chef/knife/environment_show.rb +0 -47
  370. data/lib/chef/knife/exec.rb +0 -99
  371. data/lib/chef/knife/group_add.rb +0 -55
  372. data/lib/chef/knife/group_create.rb +0 -49
  373. data/lib/chef/knife/group_destroy.rb +0 -53
  374. data/lib/chef/knife/group_list.rb +0 -43
  375. data/lib/chef/knife/group_remove.rb +0 -56
  376. data/lib/chef/knife/group_show.rb +0 -49
  377. data/lib/chef/knife/key_create.rb +0 -112
  378. data/lib/chef/knife/key_create_base.rb +0 -50
  379. data/lib/chef/knife/key_delete.rb +0 -55
  380. data/lib/chef/knife/key_edit.rb +0 -118
  381. data/lib/chef/knife/key_edit_base.rb +0 -55
  382. data/lib/chef/knife/key_list.rb +0 -90
  383. data/lib/chef/knife/key_list_base.rb +0 -45
  384. data/lib/chef/knife/key_show.rb +0 -53
  385. data/lib/chef/knife/list.rb +0 -177
  386. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  387. data/lib/chef/knife/node_create.rb +0 -47
  388. data/lib/chef/knife/node_delete.rb +0 -46
  389. data/lib/chef/knife/node_edit.rb +0 -70
  390. data/lib/chef/knife/node_environment_set.rb +0 -53
  391. data/lib/chef/knife/node_from_file.rb +0 -51
  392. data/lib/chef/knife/node_list.rb +0 -44
  393. data/lib/chef/knife/node_policy_set.rb +0 -79
  394. data/lib/chef/knife/node_run_list_add.rb +0 -104
  395. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  396. data/lib/chef/knife/node_run_list_set.rb +0 -66
  397. data/lib/chef/knife/node_show.rb +0 -63
  398. data/lib/chef/knife/null.rb +0 -12
  399. data/lib/chef/knife/raw.rb +0 -123
  400. data/lib/chef/knife/recipe_list.rb +0 -32
  401. data/lib/chef/knife/rehash.rb +0 -50
  402. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  403. data/lib/chef/knife/role_create.rb +0 -53
  404. data/lib/chef/knife/role_delete.rb +0 -46
  405. data/lib/chef/knife/role_edit.rb +0 -45
  406. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  407. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  408. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  409. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  410. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  411. data/lib/chef/knife/role_from_file.rb +0 -51
  412. data/lib/chef/knife/role_list.rb +0 -42
  413. data/lib/chef/knife/role_run_list_add.rb +0 -87
  414. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  415. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  416. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  417. data/lib/chef/knife/role_run_list_set.rb +0 -69
  418. data/lib/chef/knife/role_show.rb +0 -48
  419. data/lib/chef/knife/search.rb +0 -194
  420. data/lib/chef/knife/serve.rb +0 -65
  421. data/lib/chef/knife/show.rb +0 -72
  422. data/lib/chef/knife/ssh.rb +0 -645
  423. data/lib/chef/knife/ssl_check.rb +0 -284
  424. data/lib/chef/knife/ssl_fetch.rb +0 -161
  425. data/lib/chef/knife/status.rb +0 -95
  426. data/lib/chef/knife/supermarket_download.rb +0 -121
  427. data/lib/chef/knife/supermarket_install.rb +0 -192
  428. data/lib/chef/knife/supermarket_list.rb +0 -76
  429. data/lib/chef/knife/supermarket_search.rb +0 -53
  430. data/lib/chef/knife/supermarket_share.rb +0 -166
  431. data/lib/chef/knife/supermarket_show.rb +0 -66
  432. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  433. data/lib/chef/knife/tag_create.rb +0 -52
  434. data/lib/chef/knife/tag_delete.rb +0 -60
  435. data/lib/chef/knife/tag_list.rb +0 -47
  436. data/lib/chef/knife/upload.rb +0 -86
  437. data/lib/chef/knife/user_create.rb +0 -107
  438. data/lib/chef/knife/user_delete.rb +0 -44
  439. data/lib/chef/knife/user_dissociate.rb +0 -42
  440. data/lib/chef/knife/user_edit.rb +0 -52
  441. data/lib/chef/knife/user_invite_add.rb +0 -43
  442. data/lib/chef/knife/user_invite_list.rb +0 -34
  443. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  444. data/lib/chef/knife/user_key_create.rb +0 -73
  445. data/lib/chef/knife/user_key_delete.rb +0 -80
  446. data/lib/chef/knife/user_key_edit.rb +0 -83
  447. data/lib/chef/knife/user_key_list.rb +0 -73
  448. data/lib/chef/knife/user_key_show.rb +0 -80
  449. data/lib/chef/knife/user_list.rb +0 -42
  450. data/lib/chef/knife/user_reregister.rb +0 -59
  451. data/lib/chef/knife/user_show.rb +0 -48
  452. data/lib/chef/knife/xargs.rb +0 -282
  453. data/lib/chef/knife/yaml_convert.rb +0 -91
  454. data/lib/chef/knife.rb +0 -665
  455. data/lib/chef/resource/user/dscl_user.rb +0 -35
  456. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  457. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  458. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  459. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  460. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  461. data/spec/functional/knife/configure_spec.rb +0 -33
  462. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  463. data/spec/functional/knife/exec_spec.rb +0 -55
  464. data/spec/functional/knife/rehash_spec.rb +0 -39
  465. data/spec/functional/knife/smoke_test.rb +0 -42
  466. data/spec/functional/knife/ssh_spec.rb +0 -352
  467. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  468. data/spec/functional/resource/windows_service_spec.rb +0 -105
  469. data/spec/functional/win32/service_manager_spec.rb +0 -220
  470. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  471. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  472. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  473. data/spec/integration/knife/chefignore_spec.rb +0 -301
  474. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  475. data/spec/integration/knife/client_create_spec.rb +0 -70
  476. data/spec/integration/knife/client_delete_spec.rb +0 -64
  477. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  478. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  479. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  480. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  481. data/spec/integration/knife/client_list_spec.rb +0 -49
  482. data/spec/integration/knife/client_show_spec.rb +0 -37
  483. data/spec/integration/knife/common_options_spec.rb +0 -174
  484. data/spec/integration/knife/config_list_spec.rb +0 -220
  485. data/spec/integration/knife/config_show_spec.rb +0 -192
  486. data/spec/integration/knife/config_use_spec.rb +0 -198
  487. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  488. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  489. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  490. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  491. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  492. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  493. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  494. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  495. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  496. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  497. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  498. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  499. data/spec/integration/knife/delete_spec.rb +0 -1018
  500. data/spec/integration/knife/deps_spec.rb +0 -703
  501. data/spec/integration/knife/diff_spec.rb +0 -605
  502. data/spec/integration/knife/download_spec.rb +0 -1336
  503. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  504. data/spec/integration/knife/environment_create_spec.rb +0 -41
  505. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  506. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  507. data/spec/integration/knife/environment_list_spec.rb +0 -42
  508. data/spec/integration/knife/environment_show_spec.rb +0 -77
  509. data/spec/integration/knife/list_spec.rb +0 -1060
  510. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  511. data/spec/integration/knife/node_create_spec.rb +0 -47
  512. data/spec/integration/knife/node_delete_spec.rb +0 -48
  513. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  514. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  515. data/spec/integration/knife/node_list_spec.rb +0 -45
  516. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  517. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  518. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  519. data/spec/integration/knife/node_show_spec.rb +0 -36
  520. data/spec/integration/knife/raw_spec.rb +0 -297
  521. data/spec/integration/knife/redirection_spec.rb +0 -64
  522. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  523. data/spec/integration/knife/role_create_spec.rb +0 -41
  524. data/spec/integration/knife/role_delete_spec.rb +0 -48
  525. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  526. data/spec/integration/knife/role_list_spec.rb +0 -45
  527. data/spec/integration/knife/role_show_spec.rb +0 -51
  528. data/spec/integration/knife/search_node_spec.rb +0 -40
  529. data/spec/integration/knife/serve_spec.rb +0 -92
  530. data/spec/integration/knife/show_spec.rb +0 -197
  531. data/spec/integration/knife/upload_spec.rb +0 -1617
  532. data/spec/support/shared/functional/knife.rb +0 -37
  533. data/spec/support/shared/functional/win32_service.rb +0 -57
  534. data/spec/support/shared/integration/knife_support.rb +0 -192
  535. data/spec/support/shared/unit/knife_shared.rb +0 -39
  536. data/spec/unit/application/knife_spec.rb +0 -241
  537. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  538. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  539. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  540. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  541. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  542. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  543. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  544. data/spec/unit/knife/client_create_spec.rb +0 -169
  545. data/spec/unit/knife/client_delete_spec.rb +0 -99
  546. data/spec/unit/knife/client_edit_spec.rb +0 -53
  547. data/spec/unit/knife/client_list_spec.rb +0 -34
  548. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  549. data/spec/unit/knife/client_show_spec.rb +0 -52
  550. data/spec/unit/knife/configure_client_spec.rb +0 -81
  551. data/spec/unit/knife/configure_spec.rb +0 -190
  552. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  553. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  554. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  555. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  556. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  557. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  558. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  559. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  560. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  561. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  562. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  563. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  564. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  565. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  566. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  567. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  568. data/spec/unit/knife/core/ui_spec.rb +0 -656
  569. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  570. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  571. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  572. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  573. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  574. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  575. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  576. data/spec/unit/knife/environment_create_spec.rb +0 -91
  577. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  578. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  579. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  580. data/spec/unit/knife/environment_list_spec.rb +0 -54
  581. data/spec/unit/knife/environment_show_spec.rb +0 -52
  582. data/spec/unit/knife/key_create_spec.rb +0 -223
  583. data/spec/unit/knife/key_delete_spec.rb +0 -133
  584. data/spec/unit/knife/key_edit_spec.rb +0 -264
  585. data/spec/unit/knife/key_helper.rb +0 -74
  586. data/spec/unit/knife/key_list_spec.rb +0 -216
  587. data/spec/unit/knife/key_show_spec.rb +0 -126
  588. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  589. data/spec/unit/knife/node_delete_spec.rb +0 -77
  590. data/spec/unit/knife/node_edit_spec.rb +0 -116
  591. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  592. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  593. data/spec/unit/knife/node_list_spec.rb +0 -62
  594. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  595. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  596. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  597. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  598. data/spec/unit/knife/node_show_spec.rb +0 -65
  599. data/spec/unit/knife/raw_spec.rb +0 -43
  600. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  601. data/spec/unit/knife/role_create_spec.rb +0 -80
  602. data/spec/unit/knife/role_delete_spec.rb +0 -67
  603. data/spec/unit/knife/role_edit_spec.rb +0 -77
  604. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  605. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  606. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  607. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  608. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  609. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  610. data/spec/unit/knife/role_list_spec.rb +0 -54
  611. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  612. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  613. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  614. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  615. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  616. data/spec/unit/knife/role_show_spec.rb +0 -59
  617. data/spec/unit/knife/ssh_spec.rb +0 -403
  618. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  619. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  620. data/spec/unit/knife/status_spec.rb +0 -112
  621. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  622. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  623. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  624. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  625. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  626. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  627. data/spec/unit/knife/tag_create_spec.rb +0 -23
  628. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  629. data/spec/unit/knife/tag_list_spec.rb +0 -23
  630. data/spec/unit/knife/user_create_spec.rb +0 -184
  631. data/spec/unit/knife/user_delete_spec.rb +0 -46
  632. data/spec/unit/knife/user_edit_spec.rb +0 -48
  633. data/spec/unit/knife/user_list_spec.rb +0 -36
  634. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  635. data/spec/unit/knife/user_show_spec.rb +0 -46
  636. data/spec/unit/knife_spec.rb +0 -634
  637. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  638. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,106 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Copyright:: Copyright (c) Chef Software Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require_relative "../knife"
20
-
21
- class Chef
22
- class Knife
23
- class CookbookMetadata < Knife
24
-
25
- deps do
26
- require_relative "../cookbook_loader"
27
- require_relative "../cookbook/metadata"
28
- end
29
-
30
- banner "knife cookbook metadata COOKBOOK (options)"
31
-
32
- option :cookbook_path,
33
- short: "-o PATH:PATH",
34
- long: "--cookbook-path PATH:PATH",
35
- description: "A colon-separated path to look for cookbooks in.",
36
- proc: lambda { |o| o.split(":") }
37
-
38
- option :all,
39
- short: "-a",
40
- long: "--all",
41
- description: "Generate metadata for all cookbooks, rather than just a single cookbook."
42
-
43
- def run
44
- config[:cookbook_path] ||= Chef::Config[:cookbook_path]
45
-
46
- if config[:all]
47
- cl = Chef::CookbookLoader.new(config[:cookbook_path])
48
- cl.load_cookbooks
49
- cl.each_key do |cname|
50
- generate_metadata(cname.to_s)
51
- end
52
- else
53
- cookbook_name = @name_args[0]
54
- if cookbook_name.nil? || cookbook_name.empty?
55
- ui.error "You must specify the cookbook to generate metadata for, or use the --all option."
56
- exit 1
57
- end
58
- generate_metadata(cookbook_name)
59
- end
60
- end
61
-
62
- def generate_metadata(cookbook)
63
- Array(config[:cookbook_path]).reverse_each do |path|
64
- file = File.expand_path(File.join(path, cookbook, "metadata.rb"))
65
- if File.exist?(file)
66
- generate_metadata_from_file(cookbook, file)
67
- else
68
- validate_metadata_json(path, cookbook)
69
- end
70
- end
71
- end
72
-
73
- def generate_metadata_from_file(cookbook, file)
74
- ui.info("Generating metadata for #{cookbook} from #{file}")
75
- md = Chef::Cookbook::Metadata.new
76
- md.name(cookbook)
77
- md.from_file(file)
78
- json_file = File.join(File.dirname(file), "metadata.json")
79
- File.open(json_file, "w") do |f|
80
- f.write(Chef::JSONCompat.to_json_pretty(md))
81
- end
82
- Chef::Log.trace("Generated #{json_file}")
83
- rescue Exceptions::ObsoleteDependencySyntax, Exceptions::InvalidVersionConstraint => e
84
- ui.stderr.puts "ERROR: The cookbook '#{cookbook}' contains invalid or obsolete metadata syntax."
85
- ui.stderr.puts "in #{file}:"
86
- ui.stderr.puts
87
- ui.stderr.puts e.message
88
- exit 1
89
- end
90
-
91
- def validate_metadata_json(path, cookbook)
92
- json_file = File.join(path, cookbook, "metadata.json")
93
- if File.exist?(json_file)
94
- Chef::Cookbook::Metadata.validate_json(IO.read(json_file))
95
- end
96
- rescue Exceptions::ObsoleteDependencySyntax, Exceptions::InvalidVersionConstraint => e
97
- ui.stderr.puts "ERROR: The cookbook '#{cookbook}' contains invalid or obsolete metadata syntax."
98
- ui.stderr.puts "in #{json_file}:"
99
- ui.stderr.puts
100
- ui.stderr.puts e.message
101
- exit 1
102
- end
103
-
104
- end
105
- end
106
- end
@@ -1,49 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Author:: Matthew Kent (<mkent@magoazul.com>)
4
- # Copyright:: Copyright (c) Chef Software Inc.
5
- # Copyright:: Copyright 2010-2016, Matthew Kent
6
- # License:: Apache License, Version 2.0
7
- #
8
- # Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- # See the License for the specific language governing permissions and
18
- # limitations under the License.
19
- #
20
-
21
- require_relative "../knife"
22
-
23
- class Chef
24
- class Knife
25
- class CookbookMetadataFromFile < Knife
26
-
27
- deps do
28
- require_relative "../cookbook/metadata"
29
- end
30
-
31
- banner "knife cookbook metadata from file FILE (options)"
32
-
33
- def run
34
- if @name_args.length < 1
35
- show_usage
36
- ui.fatal("You must specify the FILE.")
37
- exit(1)
38
- end
39
-
40
- file = @name_args[0]
41
- cookbook = File.basename(File.dirname(file))
42
-
43
- @metadata = Chef::Knife::CookbookMetadata.new
44
- @metadata.generate_metadata_from_file(cookbook, file)
45
- end
46
-
47
- end
48
- end
49
- end
@@ -1,98 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Copyright:: Copyright (c) Chef Software Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require_relative "../knife"
20
-
21
- class Chef
22
- class Knife
23
- class CookbookShow < Knife
24
-
25
- deps do
26
- require_relative "../json_compat"
27
- require "uri" unless defined?(URI)
28
- require_relative "../cookbook_version"
29
- end
30
-
31
- banner "knife cookbook show COOKBOOK [VERSION] [PART] [FILENAME] (options)"
32
-
33
- option :fqdn,
34
- short: "-f FQDN",
35
- long: "--fqdn FQDN",
36
- description: "The FQDN of the host to see the file for."
37
-
38
- option :platform,
39
- short: "-p PLATFORM",
40
- long: "--platform PLATFORM",
41
- description: "The platform to see the file for."
42
-
43
- option :platform_version,
44
- short: "-V VERSION",
45
- long: "--platform-version VERSION",
46
- description: "The platform version to see the file for."
47
-
48
- option :with_uri,
49
- short: "-w",
50
- long: "--with-uri",
51
- description: "Show corresponding URIs."
52
-
53
- def run
54
- cookbook_name, cookbook_version, segment, filename = @name_args
55
-
56
- cookbook = Chef::CookbookVersion.load(cookbook_name, cookbook_version) unless cookbook_version.nil?
57
-
58
- case @name_args.length
59
- when 4 # We are showing a specific file
60
- node = {}
61
- node[:fqdn] = config[:fqdn] if config.key?(:fqdn)
62
- node[:platform] = config[:platform] if config.key?(:platform)
63
- node[:platform_version] = config[:platform_version] if config.key?(:platform_version)
64
-
65
- class << node
66
- def attribute?(name) # rubocop:disable Lint/NestedMethodDefinition
67
- key?(name)
68
- end
69
- end
70
-
71
- manifest_entry = cookbook.preferred_manifest_record(node, segment, filename)
72
- temp_file = rest.streaming_request(manifest_entry[:url])
73
-
74
- # the temp file is cleaned up elsewhere
75
- temp_file.open if temp_file.closed?
76
- pretty_print(temp_file.read)
77
-
78
- when 3 # We are showing a specific part of the cookbook
79
- if segment == "metadata"
80
- output(cookbook.metadata)
81
- else
82
- output(cookbook.files_for(segment))
83
- end
84
- when 2 # We are showing the whole cookbook
85
- output(cookbook.display)
86
- when 1 # We are showing the cookbook versions (all of them)
87
- env = config[:environment]
88
- api_endpoint = env ? "environments/#{env}/cookbooks/#{cookbook_name}" : "cookbooks/#{cookbook_name}"
89
- output(format_cookbook_list_for_display(rest.get(api_endpoint)))
90
- when 0
91
- show_usage
92
- ui.fatal("You must specify a cookbook name")
93
- exit 1
94
- end
95
- end
96
- end
97
- end
98
- end
@@ -1,292 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Author:: Christopher Walters (<cw@chef.io>)
4
- # Author:: Nuo Yan (<yan.nuo@gmail.com>)
5
- # Copyright:: Copyright (c) Chef Software Inc.
6
- # License:: Apache License, Version 2.0
7
- #
8
- # Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- # See the License for the specific language governing permissions and
18
- # limitations under the License.
19
- #
20
-
21
- require_relative "../knife"
22
-
23
- class Chef
24
- class Knife
25
- class CookbookUpload < Knife
26
- deps do
27
- require_relative "../mixin/file_class"
28
- include Chef::Mixin::FileClass
29
- require_relative "../exceptions"
30
- require_relative "../cookbook_loader"
31
- require_relative "../cookbook_uploader"
32
- end
33
-
34
- banner "knife cookbook upload [COOKBOOKS...] (options)"
35
-
36
- option :cookbook_path,
37
- short: "-o 'PATH:PATH'",
38
- long: "--cookbook-path 'PATH:PATH'",
39
- description: "A delimited path to search for cookbooks. On Unix the delimiter is ':', on Windows it is ';'.",
40
- proc: lambda { |o| o.split(File::PATH_SEPARATOR) }
41
-
42
- option :freeze,
43
- long: "--freeze",
44
- description: "Freeze this version of the cookbook so that it cannot be overwritten.",
45
- boolean: true
46
-
47
- option :all,
48
- short: "-a",
49
- long: "--all",
50
- description: "Upload all cookbooks, rather than just a single cookbook."
51
-
52
- option :force,
53
- long: "--force",
54
- boolean: true,
55
- description: "Update cookbook versions even if they have been frozen."
56
-
57
- option :concurrency,
58
- long: "--concurrency NUMBER_OF_THREADS",
59
- description: "How many concurrent threads will be used.",
60
- default: 10,
61
- proc: lambda { |o| o.to_i }
62
-
63
- option :environment,
64
- short: "-E",
65
- long: "--environment ENVIRONMENT",
66
- description: "Set ENVIRONMENT's version dependency match the version you're uploading.",
67
- default: nil
68
-
69
- option :depends,
70
- short: "-d",
71
- long: "--include-dependencies",
72
- description: "Also upload cookbook dependencies."
73
-
74
- def run
75
- # Sanity check before we load anything from the server
76
- if ! config[:all] && @name_args.empty?
77
- show_usage
78
- ui.fatal("You must specify the --all flag or at least one cookbook name")
79
- exit 1
80
- end
81
-
82
- config[:cookbook_path] ||= Chef::Config[:cookbook_path]
83
-
84
- assert_environment_valid!
85
- version_constraints_to_update = {}
86
- upload_failures = 0
87
- upload_ok = 0
88
-
89
- # Get a list of cookbooks and their versions from the server
90
- # to check for the existence of a cookbook's dependencies.
91
- @server_side_cookbooks = Chef::CookbookVersion.list_all_versions
92
- justify_width = @server_side_cookbooks.map(&:size).max.to_i + 2
93
-
94
- cookbooks = []
95
- cookbooks_to_upload.each do |cookbook_name, cookbook|
96
- raise Chef::Exceptions::MetadataNotFound.new(cookbook.root_paths[0], cookbook_name) unless cookbook.has_metadata_file?
97
-
98
- if cookbook.metadata.name.nil?
99
- message = "Cookbook loaded at path [#{cookbook.root_paths[0]}] has invalid metadata: #{cookbook.metadata.errors.join("; ")}"
100
- raise Chef::Exceptions::MetadataNotValid, message
101
- end
102
-
103
- cookbooks << cookbook
104
- end
105
-
106
- if cookbooks.empty?
107
- cookbook_path = config[:cookbook_path].respond_to?(:join) ? config[:cookbook_path].join(", ") : config[:cookbook_path]
108
- ui.warn("Could not find any cookbooks in your cookbook path: '#{File.expand_path(cookbook_path)}'. Use --cookbook-path to specify the desired path.")
109
- else
110
- Chef::CookbookLoader.copy_to_tmp_dir_from_array(cookbooks) do |tmp_cl|
111
- tmp_cl.load_cookbooks
112
- tmp_cl.compile_metadata
113
- tmp_cl.freeze_versions if config[:freeze]
114
-
115
- cookbooks_for_upload = []
116
- tmp_cl.each do |cookbook_name, cookbook|
117
- cookbooks_for_upload << cookbook
118
- version_constraints_to_update[cookbook_name] = cookbook.version
119
- end
120
- if config[:all]
121
- if cookbooks_for_upload.any?
122
- begin
123
- upload(cookbooks_for_upload, justify_width)
124
- rescue Chef::Exceptions::CookbookFrozen
125
- ui.warn("Not updating version constraints for some cookbooks in the environment as the cookbook is frozen.")
126
- ui.error("Uploading of some of the cookbooks must be failed. Remove cookbook whose version is frozen from your cookbooks repo OR use --force option.")
127
- upload_failures += 1
128
- rescue SystemExit => e
129
- raise exit e.status
130
- end
131
- ui.info("Uploaded all cookbooks.") if upload_failures == 0
132
- end
133
- else
134
- tmp_cl.each do |cookbook_name, cookbook|
135
-
136
- upload([cookbook], justify_width)
137
- upload_ok += 1
138
- rescue Exceptions::CookbookNotFoundInRepo => e
139
- upload_failures += 1
140
- ui.error("Could not find cookbook #{cookbook_name} in your cookbook path, skipping it")
141
- Log.debug(e)
142
- upload_failures += 1
143
- rescue Exceptions::CookbookFrozen
144
- ui.warn("Not updating version constraints for #{cookbook_name} in the environment as the cookbook is frozen.")
145
- upload_failures += 1
146
- rescue SystemExit => e
147
- raise exit e.status
148
-
149
- end
150
-
151
- if upload_failures == 0
152
- ui.info "Uploaded #{upload_ok} cookbook#{upload_ok == 1 ? "" : "s"}."
153
- elsif upload_failures > 0 && upload_ok > 0
154
- ui.warn "Uploaded #{upload_ok} cookbook#{upload_ok == 1 ? "" : "s"} ok but #{upload_failures} " +
155
- "cookbook#{upload_failures == 1 ? "" : "s"} upload failed."
156
- elsif upload_failures > 0 && upload_ok == 0
157
- ui.error "Failed to upload #{upload_failures} cookbook#{upload_failures == 1 ? "" : "s"}."
158
- exit 1
159
- end
160
- end
161
- unless version_constraints_to_update.empty?
162
- update_version_constraints(version_constraints_to_update) if config[:environment]
163
- end
164
- end
165
- end
166
- end
167
-
168
- def cookbooks_to_upload
169
- @cookbooks_to_upload ||=
170
- if config[:all]
171
- cookbook_repo.load_cookbooks
172
- else
173
- upload_set = {}
174
- @name_args.each do |cookbook_name|
175
-
176
- unless upload_set.key?(cookbook_name)
177
- upload_set[cookbook_name] = cookbook_repo[cookbook_name]
178
- if config[:depends]
179
- upload_set[cookbook_name].metadata.dependencies.each_key { |dep| @name_args << dep }
180
- end
181
- end
182
- rescue Exceptions::CookbookNotFoundInRepo => e
183
- ui.error(e.message)
184
- Log.debug(e)
185
-
186
- end
187
- upload_set
188
- end
189
- end
190
-
191
- def cookbook_repo
192
- @cookbook_loader ||= begin
193
- Chef::Cookbook::FileVendor.fetch_from_disk(config[:cookbook_path])
194
- Chef::CookbookLoader.new(config[:cookbook_path])
195
- end
196
- end
197
-
198
- def update_version_constraints(new_version_constraints)
199
- new_version_constraints.each do |cookbook_name, version|
200
- environment.cookbook_versions[cookbook_name] = "= #{version}"
201
- end
202
- environment.save
203
- end
204
-
205
- def environment
206
- @environment ||= config[:environment] ? Environment.load(config[:environment]) : nil
207
- end
208
-
209
- private
210
-
211
- def assert_environment_valid!
212
- environment
213
- rescue Net::HTTPClientException => e
214
- if e.response.code.to_s == "404"
215
- ui.error "The environment #{config[:environment]} does not exist on the server, aborting."
216
- Log.debug(e)
217
- exit 1
218
- else
219
- raise
220
- end
221
- end
222
-
223
- def upload(cookbooks, justify_width)
224
- cookbooks.each do |cb|
225
- ui.info("Uploading #{cb.name.to_s.ljust(justify_width + 10)} [#{cb.version}]")
226
- check_for_broken_links!(cb)
227
- check_for_dependencies!(cb)
228
- end
229
- Chef::CookbookUploader.new(cookbooks, force: config[:force], concurrency: config[:concurrency]).upload_cookbooks
230
- rescue Chef::Exceptions::CookbookFrozen => e
231
- ui.error e
232
- raise
233
- end
234
-
235
- def check_for_broken_links!(cookbook)
236
- # MUST!! dup the cookbook version object--it memoizes its
237
- # manifest object, but the manifest becomes invalid when you
238
- # regenerate the metadata
239
- broken_files = cookbook.dup.manifest_records_by_path.select do |path, info|
240
- !/[0-9a-f]{32,}/.match?(info["checksum"])
241
- end
242
- unless broken_files.empty?
243
- broken_filenames = Array(broken_files).map { |path, info| path }
244
- ui.error "The cookbook #{cookbook.name} has one or more broken files"
245
- ui.error "This is probably caused by broken symlinks in the cookbook directory"
246
- ui.error "The broken file(s) are: #{broken_filenames.join(" ")}"
247
- exit 1
248
- end
249
- end
250
-
251
- def check_for_dependencies!(cookbook)
252
- # for all dependencies, check if the version is on the server, or
253
- # the version is in the cookbooks being uploaded. If not, exit and warn the user.
254
- missing_dependencies = cookbook.metadata.dependencies.reject do |cookbook_name, version|
255
- check_server_side_cookbooks(cookbook_name, version) || check_uploading_cookbooks(cookbook_name, version)
256
- end
257
-
258
- unless missing_dependencies.empty?
259
- missing_cookbook_names = missing_dependencies.map { |cookbook_name, version| "'#{cookbook_name}' version '#{version}'" }
260
- ui.error "Cookbook #{cookbook.name} depends on cookbooks which are not currently"
261
- ui.error "being uploaded and cannot be found on the server."
262
- ui.error "The missing cookbook(s) are: #{missing_cookbook_names.join(", ")}"
263
- exit 1
264
- end
265
- end
266
-
267
- def check_server_side_cookbooks(cookbook_name, version)
268
- if @server_side_cookbooks[cookbook_name].nil?
269
- false
270
- else
271
- versions = @server_side_cookbooks[cookbook_name]["versions"].collect { |versions| versions["version"] }
272
- Log.debug "Versions of cookbook '#{cookbook_name}' returned by the server: #{versions.join(", ")}"
273
- @server_side_cookbooks[cookbook_name]["versions"].each do |versions_hash|
274
- if Chef::VersionConstraint.new(version).include?(versions_hash["version"])
275
- Log.debug "Matched cookbook '#{cookbook_name}' with constraint '#{version}' to cookbook version '#{versions_hash["version"]}' on the server"
276
- return true
277
- end
278
- end
279
- false
280
- end
281
- end
282
-
283
- def check_uploading_cookbooks(cookbook_name, version)
284
- if (! cookbooks_to_upload[cookbook_name].nil?) && Chef::VersionConstraint.new(version).include?(cookbooks_to_upload[cookbook_name].version)
285
- Log.debug "Matched cookbook '#{cookbook_name}' with constraint '#{version}' to a local cookbook."
286
- return true
287
- end
288
- false
289
- end
290
- end
291
- end
292
- end