chef-dk 0.9.0 → 0.10.0

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 (306) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +190 -190
  3. data/Gemfile +26 -26
  4. data/LICENSE +201 -201
  5. data/README.md +292 -276
  6. data/Rakefile +18 -18
  7. data/bin/chef +25 -25
  8. data/chef-dk.gemspec +62 -0
  9. data/lib/chef-dk.rb +19 -19
  10. data/lib/chef-dk/authenticated_http.rb +40 -40
  11. data/lib/chef-dk/builtin_commands.rb +60 -60
  12. data/lib/chef-dk/chef_runner.rb +98 -98
  13. data/lib/chef-dk/cli.rb +200 -200
  14. data/lib/chef-dk/command/base.rb +79 -79
  15. data/lib/chef-dk/command/clean_policy_cookbooks.rb +116 -116
  16. data/lib/chef-dk/command/clean_policy_revisions.rb +113 -113
  17. data/lib/chef-dk/command/delete_policy.rb +122 -122
  18. data/lib/chef-dk/command/delete_policy_group.rb +122 -122
  19. data/lib/chef-dk/command/diff.rb +316 -316
  20. data/lib/chef-dk/command/env.rb +90 -90
  21. data/lib/chef-dk/command/exec.rb +45 -45
  22. data/lib/chef-dk/command/export.rb +151 -151
  23. data/lib/chef-dk/command/gem.rb +47 -47
  24. data/lib/chef-dk/command/generate.rb +120 -120
  25. data/lib/chef-dk/command/generator_commands.rb +80 -80
  26. data/lib/chef-dk/command/generator_commands/app.rb +107 -107
  27. data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
  28. data/lib/chef-dk/command/generator_commands/base.rb +121 -121
  29. data/lib/chef-dk/command/generator_commands/cookbook.rb +153 -119
  30. data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
  31. data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
  32. data/lib/chef-dk/command/generator_commands/generator_generator.rb +177 -177
  33. data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
  34. data/lib/chef-dk/command/generator_commands/policyfile.rb +127 -86
  35. data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
  36. data/lib/chef-dk/command/generator_commands/repo.rb +125 -96
  37. data/lib/chef-dk/command/generator_commands/template.rb +46 -46
  38. data/lib/chef-dk/command/install.rb +121 -121
  39. data/lib/chef-dk/command/provision.rb +438 -438
  40. data/lib/chef-dk/command/push.rb +118 -118
  41. data/lib/chef-dk/command/push_archive.rb +126 -126
  42. data/lib/chef-dk/command/shell_init.rb +180 -180
  43. data/lib/chef-dk/command/show_policy.rb +165 -165
  44. data/lib/chef-dk/command/undelete.rb +155 -155
  45. data/lib/chef-dk/command/update.rb +129 -129
  46. data/lib/chef-dk/command/verify.rb +534 -490
  47. data/lib/chef-dk/commands_map.rb +115 -115
  48. data/lib/chef-dk/completions/bash.sh.erb +5 -5
  49. data/lib/chef-dk/completions/chef.fish.erb +10 -10
  50. data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
  51. data/lib/chef-dk/component_test.rb +173 -171
  52. data/lib/chef-dk/configurable.rb +57 -57
  53. data/lib/chef-dk/cookbook_metadata.rb +45 -45
  54. data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
  55. data/lib/chef-dk/cookbook_profiler/git.rb +151 -151
  56. data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
  57. data/lib/chef-dk/cookbook_profiler/null_scm.rb +32 -32
  58. data/lib/chef-dk/exceptions.rb +126 -113
  59. data/lib/chef-dk/generator.rb +163 -163
  60. data/lib/chef-dk/helpers.rb +159 -159
  61. data/lib/chef-dk/pager.rb +106 -106
  62. data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -122
  63. data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
  64. data/lib/chef-dk/policyfile/community_cookbook_source.rb +97 -82
  65. data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
  66. data/lib/chef-dk/policyfile/cookbook_location_specification.rb +141 -133
  67. data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
  68. data/lib/chef-dk/policyfile/cookbook_sources.rb +22 -21
  69. data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +90 -0
  70. data/lib/chef-dk/policyfile/differ.rb +266 -266
  71. data/lib/chef-dk/policyfile/dsl.rb +223 -197
  72. data/lib/chef-dk/policyfile/lister.rb +232 -232
  73. data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
  74. data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
  75. data/lib/chef-dk/policyfile/reports/install.rb +70 -70
  76. data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
  77. data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
  78. data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
  79. data/lib/chef-dk/policyfile/storage_config.rb +100 -100
  80. data/lib/chef-dk/policyfile/undo_record.rb +142 -142
  81. data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
  82. data/lib/chef-dk/policyfile/uploader.rb +213 -213
  83. data/lib/chef-dk/policyfile_compiler.rb +380 -322
  84. data/lib/chef-dk/policyfile_lock.rb +552 -552
  85. data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
  86. data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
  87. data/lib/chef-dk/policyfile_services/export_repo.rb +309 -309
  88. data/lib/chef-dk/policyfile_services/install.rb +125 -125
  89. data/lib/chef-dk/policyfile_services/push.rb +114 -114
  90. data/lib/chef-dk/policyfile_services/push_archive.rb +173 -173
  91. data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
  92. data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
  93. data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
  94. data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
  95. data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
  96. data/lib/chef-dk/service_exception_inspectors.rb +25 -25
  97. data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
  98. data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
  99. data/lib/chef-dk/service_exceptions.rb +143 -143
  100. data/lib/chef-dk/shell_out.rb +36 -36
  101. data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
  102. data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +100 -100
  103. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
  104. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
  105. data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -16
  106. data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +28 -28
  107. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -27
  108. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -7
  109. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
  110. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
  111. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +58 -58
  112. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
  113. data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -0
  114. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
  115. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
  116. data/lib/chef-dk/skeletons/code_generator/files/default/repo/policies/README.md +24 -0
  117. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
  118. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
  119. data/lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb +8 -8
  120. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
  121. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +2 -0
  122. data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
  123. data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +97 -97
  124. data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
  125. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +117 -104
  126. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
  127. data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
  128. data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
  129. data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +27 -27
  130. data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +67 -48
  131. data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
  132. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
  133. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.apache2.erb +201 -201
  134. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
  135. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
  136. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
  137. data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +25 -20
  138. data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
  139. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +21 -16
  140. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +32 -27
  141. data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
  142. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
  143. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +20 -20
  144. data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
  145. data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +9 -9
  146. data/lib/chef-dk/ui.rb +58 -58
  147. data/lib/chef-dk/version.rb +20 -20
  148. data/lib/kitchen/provisioner/policyfile_zero.rb +189 -193
  149. data/spec/shared/a_file_generator.rb +125 -125
  150. data/spec/shared/a_generated_file.rb +12 -12
  151. data/spec/shared/command_with_ui_object.rb +11 -11
  152. data/spec/shared/custom_generator_cookbook.rb +117 -117
  153. data/spec/shared/fixture_cookbook_checksums.rb +47 -47
  154. data/spec/shared/setup_git_cookbooks.rb +53 -53
  155. data/spec/spec_helper.rb +50 -49
  156. data/spec/test_helpers.rb +84 -84
  157. data/spec/unit/chef_runner_spec.rb +111 -111
  158. data/spec/unit/cli_spec.rb +357 -357
  159. data/spec/unit/command/base_spec.rb +169 -169
  160. data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
  161. data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
  162. data/spec/unit/command/delete_policy_group_spec.rb +207 -207
  163. data/spec/unit/command/delete_policy_spec.rb +207 -207
  164. data/spec/unit/command/diff_spec.rb +312 -312
  165. data/spec/unit/command/env_spec.rb +52 -52
  166. data/spec/unit/command/exec_spec.rb +179 -179
  167. data/spec/unit/command/export_spec.rb +189 -189
  168. data/spec/unit/command/generate_spec.rb +142 -142
  169. data/spec/unit/command/generator_commands/app_spec.rb +169 -169
  170. data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
  171. data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
  172. data/spec/unit/command/generator_commands/cookbook_spec.rb +450 -320
  173. data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -229
  174. data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
  175. data/spec/unit/command/generator_commands/policyfile_spec.rb +225 -125
  176. data/spec/unit/command/generator_commands/recipe_spec.rb +34 -34
  177. data/spec/unit/command/generator_commands/repo_spec.rb +367 -283
  178. data/spec/unit/command/generator_commands/template_spec.rb +32 -32
  179. data/spec/unit/command/install_spec.rb +179 -179
  180. data/spec/unit/command/provision_spec.rb +592 -592
  181. data/spec/unit/command/push_archive_spec.rb +153 -153
  182. data/spec/unit/command/push_spec.rb +199 -199
  183. data/spec/unit/command/shell_init_spec.rb +329 -329
  184. data/spec/unit/command/show_policy_spec.rb +235 -235
  185. data/spec/unit/command/undelete_spec.rb +246 -246
  186. data/spec/unit/command/update_spec.rb +251 -251
  187. data/spec/unit/command/verify_spec.rb +325 -323
  188. data/spec/unit/commands_map_spec.rb +57 -57
  189. data/spec/unit/component_test_spec.rb +126 -126
  190. data/spec/unit/cookbook_metadata_spec.rb +98 -98
  191. data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
  192. data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
  193. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
  194. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
  195. data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
  196. data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
  197. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
  198. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
  199. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
  200. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
  201. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
  202. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
  203. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
  204. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
  205. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
  206. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
  207. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
  208. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
  209. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
  210. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
  211. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
  212. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
  213. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
  214. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
  215. data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
  216. data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
  217. data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
  218. data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -36
  219. data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
  220. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
  221. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
  222. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
  223. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
  224. data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
  225. data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
  226. data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
  227. data/spec/unit/fixtures/example_cookbook/README.md +4 -4
  228. data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
  229. data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
  230. data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
  231. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
  232. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
  233. data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
  234. data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
  235. data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
  236. data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
  237. data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
  238. data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
  239. data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
  240. data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
  241. data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
  242. data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
  243. data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
  244. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
  245. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
  246. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
  247. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
  248. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
  249. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
  250. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
  251. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
  252. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
  253. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
  254. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
  255. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
  256. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
  257. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
  258. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
  259. data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
  260. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
  261. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
  262. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
  263. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
  264. data/spec/unit/generator_spec.rb +120 -120
  265. data/spec/unit/helpers_spec.rb +92 -92
  266. data/spec/unit/pager_spec.rb +119 -119
  267. data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -66
  268. data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
  269. data/spec/unit/policyfile/community_cookbook_source_spec.rb +84 -51
  270. data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
  271. data/spec/unit/policyfile/cookbook_location_specification_spec.rb +257 -252
  272. data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
  273. data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +130 -0
  274. data/spec/unit/policyfile/differ_spec.rb +687 -687
  275. data/spec/unit/policyfile/lister_spec.rb +272 -272
  276. data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
  277. data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
  278. data/spec/unit/policyfile/reports/install_spec.rb +115 -115
  279. data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
  280. data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
  281. data/spec/unit/policyfile/storage_config_spec.rb +172 -172
  282. data/spec/unit/policyfile/undo_record_spec.rb +260 -260
  283. data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
  284. data/spec/unit/policyfile/uploader_spec.rb +410 -410
  285. data/spec/unit/policyfile_demands_spec.rb +997 -876
  286. data/spec/unit/policyfile_evaluation_spec.rb +557 -441
  287. data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
  288. data/spec/unit/policyfile_lock_install_spec.rb +138 -138
  289. data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
  290. data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
  291. data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
  292. data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
  293. data/spec/unit/policyfile_services/export_repo_spec.rb +439 -439
  294. data/spec/unit/policyfile_services/install_spec.rb +191 -191
  295. data/spec/unit/policyfile_services/push_archive_spec.rb +345 -345
  296. data/spec/unit/policyfile_services/push_spec.rb +233 -233
  297. data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
  298. data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
  299. data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
  300. data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
  301. data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
  302. data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
  303. data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
  304. data/spec/unit/shell_out_spec.rb +34 -34
  305. data/warning.txt +9 -0
  306. metadata +18 -5
