chef 16.14.1 → 17.0.242

Sign up to get free protection for your applications and to get access to all the features.
Files changed (615) 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/data_bag_item.rb +11 -2
  25. data/lib/chef/delayed_evaluator.rb +4 -0
  26. data/lib/chef/deprecated.rb +4 -0
  27. data/lib/chef/dsl/chef_vault.rb +6 -6
  28. data/lib/chef/dsl/reboot_pending.rb +1 -2
  29. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  30. data/lib/chef/group.rb +75 -0
  31. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  32. data/lib/chef/node/attribute.rb +6 -4
  33. data/lib/chef/node/immutable_collections.rb +13 -0
  34. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  35. data/lib/chef/org.rb +3 -2
  36. data/lib/chef/property.rb +18 -0
  37. data/lib/chef/provider.rb +1 -1
  38. data/lib/chef/provider/cron.rb +1 -1
  39. data/lib/chef/provider/execute.rb +2 -1
  40. data/lib/chef/provider/file.rb +1 -1
  41. data/lib/chef/provider/git.rb +5 -7
  42. data/lib/chef/provider/group/groupadd.rb +3 -3
  43. data/lib/chef/provider/group/groupmod.rb +3 -3
  44. data/lib/chef/provider/group/pw.rb +3 -3
  45. data/lib/chef/provider/ifconfig.rb +2 -2
  46. data/lib/chef/provider/link.rb +2 -2
  47. data/lib/chef/provider/mount.rb +5 -5
  48. data/lib/chef/provider/mount/aix.rb +3 -3
  49. data/lib/chef/provider/mount/mount.rb +5 -5
  50. data/lib/chef/provider/mount/windows.rb +1 -1
  51. data/lib/chef/provider/package.rb +17 -21
  52. data/lib/chef/provider/package/apt.rb +27 -1
  53. data/lib/chef/provider/package/deb.rb +3 -3
  54. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  55. data/lib/chef/provider/package/portage.rb +2 -2
  56. data/lib/chef/provider/package/rubygems.rb +9 -15
  57. data/lib/chef/provider/package/windows.rb +2 -4
  58. data/lib/chef/provider/package/yum/yum_helper.py +1 -1
  59. data/lib/chef/provider/route.rb +2 -2
  60. data/lib/chef/provider/service.rb +6 -6
  61. data/lib/chef/provider/service/aixinit.rb +1 -1
  62. data/lib/chef/provider/service/debian.rb +1 -1
  63. data/lib/chef/provider/service/freebsd.rb +15 -21
  64. data/lib/chef/provider/service/macosx.rb +4 -4
  65. data/lib/chef/provider/service/systemd.rb +43 -14
  66. data/lib/chef/provider/service/upstart.rb +2 -13
  67. data/lib/chef/provider/service/windows.rb +12 -12
  68. data/lib/chef/provider/subversion.rb +10 -12
  69. data/lib/chef/provider/systemd_unit.rb +36 -10
  70. data/lib/chef/provider/template/content.rb +2 -6
  71. data/lib/chef/provider/user.rb +2 -2
  72. data/lib/chef/provider/user/dscl.rb +1 -1
  73. data/lib/chef/provider/user/mac.rb +17 -20
  74. data/lib/chef/provider/user/pw.rb +1 -1
  75. data/lib/chef/provider/user/windows.rb +1 -1
  76. data/lib/chef/provider/zypper_repository.rb +2 -2
  77. data/lib/chef/providers.rb +0 -1
  78. data/lib/chef/resource/alternatives.rb +6 -6
  79. data/lib/chef/resource/apt_package.rb +1 -1
  80. data/lib/chef/resource/apt_preference.rb +2 -2
  81. data/lib/chef/resource/apt_repository.rb +6 -6
  82. data/lib/chef/resource/apt_update.rb +3 -2
  83. data/lib/chef/resource/archive_file.rb +2 -3
  84. data/lib/chef/resource/breakpoint.rb +1 -1
  85. data/lib/chef/resource/build_essential.rb +2 -6
  86. data/lib/chef/resource/chef_client_config.rb +2 -2
  87. data/lib/chef/resource/chef_client_cron.rb +4 -4
  88. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  89. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  90. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  91. data/lib/chef/resource/chef_handler.rb +3 -7
  92. data/lib/chef/resource/chef_sleep.rb +1 -1
  93. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  94. data/lib/chef/resource/chocolatey_config.rb +2 -6
  95. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  96. data/lib/chef/resource/chocolatey_source.rb +4 -10
  97. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  98. data/lib/chef/resource/cron_access.rb +2 -4
  99. data/lib/chef/resource/dmg_package.rb +6 -10
  100. data/lib/chef/resource/dpkg_package.rb +1 -1
  101. data/lib/chef/resource/execute.rb +6 -1
  102. data/lib/chef/resource/file.rb +1 -1
  103. data/lib/chef/resource/group.rb +2 -2
  104. data/lib/chef/resource/homebrew_cask.rb +2 -6
  105. data/lib/chef/resource/homebrew_tap.rb +2 -6
  106. data/lib/chef/resource/hostname.rb +21 -17
  107. data/lib/chef/resource/http_request.rb +1 -1
  108. data/lib/chef/resource/kernel_module.rb +6 -17
  109. data/lib/chef/resource/locale.rb +2 -3
  110. data/lib/chef/resource/lwrp_base.rb +4 -0
  111. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  112. data/lib/chef/resource/mdadm.rb +53 -7
  113. data/lib/chef/resource/mount.rb +2 -1
  114. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  115. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  116. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  117. data/lib/chef/resource/plist.rb +7 -7
  118. data/lib/chef/resource/powershell_script.rb +1 -1
  119. data/lib/chef/resource/remote_file.rb +1 -1
  120. data/lib/chef/resource/rhsm_errata.rb +16 -1
  121. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  122. data/lib/chef/resource/rhsm_register.rb +12 -6
  123. data/lib/chef/resource/rhsm_repo.rb +2 -6
  124. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  125. data/lib/chef/resource/scm/git.rb +1 -1
  126. data/lib/chef/resource/sudo.rb +6 -6
  127. data/lib/chef/resource/sysctl.rb +2 -6
  128. data/lib/chef/resource/systemd_unit.rb +2 -2
  129. data/lib/chef/resource/template.rb +1 -1
  130. data/lib/chef/resource/timezone.rb +1 -3
  131. data/lib/chef/resource/user/mac_user.rb +1 -1
  132. data/lib/chef/resource/user_ulimit.rb +2 -2
  133. data/lib/chef/resource/windows_ad_join.rb +2 -6
  134. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  135. data/lib/chef/resource/windows_auto_run.rb +2 -5
  136. data/lib/chef/resource/windows_certificate.rb +207 -73
  137. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  138. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  139. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  140. data/lib/chef/resource/windows_dns_record.rb +2 -6
  141. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  142. data/lib/chef/resource/windows_env.rb +5 -4
  143. data/lib/chef/resource/windows_feature.rb +3 -9
  144. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  145. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  146. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  147. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  148. data/lib/chef/resource/windows_font.rb +2 -4
  149. data/lib/chef/resource/windows_pagefile.rb +2 -6
  150. data/lib/chef/resource/windows_path.rb +2 -2
  151. data/lib/chef/resource/windows_printer.rb +4 -4
  152. data/lib/chef/resource/windows_printer_port.rb +6 -6
  153. data/lib/chef/resource/windows_security_policy.rb +53 -40
  154. data/lib/chef/resource/windows_share.rb +14 -21
  155. data/lib/chef/resource/windows_shortcut.rb +4 -6
  156. data/lib/chef/resource/windows_task.rb +17 -5
  157. data/lib/chef/resource/windows_uac.rb +1 -1
  158. data/lib/chef/resource/windows_user_privilege.rb +4 -4
  159. data/lib/chef/resource/windows_workgroup.rb +1 -2
  160. data/lib/chef/resources.rb +0 -1
  161. data/lib/chef/user.rb +0 -1
  162. data/lib/chef/user_v1.rb +3 -4
  163. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  164. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  165. data/lib/chef/version.rb +1 -1
  166. data/lib/chef/win32/registry.rb +4 -2
  167. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  168. data/spec/data/lwrp/resources/bar.rb +2 -0
  169. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  170. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  171. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  172. data/spec/data/lwrp/resources/foo.rb +2 -0
  173. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  174. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  175. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  176. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  177. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  178. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  179. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  180. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  181. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  182. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  183. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  184. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  185. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  186. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  187. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  188. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  189. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  190. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  191. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  192. data/spec/functional/resource/apt_package_spec.rb +1 -1
  193. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  194. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  195. data/spec/functional/resource/registry_spec.rb +8 -8
  196. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  197. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  198. data/spec/functional/version_spec.rb +1 -1
  199. data/spec/functional/win32/registry_spec.rb +1 -1
  200. data/spec/integration/client/client_spec.rb +5 -2
  201. data/spec/integration/client/exit_code_spec.rb +1 -1
  202. data/spec/integration/client/ipv6_spec.rb +1 -1
  203. data/spec/integration/compliance/compliance_spec.rb +1 -1
  204. data/spec/integration/ohai/ohai_spec.rb +7 -6
  205. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  206. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  207. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  208. data/spec/integration/recipes/notifies_spec.rb +15 -1
  209. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  210. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  211. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  212. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  213. data/spec/spec_helper.rb +10 -13
  214. data/spec/support/chef_helpers.rb +0 -16
  215. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  216. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  217. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  218. data/spec/support/matchers/leak.rb +7 -9
  219. data/spec/support/platform_helpers.rb +1 -8
  220. data/spec/support/shared/integration/integration_helper.rb +0 -1
  221. data/spec/support/shared/unit/script_resource.rb +2 -2
  222. data/spec/unit/application/solo_spec.rb +2 -2
  223. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  224. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  225. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  226. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  227. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  228. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  229. data/spec/unit/compliance/runner_spec.rb +30 -4
  230. data/spec/unit/data_bag_item_spec.rb +1 -6
  231. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  232. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  233. data/spec/unit/lwrp_spec.rb +1 -1
  234. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  235. data/spec/unit/node/attribute_spec.rb +1 -1
  236. data/spec/unit/node_spec.rb +78 -0
  237. data/spec/unit/org_group_spec.rb +45 -0
  238. data/spec/unit/property_spec.rb +23 -22
  239. data/spec/unit/provider/cron_spec.rb +1 -1
  240. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  241. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  242. data/spec/unit/provider/group/pw_spec.rb +2 -2
  243. data/spec/unit/provider/group_spec.rb +1 -1
  244. data/spec/unit/provider/package/apt_spec.rb +84 -18
  245. data/spec/unit/provider/package/deb_spec.rb +3 -3
  246. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  247. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  248. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  249. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  250. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  251. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  252. data/spec/unit/provider/service/windows_spec.rb +2 -2
  253. data/spec/unit/provider/subversion_spec.rb +2 -2
  254. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  255. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  256. data/spec/unit/provider_spec.rb +0 -8
  257. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  258. data/spec/unit/resource/windows_task_spec.rb +1 -1
  259. data/spec/unit/user_spec.rb +1 -1
  260. data/spec/unit/user_v1_spec.rb +6 -4
  261. data/tasks/rspec.rb +15 -7
  262. metadata +17 -380
  263. data/bin/knife +0 -24
  264. data/lib/chef/application/knife.rb +0 -234
  265. data/lib/chef/application/windows_service.rb +0 -338
  266. data/lib/chef/application/windows_service_manager.rb +0 -205
  267. data/lib/chef/chef_fs/knife.rb +0 -160
  268. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  269. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  270. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  271. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  272. data/lib/chef/knife.rb +0 -665
  273. data/lib/chef/knife/acl_add.rb +0 -57
  274. data/lib/chef/knife/acl_base.rb +0 -183
  275. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  276. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  277. data/lib/chef/knife/acl_remove.rb +0 -62
  278. data/lib/chef/knife/acl_show.rb +0 -56
  279. data/lib/chef/knife/bootstrap.rb +0 -1192
  280. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  281. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  282. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  283. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  284. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  285. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  286. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  287. data/lib/chef/knife/client_create.rb +0 -101
  288. data/lib/chef/knife/client_delete.rb +0 -62
  289. data/lib/chef/knife/client_edit.rb +0 -52
  290. data/lib/chef/knife/client_key_create.rb +0 -73
  291. data/lib/chef/knife/client_key_delete.rb +0 -80
  292. data/lib/chef/knife/client_key_edit.rb +0 -83
  293. data/lib/chef/knife/client_key_list.rb +0 -73
  294. data/lib/chef/knife/client_key_show.rb +0 -80
  295. data/lib/chef/knife/client_list.rb +0 -41
  296. data/lib/chef/knife/client_reregister.rb +0 -58
  297. data/lib/chef/knife/client_show.rb +0 -48
  298. data/lib/chef/knife/config_get.rb +0 -39
  299. data/lib/chef/knife/config_get_profile.rb +0 -37
  300. data/lib/chef/knife/config_list.rb +0 -139
  301. data/lib/chef/knife/config_list_profiles.rb +0 -37
  302. data/lib/chef/knife/config_show.rb +0 -127
  303. data/lib/chef/knife/config_use.rb +0 -61
  304. data/lib/chef/knife/config_use_profile.rb +0 -47
  305. data/lib/chef/knife/configure.rb +0 -150
  306. data/lib/chef/knife/configure_client.rb +0 -48
  307. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  308. data/lib/chef/knife/cookbook_delete.rb +0 -151
  309. data/lib/chef/knife/cookbook_download.rb +0 -142
  310. data/lib/chef/knife/cookbook_list.rb +0 -47
  311. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  312. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  313. data/lib/chef/knife/cookbook_show.rb +0 -98
  314. data/lib/chef/knife/cookbook_upload.rb +0 -292
  315. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  316. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  317. data/lib/chef/knife/core/formatting_options.rb +0 -49
  318. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  319. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  320. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  321. data/lib/chef/knife/core/node_editor.rb +0 -130
  322. data/lib/chef/knife/core/node_presenter.rb +0 -133
  323. data/lib/chef/knife/core/object_loader.rb +0 -115
  324. data/lib/chef/knife/core/status_presenter.rb +0 -147
  325. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  326. data/lib/chef/knife/core/text_formatter.rb +0 -85
  327. data/lib/chef/knife/core/ui.rb +0 -338
  328. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  329. data/lib/chef/knife/data_bag_create.rb +0 -81
  330. data/lib/chef/knife/data_bag_delete.rb +0 -49
  331. data/lib/chef/knife/data_bag_edit.rb +0 -74
  332. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  333. data/lib/chef/knife/data_bag_list.rb +0 -42
  334. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  335. data/lib/chef/knife/data_bag_show.rb +0 -69
  336. data/lib/chef/knife/delete.rb +0 -125
  337. data/lib/chef/knife/deps.rb +0 -156
  338. data/lib/chef/knife/diff.rb +0 -83
  339. data/lib/chef/knife/download.rb +0 -84
  340. data/lib/chef/knife/edit.rb +0 -88
  341. data/lib/chef/knife/environment_compare.rb +0 -128
  342. data/lib/chef/knife/environment_create.rb +0 -52
  343. data/lib/chef/knife/environment_delete.rb +0 -44
  344. data/lib/chef/knife/environment_edit.rb +0 -44
  345. data/lib/chef/knife/environment_from_file.rb +0 -84
  346. data/lib/chef/knife/environment_list.rb +0 -41
  347. data/lib/chef/knife/environment_show.rb +0 -47
  348. data/lib/chef/knife/exec.rb +0 -99
  349. data/lib/chef/knife/group_add.rb +0 -55
  350. data/lib/chef/knife/group_create.rb +0 -49
  351. data/lib/chef/knife/group_destroy.rb +0 -53
  352. data/lib/chef/knife/group_list.rb +0 -43
  353. data/lib/chef/knife/group_remove.rb +0 -56
  354. data/lib/chef/knife/group_show.rb +0 -49
  355. data/lib/chef/knife/key_create.rb +0 -112
  356. data/lib/chef/knife/key_create_base.rb +0 -50
  357. data/lib/chef/knife/key_delete.rb +0 -55
  358. data/lib/chef/knife/key_edit.rb +0 -118
  359. data/lib/chef/knife/key_edit_base.rb +0 -55
  360. data/lib/chef/knife/key_list.rb +0 -90
  361. data/lib/chef/knife/key_list_base.rb +0 -45
  362. data/lib/chef/knife/key_show.rb +0 -53
  363. data/lib/chef/knife/list.rb +0 -177
  364. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  365. data/lib/chef/knife/node_create.rb +0 -47
  366. data/lib/chef/knife/node_delete.rb +0 -46
  367. data/lib/chef/knife/node_edit.rb +0 -70
  368. data/lib/chef/knife/node_environment_set.rb +0 -53
  369. data/lib/chef/knife/node_from_file.rb +0 -51
  370. data/lib/chef/knife/node_list.rb +0 -44
  371. data/lib/chef/knife/node_policy_set.rb +0 -79
  372. data/lib/chef/knife/node_run_list_add.rb +0 -104
  373. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  374. data/lib/chef/knife/node_run_list_set.rb +0 -66
  375. data/lib/chef/knife/node_show.rb +0 -63
  376. data/lib/chef/knife/null.rb +0 -12
  377. data/lib/chef/knife/raw.rb +0 -123
  378. data/lib/chef/knife/recipe_list.rb +0 -32
  379. data/lib/chef/knife/rehash.rb +0 -50
  380. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  381. data/lib/chef/knife/role_create.rb +0 -53
  382. data/lib/chef/knife/role_delete.rb +0 -46
  383. data/lib/chef/knife/role_edit.rb +0 -45
  384. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  385. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  386. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  387. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  388. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  389. data/lib/chef/knife/role_from_file.rb +0 -51
  390. data/lib/chef/knife/role_list.rb +0 -42
  391. data/lib/chef/knife/role_run_list_add.rb +0 -87
  392. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  393. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  394. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  395. data/lib/chef/knife/role_run_list_set.rb +0 -69
  396. data/lib/chef/knife/role_show.rb +0 -48
  397. data/lib/chef/knife/search.rb +0 -194
  398. data/lib/chef/knife/serve.rb +0 -65
  399. data/lib/chef/knife/show.rb +0 -72
  400. data/lib/chef/knife/ssh.rb +0 -645
  401. data/lib/chef/knife/ssl_check.rb +0 -284
  402. data/lib/chef/knife/ssl_fetch.rb +0 -161
  403. data/lib/chef/knife/status.rb +0 -95
  404. data/lib/chef/knife/supermarket_download.rb +0 -121
  405. data/lib/chef/knife/supermarket_install.rb +0 -192
  406. data/lib/chef/knife/supermarket_list.rb +0 -76
  407. data/lib/chef/knife/supermarket_search.rb +0 -53
  408. data/lib/chef/knife/supermarket_share.rb +0 -166
  409. data/lib/chef/knife/supermarket_show.rb +0 -66
  410. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  411. data/lib/chef/knife/tag_create.rb +0 -52
  412. data/lib/chef/knife/tag_delete.rb +0 -60
  413. data/lib/chef/knife/tag_list.rb +0 -47
  414. data/lib/chef/knife/upload.rb +0 -86
  415. data/lib/chef/knife/user_create.rb +0 -107
  416. data/lib/chef/knife/user_delete.rb +0 -44
  417. data/lib/chef/knife/user_dissociate.rb +0 -42
  418. data/lib/chef/knife/user_edit.rb +0 -52
  419. data/lib/chef/knife/user_invite_add.rb +0 -43
  420. data/lib/chef/knife/user_invite_list.rb +0 -34
  421. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  422. data/lib/chef/knife/user_key_create.rb +0 -73
  423. data/lib/chef/knife/user_key_delete.rb +0 -80
  424. data/lib/chef/knife/user_key_edit.rb +0 -83
  425. data/lib/chef/knife/user_key_list.rb +0 -73
  426. data/lib/chef/knife/user_key_show.rb +0 -80
  427. data/lib/chef/knife/user_list.rb +0 -42
  428. data/lib/chef/knife/user_reregister.rb +0 -59
  429. data/lib/chef/knife/user_show.rb +0 -48
  430. data/lib/chef/knife/xargs.rb +0 -282
  431. data/lib/chef/knife/yaml_convert.rb +0 -91
  432. data/lib/chef/resource/user/dscl_user.rb +0 -35
  433. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  434. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  435. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  436. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  437. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  438. data/spec/functional/knife/configure_spec.rb +0 -33
  439. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  440. data/spec/functional/knife/exec_spec.rb +0 -55
  441. data/spec/functional/knife/rehash_spec.rb +0 -39
  442. data/spec/functional/knife/smoke_test.rb +0 -42
  443. data/spec/functional/knife/ssh_spec.rb +0 -352
  444. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  445. data/spec/functional/resource/windows_service_spec.rb +0 -105
  446. data/spec/functional/win32/service_manager_spec.rb +0 -220
  447. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  448. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  449. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  450. data/spec/integration/knife/chefignore_spec.rb +0 -301
  451. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  452. data/spec/integration/knife/client_create_spec.rb +0 -70
  453. data/spec/integration/knife/client_delete_spec.rb +0 -64
  454. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  455. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  456. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  457. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  458. data/spec/integration/knife/client_list_spec.rb +0 -49
  459. data/spec/integration/knife/client_show_spec.rb +0 -37
  460. data/spec/integration/knife/common_options_spec.rb +0 -174
  461. data/spec/integration/knife/config_list_spec.rb +0 -220
  462. data/spec/integration/knife/config_show_spec.rb +0 -192
  463. data/spec/integration/knife/config_use_spec.rb +0 -198
  464. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  465. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  466. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  467. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  468. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  469. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  470. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  471. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  472. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  473. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  474. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  475. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  476. data/spec/integration/knife/delete_spec.rb +0 -1018
  477. data/spec/integration/knife/deps_spec.rb +0 -703
  478. data/spec/integration/knife/diff_spec.rb +0 -605
  479. data/spec/integration/knife/download_spec.rb +0 -1336
  480. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  481. data/spec/integration/knife/environment_create_spec.rb +0 -41
  482. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  483. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  484. data/spec/integration/knife/environment_list_spec.rb +0 -42
  485. data/spec/integration/knife/environment_show_spec.rb +0 -77
  486. data/spec/integration/knife/list_spec.rb +0 -1060
  487. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  488. data/spec/integration/knife/node_create_spec.rb +0 -47
  489. data/spec/integration/knife/node_delete_spec.rb +0 -48
  490. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  491. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  492. data/spec/integration/knife/node_list_spec.rb +0 -45
  493. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  494. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  495. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  496. data/spec/integration/knife/node_show_spec.rb +0 -36
  497. data/spec/integration/knife/raw_spec.rb +0 -297
  498. data/spec/integration/knife/redirection_spec.rb +0 -64
  499. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  500. data/spec/integration/knife/role_create_spec.rb +0 -41
  501. data/spec/integration/knife/role_delete_spec.rb +0 -48
  502. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  503. data/spec/integration/knife/role_list_spec.rb +0 -45
  504. data/spec/integration/knife/role_show_spec.rb +0 -51
  505. data/spec/integration/knife/search_node_spec.rb +0 -40
  506. data/spec/integration/knife/serve_spec.rb +0 -92
  507. data/spec/integration/knife/show_spec.rb +0 -197
  508. data/spec/integration/knife/upload_spec.rb +0 -1617
  509. data/spec/support/shared/functional/knife.rb +0 -37
  510. data/spec/support/shared/functional/win32_service.rb +0 -57
  511. data/spec/support/shared/integration/knife_support.rb +0 -192
  512. data/spec/support/shared/unit/knife_shared.rb +0 -39
  513. data/spec/unit/application/knife_spec.rb +0 -241
  514. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  515. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  516. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  517. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  518. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  519. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  520. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  521. data/spec/unit/knife/client_create_spec.rb +0 -169
  522. data/spec/unit/knife/client_delete_spec.rb +0 -99
  523. data/spec/unit/knife/client_edit_spec.rb +0 -53
  524. data/spec/unit/knife/client_list_spec.rb +0 -34
  525. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  526. data/spec/unit/knife/client_show_spec.rb +0 -52
  527. data/spec/unit/knife/configure_client_spec.rb +0 -81
  528. data/spec/unit/knife/configure_spec.rb +0 -190
  529. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  530. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  531. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  532. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  533. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  534. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  535. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  536. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  537. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  538. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  539. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  540. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  541. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  542. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  543. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  544. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  545. data/spec/unit/knife/core/ui_spec.rb +0 -656
  546. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  547. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  548. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  549. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  550. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  551. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  552. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  553. data/spec/unit/knife/environment_create_spec.rb +0 -91
  554. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  555. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  556. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  557. data/spec/unit/knife/environment_list_spec.rb +0 -54
  558. data/spec/unit/knife/environment_show_spec.rb +0 -52
  559. data/spec/unit/knife/key_create_spec.rb +0 -223
  560. data/spec/unit/knife/key_delete_spec.rb +0 -133
  561. data/spec/unit/knife/key_edit_spec.rb +0 -264
  562. data/spec/unit/knife/key_helper.rb +0 -74
  563. data/spec/unit/knife/key_list_spec.rb +0 -216
  564. data/spec/unit/knife/key_show_spec.rb +0 -126
  565. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  566. data/spec/unit/knife/node_delete_spec.rb +0 -77
  567. data/spec/unit/knife/node_edit_spec.rb +0 -116
  568. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  569. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  570. data/spec/unit/knife/node_list_spec.rb +0 -62
  571. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  572. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  573. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  574. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  575. data/spec/unit/knife/node_show_spec.rb +0 -65
  576. data/spec/unit/knife/raw_spec.rb +0 -43
  577. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  578. data/spec/unit/knife/role_create_spec.rb +0 -80
  579. data/spec/unit/knife/role_delete_spec.rb +0 -67
  580. data/spec/unit/knife/role_edit_spec.rb +0 -77
  581. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  582. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  583. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  584. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  585. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  586. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  587. data/spec/unit/knife/role_list_spec.rb +0 -54
  588. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  589. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  590. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  591. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  592. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  593. data/spec/unit/knife/role_show_spec.rb +0 -59
  594. data/spec/unit/knife/ssh_spec.rb +0 -403
  595. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  596. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  597. data/spec/unit/knife/status_spec.rb +0 -112
  598. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  599. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  600. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  601. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  602. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  603. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  604. data/spec/unit/knife/tag_create_spec.rb +0 -23
  605. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  606. data/spec/unit/knife/tag_list_spec.rb +0 -23
  607. data/spec/unit/knife/user_create_spec.rb +0 -184
  608. data/spec/unit/knife/user_delete_spec.rb +0 -46
  609. data/spec/unit/knife/user_edit_spec.rb +0 -48
  610. data/spec/unit/knife/user_list_spec.rb +0 -36
  611. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  612. data/spec/unit/knife/user_show_spec.rb +0 -46
  613. data/spec/unit/knife_spec.rb +0 -634
  614. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  615. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,48 +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 ConfigureClient < Knife
