chef-dk 0.8.0 → 0.9.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.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +190 -190
- data/Gemfile +26 -0
- data/LICENSE +201 -201
- data/README.md +276 -276
- data/Rakefile +18 -18
- data/bin/chef +25 -25
- data/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +40 -40
- data/lib/chef-dk/builtin_commands.rb +60 -60
- data/lib/chef-dk/chef_runner.rb +98 -98
- data/lib/chef-dk/cli.rb +200 -200
- data/lib/chef-dk/command/base.rb +79 -75
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +116 -116
- data/lib/chef-dk/command/clean_policy_revisions.rb +113 -113
- data/lib/chef-dk/command/delete_policy.rb +122 -122
- data/lib/chef-dk/command/delete_policy_group.rb +122 -122
- data/lib/chef-dk/command/diff.rb +316 -316
- data/lib/chef-dk/command/env.rb +90 -90
- data/lib/chef-dk/command/exec.rb +45 -45
- data/lib/chef-dk/command/export.rb +151 -153
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +120 -118
- data/lib/chef-dk/command/generator_commands.rb +80 -80
- data/lib/chef-dk/command/generator_commands/app.rb +107 -107
- data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
- data/lib/chef-dk/command/generator_commands/base.rb +121 -121
- data/lib/chef-dk/command/generator_commands/cookbook.rb +119 -108
- data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +177 -0
- data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +86 -83
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +96 -96
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +121 -121
- data/lib/chef-dk/command/provision.rb +438 -438
- data/lib/chef-dk/command/push.rb +118 -118
- data/lib/chef-dk/command/push_archive.rb +126 -126
- data/lib/chef-dk/command/shell_init.rb +180 -180
- data/lib/chef-dk/command/show_policy.rb +165 -165
- data/lib/chef-dk/command/undelete.rb +155 -155
- data/lib/chef-dk/command/update.rb +129 -129
- data/lib/chef-dk/command/verify.rb +490 -453
- data/lib/chef-dk/commands_map.rb +115 -115
- data/lib/chef-dk/completions/bash.sh.erb +5 -5
- data/lib/chef-dk/completions/chef.fish.erb +10 -10
- data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
- data/lib/chef-dk/component_test.rb +171 -171
- data/lib/chef-dk/configurable.rb +57 -52
- data/lib/chef-dk/cookbook_metadata.rb +45 -45
- data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
- data/lib/chef-dk/cookbook_profiler/git.rb +151 -151
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +32 -32
- data/lib/chef-dk/exceptions.rb +113 -113
- data/lib/chef-dk/generator.rb +163 -162
- data/lib/chef-dk/helpers.rb +159 -159
- data/lib/chef-dk/pager.rb +106 -106
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +122 -122
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +82 -82
- data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +133 -133
- data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
- data/lib/chef-dk/policyfile/cookbook_sources.rb +21 -21
- data/lib/chef-dk/policyfile/differ.rb +266 -266
- data/lib/chef-dk/policyfile/dsl.rb +197 -197
- data/lib/chef-dk/policyfile/lister.rb +232 -232
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +70 -70
- data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
- data/lib/chef-dk/policyfile/storage_config.rb +100 -100
- data/lib/chef-dk/policyfile/undo_record.rb +142 -142
- data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +322 -322
- data/lib/chef-dk/policyfile_lock.rb +552 -552
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
- data/lib/chef-dk/policyfile_services/export_repo.rb +309 -281
- data/lib/chef-dk/policyfile_services/install.rb +125 -125
- data/lib/chef-dk/policyfile_services/push.rb +114 -114
- data/lib/chef-dk/policyfile_services/push_archive.rb +173 -173
- data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
- data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
- data/lib/chef-dk/service_exception_inspectors.rb +25 -25
- data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
- data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
- data/lib/chef-dk/service_exceptions.rb +143 -143
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +100 -100
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -16
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +28 -28
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +57 -57
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb +8 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +97 -97
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +104 -92
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
- data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +27 -27
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +48 -47
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.apache2.erb +201 -201
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
- data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +20 -16
- data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +16 -16
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +27 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +20 -20
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
- data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +9 -9
- data/lib/chef-dk/ui.rb +58 -58
- data/lib/chef-dk/version.rb +20 -20
- data/lib/kitchen/provisioner/policyfile_zero.rb +193 -164
- data/spec/shared/a_file_generator.rb +125 -125
- data/spec/shared/a_generated_file.rb +12 -12
- data/spec/shared/command_with_ui_object.rb +11 -11
- data/spec/shared/custom_generator_cookbook.rb +117 -117
- data/spec/shared/fixture_cookbook_checksums.rb +47 -47
- data/spec/shared/setup_git_cookbooks.rb +53 -53
- data/spec/spec_helper.rb +49 -48
- data/spec/test_helpers.rb +84 -84
- data/spec/unit/chef_runner_spec.rb +111 -110
- data/spec/unit/cli_spec.rb +357 -357
- data/spec/unit/command/base_spec.rb +169 -136
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
- data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
- data/spec/unit/command/delete_policy_group_spec.rb +207 -207
- data/spec/unit/command/delete_policy_spec.rb +207 -207
- data/spec/unit/command/diff_spec.rb +312 -312
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +179 -179
- data/spec/unit/command/export_spec.rb +189 -189
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +169 -169
- data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
- data/spec/unit/command/generator_commands/cookbook_spec.rb +320 -240
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -0
- data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
- data/spec/unit/command/generator_commands/policyfile_spec.rb +125 -125
- data/spec/unit/command/generator_commands/recipe_spec.rb +34 -34
- data/spec/unit/command/generator_commands/repo_spec.rb +283 -283
- data/spec/unit/command/generator_commands/template_spec.rb +32 -32
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +592 -592
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +199 -199
- data/spec/unit/command/shell_init_spec.rb +329 -329
- data/spec/unit/command/show_policy_spec.rb +235 -235
- data/spec/unit/command/undelete_spec.rb +246 -246
- data/spec/unit/command/update_spec.rb +251 -251
- data/spec/unit/command/verify_spec.rb +323 -322
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/component_test_spec.rb +126 -126
- data/spec/unit/cookbook_metadata_spec.rb +98 -98
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
- data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
- data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
- data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
- data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
- data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -36
- data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
- data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/generator_spec.rb +120 -120
- data/spec/unit/helpers_spec.rb +92 -92
- data/spec/unit/pager_spec.rb +119 -119
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +66 -66
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +51 -51
- data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +252 -252
- data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
- data/spec/unit/policyfile/differ_spec.rb +687 -687
- data/spec/unit/policyfile/lister_spec.rb +272 -272
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +115 -115
- data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
- data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
- data/spec/unit/policyfile/storage_config_spec.rb +172 -172
- data/spec/unit/policyfile/undo_record_spec.rb +260 -260
- data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
- data/spec/unit/policyfile/uploader_spec.rb +410 -410
- data/spec/unit/policyfile_demands_spec.rb +876 -876
- data/spec/unit/policyfile_evaluation_spec.rb +441 -441
- data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
- data/spec/unit/policyfile_lock_install_spec.rb +138 -138
- data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
- data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
- data/spec/unit/policyfile_services/export_repo_spec.rb +439 -416
- data/spec/unit/policyfile_services/install_spec.rb +191 -191
- data/spec/unit/policyfile_services/push_archive_spec.rb +345 -345
- data/spec/unit/policyfile_services/push_spec.rb +233 -233
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
- data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
- data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
- data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
- data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
- data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
- data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
- data/spec/unit/shell_out_spec.rb +34 -34
- metadata +9 -3
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) <%= year %> <%= copyright_holder %>
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
all copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
THE SOFTWARE.
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) <%= year %> <%= copyright_holder %>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
# Policyfile.rb - Describe how you want Chef to build your system.
|
|
2
|
-
#
|
|
3
|
-
# For more information on the Policyfile feature, visit
|
|
4
|
-
# https://github.com/opscode/chef-dk/blob/master/POLICYFILE_README.md
|
|
5
|
-
|
|
6
|
-
# A name that describes what the system you're building with Chef does.
|
|
7
|
-
name "
|
|
8
|
-
|
|
9
|
-
# Where to find external cookbooks:
|
|
10
|
-
default_source :
|
|
11
|
-
|
|
12
|
-
# run_list: chef-client will run these recipes in the order specified.
|
|
13
|
-
run_list "
|
|
14
|
-
|
|
15
|
-
# Specify a custom source for a single cookbook:
|
|
16
|
-
|
|
1
|
+
# Policyfile.rb - Describe how you want Chef to build your system.
|
|
2
|
+
#
|
|
3
|
+
# For more information on the Policyfile feature, visit
|
|
4
|
+
# https://github.com/opscode/chef-dk/blob/master/POLICYFILE_README.md
|
|
5
|
+
|
|
6
|
+
# A name that describes what the system you're building with Chef does.
|
|
7
|
+
name "<%= policy_name %>"
|
|
8
|
+
|
|
9
|
+
# Where to find external cookbooks:
|
|
10
|
+
default_source :supermarket
|
|
11
|
+
|
|
12
|
+
# run_list: chef-client will run these recipes in the order specified.
|
|
13
|
+
run_list "<%= policy_run_list %>"
|
|
14
|
+
|
|
15
|
+
# Specify a custom source for a single cookbook:
|
|
16
|
+
<% if policy_local_cookbook.nil? %>
|
|
17
|
+
# cookbook "example_cookbook", path: "../cookbooks/example_cookbook"
|
|
18
|
+
<% else %>
|
|
19
|
+
cookbook "<%= cookbook_name %>", path: "."
|
|
20
|
+
<% end %>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# <%= cookbook_name %>
|
|
2
|
-
|
|
3
|
-
TODO: Enter the cookbook description here.
|
|
4
|
-
|
|
1
|
+
# <%= cookbook_name %>
|
|
2
|
+
|
|
3
|
+
TODO: Enter the cookbook description here.
|
|
4
|
+
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
---
|
|
2
|
-
driver:
|
|
3
|
-
name: vagrant
|
|
4
|
-
|
|
5
|
-
provisioner:
|
|
6
|
-
name: chef_zero
|
|
7
|
-
|
|
8
|
-
platforms:
|
|
9
|
-
- name: ubuntu-14.04
|
|
10
|
-
- name: centos-7.1
|
|
11
|
-
|
|
12
|
-
suites:
|
|
13
|
-
- name: default
|
|
14
|
-
run_list:
|
|
15
|
-
- recipe[<%= cookbook_name %>::default]
|
|
16
|
-
attributes:
|
|
1
|
+
---
|
|
2
|
+
driver:
|
|
3
|
+
name: vagrant
|
|
4
|
+
|
|
5
|
+
provisioner:
|
|
6
|
+
name: chef_zero
|
|
7
|
+
|
|
8
|
+
platforms:
|
|
9
|
+
- name: ubuntu-14.04
|
|
10
|
+
- name: centos-7.1
|
|
11
|
+
|
|
12
|
+
suites:
|
|
13
|
+
- name: default
|
|
14
|
+
run_list:
|
|
15
|
+
- recipe[<%= cookbook_name %>::default]
|
|
16
|
+
attributes:
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
driver:
|
|
3
|
+
name: vagrant
|
|
4
|
+
|
|
5
|
+
## The forwarded_port port feature lets you connect to ports on the VM guest via
|
|
6
|
+
## localhost on the host.
|
|
7
|
+
## see also: https://docs.vagrantup.com/v2/networking/forwarded_ports.html
|
|
8
|
+
|
|
9
|
+
# network:
|
|
10
|
+
# - ["forwarded_port", {guest: 80, host: 8080}]
|
|
11
|
+
|
|
12
|
+
provisioner:
|
|
13
|
+
name: policyfile_zero
|
|
14
|
+
|
|
15
|
+
## require_chef_omnibus specifies a specific chef version to install. You can
|
|
16
|
+
## also set this to `true` to always use the latest version.
|
|
17
|
+
## see also: https://docs.chef.io/config_yml_kitchen.html
|
|
18
|
+
|
|
19
|
+
# require_chef_omnibus: 12.5.0
|
|
20
|
+
|
|
21
|
+
platforms:
|
|
22
|
+
- name: ubuntu-14.04
|
|
23
|
+
- name: centos-7.1
|
|
24
|
+
|
|
25
|
+
suites:
|
|
26
|
+
- name: default
|
|
27
|
+
attributes:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
name '<%= cookbook_name %>'
|
|
2
|
-
maintainer '<%= copyright_holder %>'
|
|
3
|
-
maintainer_email '<%= email %>'
|
|
4
|
-
license '<%= license %>'
|
|
5
|
-
description 'Installs/Configures <%= cookbook_name %>'
|
|
6
|
-
long_description 'Installs/Configures <%= cookbook_name %>'
|
|
7
|
-
version '0.1.0'
|
|
1
|
+
name '<%= cookbook_name %>'
|
|
2
|
+
maintainer '<%= copyright_holder %>'
|
|
3
|
+
maintainer_email '<%= email %>'
|
|
4
|
+
license '<%= license %>'
|
|
5
|
+
description 'Installs/Configures <%= cookbook_name %>'
|
|
6
|
+
long_description 'Installs/Configures <%= cookbook_name %>'
|
|
7
|
+
version '0.1.0'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Cookbook Name:: <%= cookbook_name %>
|
|
3
|
-
# Recipe:: <%= recipe_name %>
|
|
4
|
-
#
|
|
5
|
-
<%= license_description('#') %>
|
|
1
|
+
#
|
|
2
|
+
# Cookbook Name:: <%= cookbook_name %>
|
|
3
|
+
# Recipe:: <%= recipe_name %>
|
|
4
|
+
#
|
|
5
|
+
<%= license_description('#') %>
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Cookbook Name:: <%= cookbook_name %>
|
|
3
|
-
# Spec:: default
|
|
4
|
-
#
|
|
5
|
-
<%= license_description('#') %>
|
|
6
|
-
|
|
7
|
-
require 'spec_helper'
|
|
8
|
-
|
|
9
|
-
describe '<%= cookbook_name %>::<%= recipe_name %>' do
|
|
10
|
-
context 'When all attributes are default, on an unspecified platform' do
|
|
11
|
-
let(:chef_run) do
|
|
12
|
-
runner = ChefSpec::ServerRunner.new
|
|
13
|
-
runner.converge(described_recipe)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it 'converges successfully' do
|
|
17
|
-
expect { chef_run }.to_not raise_error
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Cookbook Name:: <%= cookbook_name %>
|
|
3
|
+
# Spec:: default
|
|
4
|
+
#
|
|
5
|
+
<%= license_description('#') %>
|
|
6
|
+
|
|
7
|
+
require 'spec_helper'
|
|
8
|
+
|
|
9
|
+
describe '<%= cookbook_name %>::<%= recipe_name %>' do
|
|
10
|
+
context 'When all attributes are default, on an unspecified platform' do
|
|
11
|
+
let(:chef_run) do
|
|
12
|
+
runner = ChefSpec::ServerRunner.new
|
|
13
|
+
runner.converge(described_recipe)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'converges successfully' do
|
|
17
|
+
expect { chef_run }.to_not raise_error
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
.rake_test_cache
|
|
2
|
-
|
|
3
|
-
###
|
|
4
|
-
# Ignore Chef key files and secrets
|
|
5
|
-
###
|
|
6
|
-
.chef/*.pem
|
|
7
|
-
.chef/encrypted_data_bag_secret
|
|
8
|
-
<%- if policy_only -%>
|
|
9
|
-
cookbooks/**
|
|
10
|
-
!cookbooks/README.md
|
|
11
|
-
<%- end -%>
|
|
1
|
+
.rake_test_cache
|
|
2
|
+
|
|
3
|
+
###
|
|
4
|
+
# Ignore Chef key files and secrets
|
|
5
|
+
###
|
|
6
|
+
.chef/*.pem
|
|
7
|
+
.chef/encrypted_data_bag_secret
|
|
8
|
+
<%- if policy_only -%>
|
|
9
|
+
cookbooks/**
|
|
10
|
+
!cookbooks/README.md
|
|
11
|
+
<%- end -%>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe '<%= cookbook_name %>::default' do
|
|
4
|
-
# Serverspec examples can be found at
|
|
5
|
-
# http://serverspec.org/resource_types.html
|
|
6
|
-
it 'does something' do
|
|
7
|
-
skip 'Replace this with meaningful tests'
|
|
8
|
-
end
|
|
9
|
-
end
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe '<%= cookbook_name %>::default' do
|
|
4
|
+
# Serverspec examples can be found at
|
|
5
|
+
# http://serverspec.org/resource_types.html
|
|
6
|
+
it 'does something' do
|
|
7
|
+
skip 'Replace this with meaningful tests'
|
|
8
|
+
end
|
|
9
|
+
end
|
data/lib/chef-dk/ui.rb
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
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
|
-
module ChefDK
|
|
19
|
-
class UI
|
|
20
|
-
|
|
21
|
-
class NullStream
|
|
22
|
-
|
|
23
|
-
def puts(*anything)
|
|
24
|
-
nil
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def print(*anything)
|
|
28
|
-
nil
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def self.null
|
|
34
|
-
new(out: NullStream.new, err: NullStream.new)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
attr_reader :out_stream
|
|
38
|
-
attr_reader :err_stream
|
|
39
|
-
|
|
40
|
-
def initialize(out: nil, err: nil)
|
|
41
|
-
@out_stream = out || $stdout
|
|
42
|
-
@err_stream = err || $stderr
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def err(message)
|
|
46
|
-
@err_stream.puts(message)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def msg(message)
|
|
50
|
-
@out_stream.puts(message)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def print(message)
|
|
54
|
-
@out_stream.print(message)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
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
|
+
module ChefDK
|
|
19
|
+
class UI
|
|
20
|
+
|
|
21
|
+
class NullStream
|
|
22
|
+
|
|
23
|
+
def puts(*anything)
|
|
24
|
+
nil
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def print(*anything)
|
|
28
|
+
nil
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.null
|
|
34
|
+
new(out: NullStream.new, err: NullStream.new)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
attr_reader :out_stream
|
|
38
|
+
attr_reader :err_stream
|
|
39
|
+
|
|
40
|
+
def initialize(out: nil, err: nil)
|
|
41
|
+
@out_stream = out || $stdout
|
|
42
|
+
@err_stream = err || $stderr
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def err(message)
|
|
46
|
+
@err_stream.puts(message)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def msg(message)
|
|
50
|
+
@out_stream.puts(message)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def print(message)
|
|
54
|
+
@out_stream.print(message)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
data/lib/chef-dk/version.rb
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
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
|
-
module ChefDK
|
|
19
|
-
VERSION = "0.
|
|
20
|
-
end
|
|
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
|
+
module ChefDK
|
|
19
|
+
VERSION = "0.9.0"
|
|
20
|
+
end
|
|
@@ -1,164 +1,193 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
-
#
|
|
5
|
-
# Copyright (C) 2013, Fletcher Nichol
|
|
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
|
-
require "kitchen/provisioner/chef_base"
|
|
20
|
-
|
|
21
|
-
# TODO: chef-dk and kitchen can only co-exist if kitchen and chef-dk agree on
|
|
22
|
-
# the version of mixlib-shellout to use. Kitchen currently locked at 1.4,
|
|
23
|
-
# chef-dk is on 2.x
|
|
24
|
-
require 'chef-dk/policyfile_services/export_repo'
|
|
25
|
-
|
|
26
|
-
module Kitchen
|
|
27
|
-
|
|
28
|
-
module Provisioner
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
#
|
|
132
|
-
#
|
|
133
|
-
#
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2013, Fletcher Nichol
|
|
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
|
+
require "kitchen/provisioner/chef_base"
|
|
20
|
+
|
|
21
|
+
# TODO: chef-dk and kitchen can only co-exist if kitchen and chef-dk agree on
|
|
22
|
+
# the version of mixlib-shellout to use. Kitchen currently locked at 1.4,
|
|
23
|
+
# chef-dk is on 2.x
|
|
24
|
+
require 'chef-dk/policyfile_services/export_repo'
|
|
25
|
+
|
|
26
|
+
module Kitchen
|
|
27
|
+
|
|
28
|
+
module Provisioner
|
|
29
|
+
|
|
30
|
+
class Base
|
|
31
|
+
|
|
32
|
+
# PolicyfileZero needs to access the base behavior of creating the
|
|
33
|
+
# sandbox directory without invoking the behavior of
|
|
34
|
+
# ChefBase#create_sandbox, because that will trigger the use of
|
|
35
|
+
# Chef::CommonSandbox, which we need to override.
|
|
36
|
+
alias_method :create_sandbox_directory, :create_sandbox
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class PolicyfileSandbox < Chef::CommonSandbox
|
|
41
|
+
|
|
42
|
+
# Stub #prepare_cookbooks because we have implemented this in the
|
|
43
|
+
# provisioner, below. If a Berksfile is present, the default
|
|
44
|
+
# implementation will try to run Berkshelf, which can lead to dependency
|
|
45
|
+
# issues since berks is not yet using Solve 2.x. See also
|
|
46
|
+
# PolicyfileZero#load_needed_dependencies! which is stubbed to prevent
|
|
47
|
+
# berks from loading.
|
|
48
|
+
def prepare_cookbooks
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Policyfile + Chef Zero provisioner.
|
|
54
|
+
#
|
|
55
|
+
# @author Daniel DeLeo <dan@chef.io>
|
|
56
|
+
class PolicyfileZero < ChefBase
|
|
57
|
+
|
|
58
|
+
# This provsioner will forcibly set the following config options:
|
|
59
|
+
# * `use_policyfile`: `true`
|
|
60
|
+
# * `versioned_cookbooks`: `true`
|
|
61
|
+
# * `deployment_group`: `POLICY_NAME-local`
|
|
62
|
+
# Since it makes no sense to modify these, they are hardcoded elsewhere.
|
|
63
|
+
default_config :client_rb, {}
|
|
64
|
+
default_config :json_attributes, true
|
|
65
|
+
default_config :chef_zero_host, nil
|
|
66
|
+
default_config :chef_zero_port, 8889
|
|
67
|
+
default_config :policyfile, "Policyfile.rb"
|
|
68
|
+
|
|
69
|
+
default_config :chef_client_path do |provisioner|
|
|
70
|
+
provisioner.
|
|
71
|
+
remote_path_join(%W[#{provisioner[:chef_omnibus_root]} bin chef-client]).
|
|
72
|
+
tap { |path| path.concat(".bat") if provisioner.windows_os? }
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
default_config :ruby_bindir do |provisioner|
|
|
76
|
+
provisioner.
|
|
77
|
+
remote_path_join(%W[#{provisioner[:chef_omnibus_root]} embedded bin])
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Emit a warning that Policyfile stuff is still experimental.
|
|
81
|
+
#
|
|
82
|
+
# (see Base#finalize_config!)
|
|
83
|
+
def finalize_config!(*args)
|
|
84
|
+
super
|
|
85
|
+
banner("Using experimental policyfile mode for chef-client")
|
|
86
|
+
warn("The Policyfile feature is under active development.")
|
|
87
|
+
warn("For best results, always use the latest chef-client version")
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# (see Base#create_sandbox)
|
|
91
|
+
def create_sandbox
|
|
92
|
+
create_sandbox_directory
|
|
93
|
+
PolicyfileSandbox.new(config, sandbox_path, instance).populate
|
|
94
|
+
prepare_cookbooks
|
|
95
|
+
prepare_validation_pem
|
|
96
|
+
prepare_client_rb
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# (see Base#run_command)
|
|
100
|
+
def run_command
|
|
101
|
+
level = config[:log_level] == :info ? :auto : config[:log_level]
|
|
102
|
+
chef_client_bin = sudo(config[:chef_client_path])
|
|
103
|
+
|
|
104
|
+
cmd = "#{chef_client_bin} --local-mode"
|
|
105
|
+
args = [
|
|
106
|
+
"--config #{config[:root_path]}/client.rb",
|
|
107
|
+
"--log_level #{level}",
|
|
108
|
+
"--force-formatter",
|
|
109
|
+
"--no-color"
|
|
110
|
+
]
|
|
111
|
+
if config[:chef_zero_port]
|
|
112
|
+
args << "--chef-zero-port #{config[:chef_zero_port]}"
|
|
113
|
+
end
|
|
114
|
+
if config[:log_file]
|
|
115
|
+
args << "--logfile #{config[:log_file]}"
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
wrap_shell_code(
|
|
119
|
+
[cmd, *args].join(" ").
|
|
120
|
+
tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
|
|
121
|
+
)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# We don't want to load Berkshelf or Librarian; Policyfile is managing
|
|
125
|
+
# dependencies, so these can only cause trouble.
|
|
126
|
+
def load_needed_dependencies!
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
private
|
|
130
|
+
|
|
131
|
+
# Overrides behavior of parent class so that dna.json isn't created; we
|
|
132
|
+
# don't need it.
|
|
133
|
+
#
|
|
134
|
+
# @api private
|
|
135
|
+
def prepare_json
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Copies the policyfile's cookbooks to the sandbox.
|
|
139
|
+
#
|
|
140
|
+
# @api private
|
|
141
|
+
def prepare_cookbooks
|
|
142
|
+
Kitchen.mutex.synchronize do
|
|
143
|
+
policy_exporter.run
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# An instance of ChefDK::PolicyfileServices::ExportRepo, configured with
|
|
148
|
+
# the sandbox path. Calling `#run` on this copies the cookbooks to the
|
|
149
|
+
# sandbox. Calling `#policy_name` returns the policy's name.
|
|
150
|
+
#
|
|
151
|
+
# @api private
|
|
152
|
+
def policy_exporter
|
|
153
|
+
# Must force this because TK by default copies the current cookbook to the sandbox
|
|
154
|
+
# See ChefDK::PolicyfileServices::ExportRepo#assert_export_dir_clean!
|
|
155
|
+
@policy_exporter ||= ChefDK::PolicyfileServices::ExportRepo.new(policyfile: config[:policyfile],
|
|
156
|
+
export_dir: sandbox_path,
|
|
157
|
+
force: true)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# Writes a fake (but valid) validation.pem into the sandbox directory.
|
|
161
|
+
#
|
|
162
|
+
# @api private
|
|
163
|
+
def prepare_validation_pem
|
|
164
|
+
info("Preparing validation.pem")
|
|
165
|
+
debug("Using a dummy validation.pem")
|
|
166
|
+
|
|
167
|
+
source = File.join(Kitchen.source_root, %w[support dummy-validation.pem])
|
|
168
|
+
FileUtils.cp(source, File.join(sandbox_path, "validation.pem"))
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# Writes a client.rb configuration file to the sandbox directory.
|
|
172
|
+
#
|
|
173
|
+
# @api private
|
|
174
|
+
def prepare_client_rb
|
|
175
|
+
data = default_config_rb.merge(config[:client_rb])
|
|
176
|
+
|
|
177
|
+
data["use_policyfile"] = true
|
|
178
|
+
data["versioned_cookbooks"] = true
|
|
179
|
+
data["deployment_group"] = "#{policy_exporter.policy_name}-local"
|
|
180
|
+
# TODO this will need to be updated when chef-zero supports erchef paths (policy_group vs policies)
|
|
181
|
+
data["policy_document_native_api"] = false
|
|
182
|
+
|
|
183
|
+
info("Preparing client.rb")
|
|
184
|
+
debug("Creating client.rb from #{data.inspect}")
|
|
185
|
+
|
|
186
|
+
File.open(File.join(sandbox_path, "client.rb"), "wb") do |file|
|
|
187
|
+
file.write(format_config_file(data))
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|