@@ -1,90 +1,90 @@
1
- #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require 'chef-dk/command/base'
19
- require 'chef-dk/cookbook_omnifetch'
20
- require 'chef-dk/ui'
21
- require 'chef-dk/version'
22
- require 'mixlib/shellout'
23
- require 'yaml'
24
-
25
- module ChefDK
26
- module Command
27
- class Env < ChefDK::Command::Base
28
- banner "Usage: chef env"
29
-
30
- attr_accessor :ui
31
-
32
- def initialize(*args)
33
- super
34
- @ui = UI.new
35
- end
36
-
37
- def run(params)
38
- info = {}
39
- info['Chef Development Kit'] = Hash.new.tap do |chefdk_env|
40
- chefdk_env['ChefDK'] = chefdk_info
41
- chefdk_env['Ruby'] = ruby_info
42
- chefdk_env['Path'] = paths
43
- end
44
- ui.msg info.to_yaml
45
- end
46
-
47
- def chefdk_info
48
- Hash.new.tap do |chefdk|
49
- chefdk['ChefDK Version'] = ChefDK::VERSION
50
- chefdk['ChefDK Home'] = chefdk_home
51
- chefdk['ChefDK Install Directory'] = omnibus_root
52
- chefdk['Policyfile Config'] = policyfile_config
53
- end
54
- end
55
-
56
- def ruby_info
57
- Hash.new.tap do |ruby|
58
- ruby['Ruby Executable'] = Gem.ruby
59
- ruby['Ruby Version'] = RUBY_VERSION
60
- ruby['RubyGems'] = Hash.new.tap do |rubygems|
61
- rubygems['RubyGems Version'] = Gem::VERSION
62
- rubygems['RubyGems Platforms'] = Gem.platforms.map(&:to_s)
63
- rubygems['Gem Environment'] = gem_environment
64
- end
65
- end
66
- end
67
-
68
- def gem_environment
69
- Hash.new.tap do |h|
70
- h['GEM ROOT'] = omnibus_env['GEM_ROOT']
71
- h['GEM HOME'] = omnibus_env['GEM_HOME']
72
- h['GEM PATHS'] = omnibus_env['GEM_PATH'].split(File::PATH_SEPARATOR)
73
- end
74
- end
75
-
76
- def paths
77
- omnibus_env['PATH'].split(File::PATH_SEPARATOR)
78
- end
79
-
80
- def policyfile_config
81
- Hash.new.tap do |h|
82
- h['Cache Path'] = CookbookOmnifetch.cache_path
83
- h['Storage Path'] = CookbookOmnifetch.storage_path.to_s
84
- end
85
- end
86
-
87
- end
88
- end
89
- end
90
-
1
+ #
2
+ # Copyright:: Copyright (c) 2015 Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'chef-dk/command/base'
19
+ require 'chef-dk/cookbook_omnifetch'
20
+ require 'chef-dk/ui'
21
+ require 'chef-dk/version'
22
+ require 'mixlib/shellout'
23
+ require 'yaml'
24
+
25
+ module ChefDK
26
+ module Command
27
+ class Env < ChefDK::Command::Base
28
+ banner "Usage: chef env"
29
+
30
+ attr_accessor :ui
31
+
32
+ def initialize(*args)
33
+ super
34
+ @ui = UI.new
35
+ end
36
+
37
+ def run(params)
38
+ info = {}
39
+ info['Chef Development Kit'] = Hash.new.tap do |chefdk_env|
40
+ chefdk_env['ChefDK'] = chefdk_info
41
+ chefdk_env['Ruby'] = ruby_info
42
+ chefdk_env['Path'] = paths
43
+ end
44
+ ui.msg info.to_yaml
45
+ end
46
+
47
+ def chefdk_info
48
+ Hash.new.tap do |chefdk|
49
+ chefdk['ChefDK Version'] = ChefDK::VERSION
50
+ chefdk['ChefDK Home'] = chefdk_home
51
+ chefdk['ChefDK Install Directory'] = omnibus_root
52
+ chefdk['Policyfile Config'] = policyfile_config
53
+ end
54
+ end
55
+
56
+ def ruby_info
57
+ Hash.new.tap do |ruby|
58
+ ruby['Ruby Executable'] = Gem.ruby
59
+ ruby['Ruby Version'] = RUBY_VERSION
60
+ ruby['RubyGems'] = Hash.new.tap do |rubygems|
61
+ rubygems['RubyGems Version'] = Gem::VERSION
62
+ rubygems['RubyGems Platforms'] = Gem.platforms.map(&:to_s)
63
+ rubygems['Gem Environment'] = gem_environment
64
+ end
65
+ end
66
+ end
67
+
68
+ def gem_environment
69
+ Hash.new.tap do |h|
70
+ h['GEM ROOT'] = omnibus_env['GEM_ROOT']
71
+ h['GEM HOME'] = omnibus_env['GEM_HOME']
72
+ h['GEM PATHS'] = omnibus_env['GEM_PATH'].split(File::PATH_SEPARATOR)
73
+ end
74
+ end
75
+
76
+ def paths
77
+ omnibus_env['PATH'].split(File::PATH_SEPARATOR)
78
+ end
79
+
80
+ def policyfile_config
81
+ Hash.new.tap do |h|
82
+ h['Cache Path'] = CookbookOmnifetch.cache_path
83
+ h['Storage Path'] = CookbookOmnifetch.storage_path.to_s
84
+ end
85
+ end
86
+
87
+ end
88
+ end
89
+ end
90
+
@@ -1,45 +1,45 @@
1
- #
2
- # Copyright:: Copyright (c) 2014 Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require 'chef-dk/command/base'
19
- require 'mixlib/shellout'
20
-
21
- module ChefDK
22
- module Command
23
- class Exec < ChefDK::Command::Base
24
- banner "Usage: chef exec SYSTEM_COMMAND"
25
-
26
- def run(params)
27
- # Set ENV directly on the "parent" process (us) before running #exec to
28
- # ensure the custom PATH is honored when finding the command to exec
29
- omnibus_env.each {|var, value| ENV[var] = value }
30
- exec(*params)
31
- raise "Exec failed without an exception, your ruby is buggy" # should never get here
32
- end
33
-
34
- def needs_version?(params)
35
- # Force version to get passed down to command
36
- false
37
- end
38
-
39
- def needs_help?(params)
40
- ['-h', '--help'].include? params[0]
41
- end
42
- end
43
- end
44
- end
45
-
1
+ #
2
+ # Copyright:: Copyright (c) 2014 Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'chef-dk/command/base'
19
+ require 'mixlib/shellout'
20
+
21
+ module ChefDK
22
+ module Command
23
+ class Exec < ChefDK::Command::Base
24
+ banner "Usage: chef exec SYSTEM_COMMAND"
25
+
26
+ def run(params)
27
+ # Set ENV directly on the "parent" process (us) before running #exec to
28
+ # ensure the custom PATH is honored when finding the command to exec
29
+ omnibus_env.each {|var, value| ENV[var] = value }
30
+ exec(*params)
31
+ raise "Exec failed without an exception, your ruby is buggy" # should never get here
32
+ end
33
+
34
+ def needs_version?(params)
35
+ # Force version to get passed down to command
36
+ false
37
+ end
38
+
39
+ def needs_help?(params)
40
+ ['-h', '--help'].include? params[0]
41
+ end
42
+ end
43
+ end
44
+ end
45
+
@@ -1,151 +1,151 @@
1
- #
2
- # Copyright:: Copyright (c) 2014 Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require 'chef-dk/command/base'
19
- require 'chef-dk/ui'
20
- require 'chef-dk/policyfile_services/export_repo'
21
- require 'chef-dk/configurable'
22
-
23
- module ChefDK
24
- module Command
25
-
26
- class Export < Base
27
-
28
- include Configurable
29
-
30
- banner(<<-E)
31
- Usage: chef export [ POLICY_FILE ] DESTINATION_DIRECTORY [options]
32
-
33
- `chef export` creates a Chef Zero compatible Chef repository containing the
34
- cookbooks described in a Policyfile.lock.json. The exported repository also
35
- contains a client.rb which configures chef to apply your policy. Once the
36
- exported repo is copied to the target machine, you can apply the policy to the
37
- machine with:
38
-
39
- `chef-client -c client.rb -z`.
40
-
41
- See our detailed README for more information:
42
-
43
- https://github.com/opscode/chef-dk/blob/master/POLICYFILE_README.md
44
-
45
- Options:
46
-
47
- E
48
-
49
- option :archive,
50
- short: "-a",
51
- long: "--archive",
52
- description: "Export as a tarball archive rather than a directory",
53
- default: false,
54
- boolean: true
55
-
56
- option :force,
57
- short: "-f",
58
- long: "--force",
59
- description: "If the DESTINATION_DIRECTORY is not empty, remove its content.",
60
- default: false,
61
- boolean: true
62
-
63
- option :debug,
64
- short: "-D",
65
- long: "--debug",
66
- description: "Enable stacktraces and other debug output",
67
- default: false
68
-
69
- attr_reader :policyfile_relative_path
70
- attr_reader :export_dir
71
-
72
- attr_accessor :ui
73
-
74
- def initialize(*args)
75
- super
76
- @push = nil
77
- @ui = nil
78
- @policyfile_relative_path = nil
79
- @export_dir = nil
80
- @chef_config = nil
81
- @ui = UI.new
82
- end
83
-
84
- def run(params = [])
85
- return 1 unless apply_params!(params)
86
- export_service.run
87
- ui.msg("Exported policy '#{export_service.policyfile_lock.name}' to #{export_target}")
88
- 0
89
- rescue ExportDirNotEmpty => e
90
- ui.err("ERROR: " + e.message)
91
- ui.err("Use --force to force export")
92
- 1
93
- rescue PolicyfileServiceError => e
94
- handle_error(e)
95
- 1
96
- end
97
-
98
- def export_target
99
- if archive?
100
- export_service.archive_file_location
101
- else
102
- export_dir
103
- end
104
- end
105
-
106
- def debug?
107
- !!config[:debug]
108
- end
109
-
110
- def archive?
111
- !!config[:archive]
112
- end
113
-
114
- def export_service
115
- @export_service ||= PolicyfileServices::ExportRepo.new(policyfile: policyfile_relative_path,
116
- export_dir: export_dir,
117
- root_dir: Dir.pwd,
118
- archive: archive?,
119
- force: config[:force])
120
- end
121
-
122
- def handle_error(error)
123
- ui.err("Error: #{error.message}")
124
- if error.respond_to?(:reason)
125
- ui.err("Reason: #{error.reason}")
126
- ui.err("")
127
- ui.err(error.extended_error_info) if debug?
128
- ui.err(error.cause.backtrace.join("\n")) if debug?
129
- end
130
- end
131
-
132
- def apply_params!(params)
133
- remaining_args = parse_options(params)
134
- case remaining_args.size
135
- when 1
136
- @export_dir = remaining_args[0]
137
- when 2
138
- @policyfile_relative_path, @export_dir = remaining_args
139
- else
140
- ui.err(opt_parser)
141
- ui.err("\n")
142
- return false
143
- end
144
- true
145
- end
146
-
147
- end
148
- end
149
- end
150
-
151
-
1
+ #
2
+ # Copyright:: Copyright (c) 2014 Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'chef-dk/command/base'
19
+ require 'chef-dk/ui'
20
+ require 'chef-dk/policyfile_services/export_repo'
21
+ require 'chef-dk/configurable'
22
+
23
+ module ChefDK
24
+ module Command
25
+
26
+ class Export < Base
27
+
28
+ include Configurable
29
+
30
+ banner(<<-E)
31
+ Usage: chef export [ POLICY_FILE ] DESTINATION_DIRECTORY [options]
32
+
33
+ `chef export` creates a Chef Zero compatible Chef repository containing the
34
+ cookbooks described in a Policyfile.lock.json. The exported repository also
35
+ contains a client.rb which configures chef to apply your policy. Once the
36
+ exported repo is copied to the target machine, you can apply the policy to the
37
+ machine with:
38
+
39
+ `chef-client -c client.rb -z`.
40
+
41
+ See our detailed README for more information:
42
+
43
+ https://github.com/opscode/chef-dk/blob/master/POLICYFILE_README.md
44
+
45
+ Options:
46
+
47
+ E
48
+
49
+ option :archive,
50
+ short: "-a",
51
+ long: "--archive",
52
+ description: "Export as a tarball archive rather than a directory",
53
+ default: false,
54
+ boolean: true
55
+
56
+ option :force,
57
+ short: "-f",
58
+ long: "--force",
59
+ description: "If the DESTINATION_DIRECTORY is not empty, remove its content.",
60
+ default: false,
61
+ boolean: true
62
+
63
+ option :debug,
64
+ short: "-D",
65
+ long: "--debug",
66
+ description: "Enable stacktraces and other debug output",
67
+ default: false
68
+
69
+ attr_reader :policyfile_relative_path
70
+ attr_reader :export_dir
71
+
72
+ attr_accessor :ui
73
+
74
+ def initialize(*args)
75
+ super
76
+ @push = nil
77
+ @ui = nil
78
+ @policyfile_relative_path = nil
79
+ @export_dir = nil
80
+ @chef_config = nil
81
+ @ui = UI.new
82
+ end
83
+
84
+ def run(params = [])
85
+ return 1 unless apply_params!(params)
86
+ export_service.run
87
+ ui.msg("Exported policy '#{export_service.policyfile_lock.name}' to #{export_target}")
88
+ 0
89
+ rescue ExportDirNotEmpty => e
90
+ ui.err("ERROR: " + e.message)
91
+ ui.err("Use --force to force export")
92
+ 1
93
+ rescue PolicyfileServiceError => e
94
+ handle_error(e)
95
+ 1
96
+ end
97
+
98
+ def export_target
99
+ if archive?
100
+ export_service.archive_file_location
101
+ else
102
+ export_dir
103
+ end
104
+ end
105
+
106
+ def debug?
107
+ !!config[:debug]
108
+ end
109
+
110
+ def archive?
111
+ !!config[:archive]
112
+ end
113
+
114
+ def export_service
115
+ @export_service ||= PolicyfileServices::ExportRepo.new(policyfile: policyfile_relative_path,
116
+ export_dir: export_dir,
117
+ root_dir: Dir.pwd,
118
+ archive: archive?,
119
+ force: config[:force])
120
+ end
121
+
122
+ def handle_error(error)
123
+ ui.err("Error: #{error.message}")
124
+ if error.respond_to?(:reason)
125
+ ui.err("Reason: #{error.reason}")
126
+ ui.err("")
127
+ ui.err(error.extended_error_info) if debug?
128
+ ui.err(error.cause.backtrace.join("\n")) if debug?
129
+ end
130
+ end
131
+
132
+ def apply_params!(params)
133
+ remaining_args = parse_options(params)
134
+ case remaining_args.size
135
+ when 1
136
+ @export_dir = remaining_args[0]
137
+ when 2
138
+ @policyfile_relative_path, @export_dir = remaining_args
139
+ else
140
+ ui.err(opt_parser)
141
+ ui.err("\n")
142
+ return false
143
+ end
144
+ true
145
+ end
146
+
147
+ end
148
+ end
149
+ end
150
+
151
+