24
- banner "knife configure client DIRECTORY"
25
-
26
- def run
27
- unless @config_dir = @name_args[0]
28
- ui.fatal "You must provide the directory to put the files in"
29
- show_usage
30
- exit(1)
31
- end
32
-
33
- ui.info("Creating client configuration")
34
- FileUtils.mkdir_p(@config_dir)
35
- ui.info("Writing client.rb")
36
- File.open(File.join(@config_dir, "client.rb"), "w") do |file|
37
- file.puts("chef_server_url '#{Chef::Config[:chef_server_url]}'")
38
- file.puts("validation_client_name '#{Chef::Config[:validation_client_name]}'")
39
- end
40
- ui.info("Writing validation.pem")
41
- File.open(File.join(@config_dir, "validation.pem"), "w") do |validation|
42
- validation.puts(IO.read(Chef::Config[:validation_key]))
43
- end
44
- end
45
-
46
- end
47
- end
48
- end
@@ -1,71 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Author:: Daniel DeLeo (<dan@chef.io>)
4
- # Copyright:: Copyright (c) Chef Software Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require_relative "../knife"
21
-
22
- class Chef
23
- class Knife
24
- class CookbookBulkDelete < Knife
25
-
26
- deps do
27
- require_relative "cookbook_delete"
28
- require_relative "../cookbook_version"
29
- end
30
-
31
- option :purge, short: "-p", long: "--purge", boolean: true, description: "Permanently remove files from backing data store."
32
-
33
- banner "knife cookbook bulk delete REGEX (options)"
34
-
35
- def run
36
- unless regex_str = @name_args.first
37
- ui.fatal("You must supply a regular expression to match the results against")
38
- exit 42
39
- end
40
-
41
- regex = Regexp.new(regex_str)
42
-
43
- all_cookbooks = Chef::CookbookVersion.list
44
- cookbooks_names = all_cookbooks.keys.grep(regex)
45
- cookbooks_to_delete = cookbooks_names.inject({}) { |hash, name| hash[name] = all_cookbooks[name]; hash }
46
- ui.msg "All versions of the following cookbooks will be deleted:"
47
- ui.msg ""
48
- ui.msg ui.list(cookbooks_to_delete.keys.sort, :columns_down)
49
- ui.msg ""
50
-
51
- unless config[:yes]
52
- ui.confirm("Do you really want to delete these cookbooks")
53
-
54
- if config[:purge]
55
- ui.msg("Files that are common to multiple cookbooks are shared, so purging the files may break other cookbooks.")
56
- ui.confirm("Are you sure you want to purge files instead of just deleting the cookbooks")
57
- end
58
- ui.msg ""
59
- end
60
-
61
- cookbooks_names.each do |cookbook_name|
62
- versions = rest.get("cookbooks/#{cookbook_name}")[cookbook_name]["versions"].map { |v| v["version"] }.flatten
63
- versions.each do |version|
64
- rest.delete("cookbooks/#{cookbook_name}/#{version}#{config[:purge] ? "?purge=true" : ""}")
65
- ui.info("Deleted cookbook #{cookbook_name.ljust(25)} [#{version}]")
66
- end
67
- end
68
- end
69
- end
70
- end
71
- end
@@ -1,151 +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 CookbookDelete < Knife
24
-
25
- attr_accessor :cookbook_name, :version
26
-
27
- deps do
28
- require_relative "../cookbook_version"
29
- end
30
-
31
- option :all, short: "-a", long: "--all", boolean: true, description: "Delete all versions of the cookbook."
32
-
33
- option :purge, short: "-p", long: "--purge", boolean: true, description: "Permanently remove files from backing data store."
34
-
35
- banner "knife cookbook delete COOKBOOK VERSION (options)"
36
-
37
- def run
38
- confirm("Files that are common to multiple cookbooks are shared, so purging the files may disable other cookbooks. Are you sure you want to purge files instead of just deleting the cookbook") if config[:purge]
39
- @cookbook_name, @version = name_args
40
- if @cookbook_name && @version
41
- delete_explicit_version
42
- elsif @cookbook_name && config[:all]
43
- delete_all_versions
44
- elsif @cookbook_name && @version.nil?
45
- delete_without_explicit_version
46
- elsif @cookbook_name.nil?
47
- show_usage
48
- ui.fatal("You must provide the name of the cookbook to delete.")
49
- exit(1)
50
- end
51
- end
52
-
53
- def delete_explicit_version
54
- delete_object(Chef::CookbookVersion, "#{@cookbook_name} version #{@version}", "cookbook") do
55
- delete_request("cookbooks/#{@cookbook_name}/#{@version}")
56
- end
57
- end
58
-
59
- def delete_all_versions
60
- confirm("Do you really want to delete all versions of #{@cookbook_name}")
61
- delete_all_without_confirmation
62
- end
63
-
64
- def delete_all_without_confirmation
65
- # look up the available versions again just in case the user
66
- # got to the list of versions to delete and selected 'all'
67
- # and also a specific version
68
- @available_versions = nil
69
- Array(available_versions).each do |version|
70
- delete_version_without_confirmation(version)
71
- end
72
- end
73
-
74
- def delete_without_explicit_version
75
- if available_versions.nil?
76
- # we already logged an error or 2 about it, so just bail
77
- exit(1)
78
- elsif available_versions.size == 1
79
- @version = available_versions.first
80
- delete_explicit_version
81
- else
82
- versions_to_delete = ask_which_versions_to_delete
83
- delete_versions_without_confirmation(versions_to_delete)
84
- end
85
- end
86
-
87
- def available_versions
88
- @available_versions ||= rest.get("cookbooks/#{@cookbook_name}").map do |name, url_and_version|
89
- url_and_version["versions"].map { |url_by_version| url_by_version["version"] }
90
- end.flatten
91
- rescue Net::HTTPClientException => e
92
- if /^404/.match?(e.to_s)
93
- ui.error("Cannot find a cookbook named #{@cookbook_name} to delete.")
94
- nil
95
- else
96
- raise
97
- end
98
- end
99
-
100
- def ask_which_versions_to_delete
101
- question = "Which version(s) do you want to delete?\n"
102
- valid_responses = {}
103
- available_versions.each_with_index do |version, index|
104
- valid_responses[(index + 1).to_s] = version
105
- question << "#{index + 1}. #{@cookbook_name} #{version}\n"
106
- end
107
- valid_responses[(available_versions.size + 1).to_s] = :all
108
- question << "#{available_versions.size + 1}. All versions\n\n"
109
- responses = ask_question(question).split(",").map(&:strip)
110
-
111
- if responses.empty?
112
- ui.error("No versions specified, exiting")
113
- exit(1)
114
- end
115
- versions = responses.map do |response|
116
- if version = valid_responses[response]
117
- version
118
- else
119
- ui.error("#{response} is not a valid choice, skipping it")
120
- end
121
- end
122
- versions.compact
123
- end
124
-
125
- def delete_version_without_confirmation(version)
126
- object = delete_request("cookbooks/#{@cookbook_name}/#{version}")
127
- output(format_for_display(object)) if config[:print_after]
128
- ui.info("Deleted cookbook[#{@cookbook_name}][#{version}]")
129
- end
130
-
131
- def delete_versions_without_confirmation(versions)
132
- versions.each do |version|
133
- if version == :all
134
- delete_all_without_confirmation
135
- break
136
- else
137
- delete_version_without_confirmation(version)
138
- end
139
- end
140
- end
141
-
142
- private
143
-
144
- def delete_request(path)
145
- path += "?purge=true" if config[:purge]
146
- rest.delete(path)
147
- end
148
-
149
- end
150
- end
151
- end
@@ -1,142 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Author:: Christopher Walters (<cw@chef.io>)
4
- # Copyright:: Copyright (c) Chef Software Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require_relative "../knife"
21
-
22
- class Chef
23
- class Knife
24
- class CookbookDownload < Knife
25
-
26
- attr_reader :version
27
- attr_accessor :cookbook_name
28
-
29
- deps do
30
- require_relative "../cookbook_version"
31
- end
32
-
33
- banner "knife cookbook download COOKBOOK [VERSION] (options)"
34
-
35
- option :latest,
36
- short: "-N",
37
- long: "--latest",
38
- description: "The version of the cookbook to download.",
39
- boolean: true
40
-
41
- option :download_directory,
42
- short: "-d DOWNLOAD_DIRECTORY",
43
- long: "--dir DOWNLOAD_DIRECTORY",
44
- description: "The directory to download the cookbook into.",
45
- default: Dir.pwd
46
-
47
- option :force,
48
- short: "-f",
49
- long: "--force",
50
- description: "Force download over the download directory if it exists."
51
-
52
- # TODO: tim/cw: 5-23-2010: need to implement knife-side
53
- # specificity for downloads - need to implement --platform and
54
- # --fqdn here
55
- def run
56
- @cookbook_name, @version = @name_args
57
-
58
- if @cookbook_name.nil?
59
- show_usage
60
- ui.fatal("You must specify a cookbook name")
61
- exit 1
62
- elsif @version.nil?
63
- @version = determine_version
64
- if @version.nil?
65
- ui.fatal("No such cookbook found")
66
- exit 1
67
- end
68
- end
69
-
70
- ui.info("Downloading #{@cookbook_name} cookbook version #{@version}")
71
-
72
- cookbook = Chef::CookbookVersion.load(@cookbook_name, @version)
73
- manifest = cookbook.cookbook_manifest
74
-
75
- basedir = File.join(config[:download_directory], "#{@cookbook_name}-#{cookbook.version}")
76
- if File.exist?(basedir)
77
- if config[:force]
78
- Chef::Log.trace("Deleting #{basedir}")
79
- FileUtils.rm_rf(basedir)
80
- else
81
- ui.fatal("Directory #{basedir} exists, use --force to overwrite")
82
- exit
83
- end
84
- end
85
-
86
- manifest.by_parent_directory.each do |segment, files|
87
- ui.info("Downloading #{segment}")
88
- files.each do |segment_file|
89
- dest = File.join(basedir, segment_file["path"].gsub("/", File::SEPARATOR))
90
- Chef::Log.trace("Downloading #{segment_file["path"]} to #{dest}")
91
- FileUtils.mkdir_p(File.dirname(dest))
92
- tempfile = rest.streaming_request(segment_file["url"])
93
- FileUtils.mv(tempfile.path, dest)
94
- end
95
- end
96
- ui.info("Cookbook downloaded to #{basedir}")
97
- end
98
-
99
- def determine_version
100
- if available_versions.nil?
101
- nil
102
- elsif available_versions.size == 1
103
- @version = available_versions.first
104
- elsif config[:latest]
105
- @version = available_versions.last
106
- else
107
- ask_which_version
108
- end
109
- end
110
-
111
- def available_versions
112
- @available_versions ||= begin
113
- versions = Chef::CookbookVersion.available_versions(@cookbook_name)
114
- unless versions.nil?
115
- versions.map! { |version| Chef::Version.new(version) }
116
- versions.sort!
117
- end
118
- versions
119
- end
120
- @available_versions
121
- end
122
-
123
- def ask_which_version
124
- question = "Which version do you want to download?\n"
125
- valid_responses = {}
126
- available_versions.each_with_index do |version, index|
127
- valid_responses[(index + 1).to_s] = version
128
- question << "#{index + 1}. #{@cookbook_name} #{version}\n"
129
- end
130
- question += "\n"
131
- response = ask_question(question).strip
132
-
133
- unless @version = valid_responses[response]
134
- ui.error("'#{response}' is not a valid value.")
135
- exit(1)
136
- end
137
- @version
138
- end
139
-
140
- end
141
- end
142
- end
@@ -1,47 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Author:: Nuo Yan (<nuo@chef.io>)
4
- # Copyright:: Copyright (c) Chef Software Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require_relative "../knife"
21
-
22
- class Chef
23
- class Knife
24
- class CookbookList < Knife
25
-
26
- banner "knife cookbook list (options)"
27
-
28
- option :with_uri,
29
- short: "-w",
30
- long: "--with-uri",
31
- description: "Show corresponding URIs."
32
-
33
- option :all_versions,
34
- short: "-a",
35
- long: "--all",
36
- description: "Show all available versions."
37
-
38
- def run
39
- env = config[:environment]
40
- num_versions = config[:all_versions] ? "num_versions=all" : "num_versions=1"
41
- api_endpoint = env ? "/environments/#{env}/cookbooks?#{num_versions}" : "/cookbooks?#{num_versions}"
42
- cookbook_versions = rest.get(api_endpoint)
43
- ui.output(format_cookbook_list_for_display(cookbook_versions))
44
- end
45
- end
46
- end
47
- end