chef-dk 2.6.2 → 3.0.36
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/Gemfile +126 -121
- data/Gemfile.lock +812 -807
- data/LICENSE +201 -201
- data/README.md +333 -333
- data/Rakefile +74 -74
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +287 -287
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +52 -52
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -51
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
- data/acceptance/Gemfile +21 -21
- data/acceptance/Gemfile.lock +334 -334
- data/acceptance/README.md +132 -132
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/trivial/.kitchen.yml +7 -7
- data/acceptance/trivial/test/integration/chefdk-current-install/inspec/chef_client_spec.rb +5 -5
- data/bin/chef +25 -25
- data/chef-dk.gemspec +60 -60
- data/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +22 -22
- data/lib/chef-dk/builtin_commands.rb +59 -59
- data/lib/chef-dk/chef_runner.rb +114 -114
- data/lib/chef-dk/chef_server_api_multi.rb +73 -73
- data/lib/chef-dk/cli.rb +201 -201
- data/lib/chef-dk/command/base.rb +79 -79
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +114 -114
- data/lib/chef-dk/command/clean_policy_revisions.rb +111 -111
- data/lib/chef-dk/command/delete_policy.rb +120 -120
- data/lib/chef-dk/command/delete_policy_group.rb +120 -120
- data/lib/chef-dk/command/diff.rb +315 -315
- data/lib/chef-dk/command/env.rb +89 -89
- data/lib/chef-dk/command/exec.rb +44 -44
- data/lib/chef-dk/command/export.rb +155 -155
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +125 -125
- data/lib/chef-dk/command/generator_commands.rb +83 -83
- data/lib/chef-dk/command/generator_commands/app.rb +106 -106
- data/lib/chef-dk/command/generator_commands/attribute.rb +36 -36
- data/lib/chef-dk/command/generator_commands/base.rb +157 -157
- data/lib/chef-dk/command/generator_commands/build_cookbook.rb +125 -125
- data/lib/chef-dk/command/generator_commands/chef_exts/generator_desc_resource.rb +85 -85
- data/lib/chef-dk/command/generator_commands/chef_exts/quieter_doc_formatter.rb +38 -38
- data/lib/chef-dk/command/generator_commands/chef_exts/recipe_dsl_ext.rb +39 -39
- data/lib/chef-dk/command/generator_commands/cookbook.rb +241 -241
- 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 +174 -174
- data/lib/chef-dk/command/generator_commands/helpers.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +124 -126
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +123 -123
- data/lib/chef-dk/command/generator_commands/resource.rb +36 -36
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +120 -120
- data/lib/chef-dk/command/provision.rb +436 -436
- data/lib/chef-dk/command/push.rb +117 -117
- data/lib/chef-dk/command/push_archive.rb +125 -125
- data/lib/chef-dk/command/shell_init.rb +179 -179
- data/lib/chef-dk/command/show_policy.rb +163 -163
- data/lib/chef-dk/command/undelete.rb +154 -154
- data/lib/chef-dk/command/update.rb +133 -133
- data/lib/chef-dk/command/verify.rb +629 -629
- data/lib/chef-dk/commands_map.rb +113 -113
- 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 +227 -227
- data/lib/chef-dk/configurable.rb +88 -88
- 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 +152 -151
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +31 -31
- data/lib/chef-dk/exceptions.rb +151 -150
- data/lib/chef-dk/generator.rb +165 -165
- data/lib/chef-dk/helpers.rb +176 -176
- data/lib/chef-dk/pager.rb +104 -105
- data/lib/chef-dk/policyfile/artifactory_cookbook_source.rb +102 -102
- data/lib/chef-dk/policyfile/attribute_merge_checker.rb +110 -110
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +99 -99
- data/lib/chef-dk/policyfile/chef_server_lock_fetcher.rb +167 -164
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +95 -95
- data/lib/chef-dk/policyfile/comparison_base.rb +123 -123
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +154 -154
- data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
- data/lib/chef-dk/policyfile/cookbook_sources.rb +23 -23
- data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +89 -89
- data/lib/chef-dk/policyfile/differ.rb +263 -263
- data/lib/chef-dk/policyfile/dsl.rb +288 -288
- data/lib/chef-dk/policyfile/git_lock_fetcher.rb +265 -0
- data/lib/chef-dk/policyfile/included_policies_cookbook_source.rb +156 -156
- data/lib/chef-dk/policyfile/lister.rb +229 -229
- data/lib/chef-dk/policyfile/local_lock_fetcher.rb +129 -123
- data/lib/chef-dk/policyfile/lock_applier.rb +80 -80
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +49 -49
- data/lib/chef-dk/policyfile/policyfile_location_specification.rb +125 -122
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +69 -69
- data/lib/chef-dk/policyfile/reports/table_printer.rb +57 -57
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +311 -312
- data/lib/chef-dk/policyfile/source_uri.rb +57 -57
- data/lib/chef-dk/policyfile/storage_config.rb +112 -102
- data/lib/chef-dk/policyfile/undo_record.rb +139 -139
- data/lib/chef-dk/policyfile/undo_stack.rb +128 -128
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +528 -528
- data/lib/chef-dk/policyfile_lock.rb +581 -581
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +123 -123
- data/lib/chef-dk/policyfile_services/export_repo.rb +419 -420
- data/lib/chef-dk/policyfile_services/install.rb +162 -162
- data/lib/chef-dk/policyfile_services/push.rb +112 -112
- data/lib/chef-dk/policyfile_services/push_archive.rb +164 -200
- data/lib/chef-dk/policyfile_services/rm_policy.rb +141 -141
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +85 -85
- data/lib/chef-dk/policyfile_services/show_policy.rb +234 -236
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +110 -110
- data/lib/chef-dk/service_exception_inspectors.rb +24 -24
- data/lib/chef-dk/service_exception_inspectors/base.rb +39 -39
- data/lib/chef-dk/service_exception_inspectors/http.rb +119 -119
- data/lib/chef-dk/service_exceptions.rb +142 -142
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +4 -4
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/.kitchen.yml +21 -21
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/README.md +146 -146
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/test-fixture-recipe.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +104 -107
- 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 +66 -54
- data/lib/chef-dk/skeletons/code_generator/files/default/delivery-config.json +17 -17
- data/lib/chef-dk/skeletons/code_generator/files/default/delivery-project.toml +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +22 -22
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +24 -24
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -27
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +56 -56
- 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/dot-chef-repo.txt +6 -6
- 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/policies/README.md +24 -24
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +89 -89
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +13 -13
- data/lib/chef-dk/skeletons/code_generator/recipes/build_cookbook.rb +177 -177
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +158 -152
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +25 -25
- data/lib/chef-dk/skeletons/code_generator/recipes/helpers.rb +21 -21
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +52 -52
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +68 -68
- data/lib/chef-dk/skeletons/code_generator/recipes/resource.rb +13 -13
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/CHANGELOG.md.erb +11 -0
- 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.apachev2.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 +25 -25
- data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/Berksfile.erb +7 -7
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/metadata.rb.erb +10 -10
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/recipe.rb.erb +8 -8
- data/lib/chef-dk/skeletons/code_generator/templates/default/helpers.rb.erb +39 -39
- data/lib/chef-dk/skeletons/code_generator/templates/default/inspec_default_test.rb.erb +18 -18
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +26 -26
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +33 -33
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +20 -20
- 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 +35 -35
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +128 -128
- data/lib/chef-dk/skeletons/code_generator/templates/default/resource.rb.erb +1 -1
- data/lib/chef-dk/ui.rb +57 -57
- data/lib/chef-dk/version.rb +20 -20
- data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
- data/omnibus_overrides.rb +25 -25
- 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 +136 -136
- data/spec/shared/fixture_cookbook_checksums.rb +46 -46
- data/spec/shared/setup_git_committer_config.rb +54 -54
- data/spec/shared/setup_git_cookbooks.rb +53 -53
- data/spec/spec_helper.rb +51 -51
- data/spec/test_helpers.rb +84 -84
- data/spec/unit/chef_runner_spec.rb +139 -139
- data/spec/unit/chef_server_api_multi_spec.rb +120 -120
- data/spec/unit/cli_spec.rb +377 -377
- data/spec/unit/command/base_spec.rb +172 -172
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +180 -180
- data/spec/unit/command/clean_policy_revisions_spec.rb +180 -180
- data/spec/unit/command/delete_policy_group_spec.rb +206 -206
- data/spec/unit/command/delete_policy_spec.rb +206 -206
- data/spec/unit/command/diff_spec.rb +311 -311
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +178 -178
- data/spec/unit/command/export_spec.rb +199 -199
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +166 -166
- data/spec/unit/command/generator_commands/attribute_spec.rb +31 -31
- data/spec/unit/command/generator_commands/base_spec.rb +181 -181
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +377 -377
- data/spec/unit/command/generator_commands/chef_exts/generator_desc_resource_spec.rb +97 -97
- data/spec/unit/command/generator_commands/chef_exts/recipe_dsl_ext_spec.rb +111 -111
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +31 -31
- data/spec/unit/command/generator_commands/cookbook_spec.rb +765 -756
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +227 -227
- data/spec/unit/command/generator_commands/helpers_spec.rb +31 -31
- data/spec/unit/command/generator_commands/policyfile_spec.rb +223 -223
- data/spec/unit/command/generator_commands/recipe_spec.rb +37 -37
- data/spec/unit/command/generator_commands/repo_spec.rb +374 -374
- data/spec/unit/command/generator_commands/resource_spec.rb +31 -31
- data/spec/unit/command/generator_commands/template_spec.rb +31 -31
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +589 -589
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +198 -198
- data/spec/unit/command/shell_init_spec.rb +339 -339
- data/spec/unit/command/show_policy_spec.rb +234 -234
- data/spec/unit/command/undelete_spec.rb +244 -244
- data/spec/unit/command/update_spec.rb +283 -283
- data/spec/unit/command/verify_spec.rb +341 -341
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/component_test_spec.rb +128 -128
- data/spec/unit/configurable_spec.rb +68 -68
- data/spec/unit/cookbook_metadata_spec.rb +96 -96
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +81 -81
- 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/configurable/test_config_loader.rb +5 -5
- data/spec/unit/fixtures/configurable/test_configurable.rb +10 -10
- 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/chef_server_universe.json +56 -56
- data/spec/unit/fixtures/cookbooks_api/pruned_chef_server_universe.json +30 -30
- 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 +33 -33
- 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 +119 -119
- data/spec/unit/pager_spec.rb +117 -117
- data/spec/unit/policyfile/artifactory_cookbook_source_spec.rb +59 -59
- data/spec/unit/policyfile/attribute_merge_checker_spec.rb +80 -80
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +55 -55
- data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +161 -161
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +83 -83
- data/spec/unit/policyfile/comparison_base_spec.rb +340 -340
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +347 -347
- data/spec/unit/policyfile/cookbook_locks_spec.rb +527 -527
- data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +129 -129
- data/spec/unit/policyfile/differ_spec.rb +686 -686
- data/spec/unit/policyfile/git_lock_fetcher_spec.rb +155 -0
- data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +242 -242
- data/spec/unit/policyfile/lister_spec.rb +268 -268
- data/spec/unit/policyfile/local_lock_fetcher_spec.rb +173 -173
- data/spec/unit/policyfile/lock_applier_spec.rb +100 -100
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +114 -114
- data/spec/unit/policyfile/reports/upload_spec.rb +94 -94
- data/spec/unit/policyfile/solution_dependencies_spec.rb +170 -170
- data/spec/unit/policyfile/source_uri_spec.rb +36 -36
- data/spec/unit/policyfile/storage_config_spec.rb +180 -180
- data/spec/unit/policyfile/undo_record_spec.rb +258 -258
- data/spec/unit/policyfile/undo_stack_spec.rb +265 -265
- data/spec/unit/policyfile/uploader_spec.rb +409 -409
- data/spec/unit/policyfile_demands_spec.rb +1197 -1197
- data/spec/unit/policyfile_evaluation_spec.rb +628 -638
- data/spec/unit/policyfile_includes_dsl_spec.rb +159 -159
- data/spec/unit/policyfile_includes_spec.rb +720 -720
- data/spec/unit/policyfile_install_with_includes_spec.rb +232 -232
- data/spec/unit/policyfile_lock_build_spec.rb +1065 -1065
- data/spec/unit/policyfile_lock_install_spec.rb +137 -137
- data/spec/unit/policyfile_lock_serialization_spec.rb +424 -424
- data/spec/unit/policyfile_lock_validation_spec.rb +608 -608
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +272 -272
- data/spec/unit/policyfile_services/export_repo_spec.rb +473 -478
- data/spec/unit/policyfile_services/install_spec.rb +209 -209
- data/spec/unit/policyfile_services/push_archive_spec.rb +359 -374
- data/spec/unit/policyfile_services/push_spec.rb +249 -249
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +237 -237
- data/spec/unit/policyfile_services/rm_policy_spec.rb +263 -263
- data/spec/unit/policyfile_services/show_policy_spec.rb +887 -887
- data/spec/unit/policyfile_services/undelete_spec.rb +302 -302
- data/spec/unit/policyfile_services/update_attributes_spec.rb +229 -229
- data/spec/unit/policyfile_services/update_spec.rb +140 -140
- data/spec/unit/service_exception_inspectors/base_spec.rb +41 -41
- data/spec/unit/service_exception_inspectors/http_spec.rb +138 -138
- data/spec/unit/shell_out_spec.rb +34 -34
- data/tasks/announce.rb +57 -57
- data/tasks/bin/bundle-platform.bat +2 -2
- data/tasks/dependencies.rb +89 -89
- data/tasks/templates/prerelease.md.erb +35 -35
- data/tasks/templates/release.md.erb +34 -34
- data/warning.txt +9 -9
- metadata +9 -5
|
@@ -1,195 +1,195 @@
|
|
|
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 :named_run_list, nil
|
|
66
|
-
default_config :chef_zero_host, nil
|
|
67
|
-
default_config :chef_zero_port, 8889
|
|
68
|
-
default_config :policyfile, "Policyfile.rb"
|
|
69
|
-
|
|
70
|
-
default_config :chef_client_path do |provisioner|
|
|
71
|
-
provisioner.
|
|
72
|
-
remote_path_join(%W{#{provisioner[:chef_omnibus_root]} bin chef-client}).
|
|
73
|
-
tap { |path| path.concat(".bat") if provisioner.windows_os? }
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
default_config :ruby_bindir do |provisioner|
|
|
77
|
-
provisioner.
|
|
78
|
-
remote_path_join(%W{#{provisioner[:chef_omnibus_root]} embedded bin})
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
# (see Base#finalize_config!)
|
|
82
|
-
def finalize_config!(*args)
|
|
83
|
-
super
|
|
84
|
-
banner("Using policyfile mode for chef-client")
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
# (see Base#create_sandbox)
|
|
88
|
-
def create_sandbox
|
|
89
|
-
create_sandbox_directory
|
|
90
|
-
PolicyfileSandbox.new(config, sandbox_path, instance).populate
|
|
91
|
-
prepare_cookbooks
|
|
92
|
-
prepare_validation_pem
|
|
93
|
-
prepare_client_rb
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
# (see Base#run_command)
|
|
97
|
-
def run_command
|
|
98
|
-
level = config[:log_level] == :info ? :auto : config[:log_level]
|
|
99
|
-
|
|
100
|
-
cmd = "#{sudo(config[:chef_client_path])} --local-mode".
|
|
101
|
-
tap { |str| str.insert(0, "& ") if powershell_shell? }
|
|
102
|
-
|
|
103
|
-
args = [
|
|
104
|
-
"--config #{config[:root_path]}/client.rb",
|
|
105
|
-
"--log_level #{level}",
|
|
106
|
-
"--force-formatter",
|
|
107
|
-
"--no-color",
|
|
108
|
-
]
|
|
109
|
-
if config[:chef_zero_port]
|
|
110
|
-
args << "--chef-zero-port #{config[:chef_zero_port]}"
|
|
111
|
-
end
|
|
112
|
-
if config[:log_file]
|
|
113
|
-
args << "--logfile #{config[:log_file]}"
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
if config[:named_run_list]
|
|
117
|
-
args << "--named-run-list #{config[:named_run_list]}"
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
wrap_shell_code(
|
|
121
|
-
[cmd, *args].join(" ").
|
|
122
|
-
tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
|
|
123
|
-
)
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
# We don't want to load Berkshelf or Librarian; Policyfile is managing
|
|
127
|
-
# dependencies, so these can only cause trouble.
|
|
128
|
-
def load_needed_dependencies!
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
private
|
|
132
|
-
|
|
133
|
-
# Overrides behavior of parent class so that dna.json isn't created; we
|
|
134
|
-
# don't need it.
|
|
135
|
-
#
|
|
136
|
-
# @api private
|
|
137
|
-
def prepare_json
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
# Copies the policyfile's cookbooks to the sandbox.
|
|
141
|
-
#
|
|
142
|
-
# @api private
|
|
143
|
-
def prepare_cookbooks
|
|
144
|
-
Kitchen.mutex.synchronize do
|
|
145
|
-
policy_exporter.run
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
# An instance of ChefDK::PolicyfileServices::ExportRepo, configured with
|
|
150
|
-
# the sandbox path. Calling `#run` on this copies the cookbooks to the
|
|
151
|
-
# sandbox. Calling `#policy_name` returns the policy's name.
|
|
152
|
-
#
|
|
153
|
-
# @api private
|
|
154
|
-
def policy_exporter
|
|
155
|
-
# Must force this because TK by default copies the current cookbook to the sandbox
|
|
156
|
-
# See ChefDK::PolicyfileServices::ExportRepo#assert_export_dir_clean!
|
|
157
|
-
@policy_exporter ||= ChefDK::PolicyfileServices::ExportRepo.new(policyfile: config[:policyfile],
|
|
158
|
-
export_dir: sandbox_path,
|
|
159
|
-
force: true)
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
# Writes a fake (but valid) validation.pem into the sandbox directory.
|
|
163
|
-
#
|
|
164
|
-
# @api private
|
|
165
|
-
def prepare_validation_pem
|
|
166
|
-
info("Preparing validation.pem")
|
|
167
|
-
debug("Using a dummy validation.pem")
|
|
168
|
-
|
|
169
|
-
source = File.join(Kitchen.source_root, %w{support dummy-validation.pem})
|
|
170
|
-
FileUtils.cp(source, File.join(sandbox_path, "validation.pem"))
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
# Writes a client.rb configuration file to the sandbox directory.
|
|
174
|
-
#
|
|
175
|
-
# @api private
|
|
176
|
-
def prepare_client_rb
|
|
177
|
-
data = default_config_rb.merge(config[:client_rb])
|
|
178
|
-
|
|
179
|
-
data["use_policyfile"] = true
|
|
180
|
-
data["versioned_cookbooks"] = true
|
|
181
|
-
data["policy_name"] = policy_exporter.policy_name
|
|
182
|
-
data["policy_group"] = "local"
|
|
183
|
-
data["policy_document_native_api"] = true
|
|
184
|
-
|
|
185
|
-
info("Preparing client.rb")
|
|
186
|
-
debug("Creating client.rb from #{data.inspect}")
|
|
187
|
-
|
|
188
|
-
File.open(File.join(sandbox_path, "client.rb"), "wb") do |file|
|
|
189
|
-
file.write(format_config_file(data))
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
end
|
|
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 :named_run_list, nil
|
|
66
|
+
default_config :chef_zero_host, nil
|
|
67
|
+
default_config :chef_zero_port, 8889
|
|
68
|
+
default_config :policyfile, "Policyfile.rb"
|
|
69
|
+
|
|
70
|
+
default_config :chef_client_path do |provisioner|
|
|
71
|
+
provisioner.
|
|
72
|
+
remote_path_join(%W{#{provisioner[:chef_omnibus_root]} bin chef-client}).
|
|
73
|
+
tap { |path| path.concat(".bat") if provisioner.windows_os? }
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
default_config :ruby_bindir do |provisioner|
|
|
77
|
+
provisioner.
|
|
78
|
+
remote_path_join(%W{#{provisioner[:chef_omnibus_root]} embedded bin})
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# (see Base#finalize_config!)
|
|
82
|
+
def finalize_config!(*args)
|
|
83
|
+
super
|
|
84
|
+
banner("Using policyfile mode for chef-client")
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# (see Base#create_sandbox)
|
|
88
|
+
def create_sandbox
|
|
89
|
+
create_sandbox_directory
|
|
90
|
+
PolicyfileSandbox.new(config, sandbox_path, instance).populate
|
|
91
|
+
prepare_cookbooks
|
|
92
|
+
prepare_validation_pem
|
|
93
|
+
prepare_client_rb
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# (see Base#run_command)
|
|
97
|
+
def run_command
|
|
98
|
+
level = config[:log_level] == :info ? :auto : config[:log_level]
|
|
99
|
+
|
|
100
|
+
cmd = "#{sudo(config[:chef_client_path])} --local-mode".
|
|
101
|
+
tap { |str| str.insert(0, "& ") if powershell_shell? }
|
|
102
|
+
|
|
103
|
+
args = [
|
|
104
|
+
"--config #{config[:root_path]}/client.rb",
|
|
105
|
+
"--log_level #{level}",
|
|
106
|
+
"--force-formatter",
|
|
107
|
+
"--no-color",
|
|
108
|
+
]
|
|
109
|
+
if config[:chef_zero_port]
|
|
110
|
+
args << "--chef-zero-port #{config[:chef_zero_port]}"
|
|
111
|
+
end
|
|
112
|
+
if config[:log_file]
|
|
113
|
+
args << "--logfile #{config[:log_file]}"
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
if config[:named_run_list]
|
|
117
|
+
args << "--named-run-list #{config[:named_run_list]}"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
wrap_shell_code(
|
|
121
|
+
[cmd, *args].join(" ").
|
|
122
|
+
tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
|
|
123
|
+
)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# We don't want to load Berkshelf or Librarian; Policyfile is managing
|
|
127
|
+
# dependencies, so these can only cause trouble.
|
|
128
|
+
def load_needed_dependencies!
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
private
|
|
132
|
+
|
|
133
|
+
# Overrides behavior of parent class so that dna.json isn't created; we
|
|
134
|
+
# don't need it.
|
|
135
|
+
#
|
|
136
|
+
# @api private
|
|
137
|
+
def prepare_json
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Copies the policyfile's cookbooks to the sandbox.
|
|
141
|
+
#
|
|
142
|
+
# @api private
|
|
143
|
+
def prepare_cookbooks
|
|
144
|
+
Kitchen.mutex.synchronize do
|
|
145
|
+
policy_exporter.run
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# An instance of ChefDK::PolicyfileServices::ExportRepo, configured with
|
|
150
|
+
# the sandbox path. Calling `#run` on this copies the cookbooks to the
|
|
151
|
+
# sandbox. Calling `#policy_name` returns the policy's name.
|
|
152
|
+
#
|
|
153
|
+
# @api private
|
|
154
|
+
def policy_exporter
|
|
155
|
+
# Must force this because TK by default copies the current cookbook to the sandbox
|
|
156
|
+
# See ChefDK::PolicyfileServices::ExportRepo#assert_export_dir_clean!
|
|
157
|
+
@policy_exporter ||= ChefDK::PolicyfileServices::ExportRepo.new(policyfile: config[:policyfile],
|
|
158
|
+
export_dir: sandbox_path,
|
|
159
|
+
force: true)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# Writes a fake (but valid) validation.pem into the sandbox directory.
|
|
163
|
+
#
|
|
164
|
+
# @api private
|
|
165
|
+
def prepare_validation_pem
|
|
166
|
+
info("Preparing validation.pem")
|
|
167
|
+
debug("Using a dummy validation.pem")
|
|
168
|
+
|
|
169
|
+
source = File.join(Kitchen.source_root, %w{support dummy-validation.pem})
|
|
170
|
+
FileUtils.cp(source, File.join(sandbox_path, "validation.pem"))
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# Writes a client.rb configuration file to the sandbox directory.
|
|
174
|
+
#
|
|
175
|
+
# @api private
|
|
176
|
+
def prepare_client_rb
|
|
177
|
+
data = default_config_rb.merge(config[:client_rb])
|
|
178
|
+
|
|
179
|
+
data["use_policyfile"] = true
|
|
180
|
+
data["versioned_cookbooks"] = true
|
|
181
|
+
data["policy_name"] = policy_exporter.policy_name
|
|
182
|
+
data["policy_group"] = "local"
|
|
183
|
+
data["policy_document_native_api"] = true
|
|
184
|
+
|
|
185
|
+
info("Preparing client.rb")
|
|
186
|
+
debug("Creating client.rb from #{data.inspect}")
|
|
187
|
+
|
|
188
|
+
File.open(File.join(sandbox_path, "client.rb"), "wb") do |file|
|
|
189
|
+
file.write(format_config_file(data))
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|
data/omnibus_overrides.rb
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# THIS IS NOW HAND MANAGED, JUST EDIT THE THING
|
|
2
|
-
# .travis.yml and appveyor.yml consume this,
|
|
3
|
-
# try to keep it machine-parsable.
|
|
4
|
-
#
|
|
5
|
-
# NOTE: You MUST update omnibus-software when adding new versions of
|
|
6
|
-
# software here: bundle exec rake dependencies:update_omnibus_gemfile_lock
|
|
7
|
-
override :rubygems, version: "2.7.6"
|
|
8
|
-
override :bundler, version: "1.16.1"
|
|
9
|
-
override "libffi", version: "3.2.1"
|
|
10
|
-
override "libiconv", version: "1.15"
|
|
11
|
-
override "liblzma", version: "5.2.3"
|
|
12
|
-
override "libtool", version: "2.4.2"
|
|
13
|
-
override "libxml2", version: "2.9.
|
|
14
|
-
override "libxslt", version: "1.1.30"
|
|
15
|
-
override "libyaml", version: "0.1.7"
|
|
16
|
-
override "makedepend", version: "1.0.5"
|
|
17
|
-
override "ncurses", version: "5.9"
|
|
18
|
-
override "pkg-config-lite", version: "0.28-1"
|
|
19
|
-
override "ruby", version: "2.
|
|
20
|
-
override "ruby-windows-devkit-bash", version: "3.1.23-4-msys-1.0.18"
|
|
21
|
-
override "util-macros", version: "1.19.0"
|
|
22
|
-
override "xproto", version: "7.0.28"
|
|
23
|
-
override "zlib", version: "1.2.11"
|
|
24
|
-
override "libzmq", version: "4.0.7"
|
|
25
|
-
override "openssl", version: "1.0.
|
|
1
|
+
# THIS IS NOW HAND MANAGED, JUST EDIT THE THING
|
|
2
|
+
# .travis.yml and appveyor.yml consume this,
|
|
3
|
+
# try to keep it machine-parsable.
|
|
4
|
+
#
|
|
5
|
+
# NOTE: You MUST update omnibus-software when adding new versions of
|
|
6
|
+
# software here: bundle exec rake dependencies:update_omnibus_gemfile_lock
|
|
7
|
+
override :rubygems, version: "2.7.6"
|
|
8
|
+
override :bundler, version: "1.16.1"
|
|
9
|
+
override "libffi", version: "3.2.1"
|
|
10
|
+
override "libiconv", version: "1.15"
|
|
11
|
+
override "liblzma", version: "5.2.3"
|
|
12
|
+
override "libtool", version: "2.4.2"
|
|
13
|
+
override "libxml2", version: "2.9.7"
|
|
14
|
+
override "libxslt", version: "1.1.30"
|
|
15
|
+
override "libyaml", version: "0.1.7"
|
|
16
|
+
override "makedepend", version: "1.0.5"
|
|
17
|
+
override "ncurses", version: "5.9"
|
|
18
|
+
override "pkg-config-lite", version: "0.28-1"
|
|
19
|
+
override "ruby", version: "2.5.1"
|
|
20
|
+
override "ruby-windows-devkit-bash", version: "3.1.23-4-msys-1.0.18"
|
|
21
|
+
override "util-macros", version: "1.19.0"
|
|
22
|
+
override "xproto", version: "7.0.28"
|
|
23
|
+
override "zlib", version: "1.2.11"
|
|
24
|
+
override "libzmq", version: "4.0.7"
|
|
25
|
+
override "openssl", version: "1.0.2o"
|
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
shared_examples_for "a file generator" do
|
|
2
|
-
|
|
3
|
-
let(:stdout_io) { StringIO.new }
|
|
4
|
-
let(:stderr_io) { StringIO.new }
|
|
5
|
-
|
|
6
|
-
def stdout
|
|
7
|
-
stdout_io.string
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def stderr
|
|
11
|
-
stderr_io.string
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
let(:expected_cookbook_root) { tempdir }
|
|
15
|
-
let(:cookbook_name) { "example_cookbook" }
|
|
16
|
-
|
|
17
|
-
let(:cookbook_path) { File.join(tempdir, cookbook_name) }
|
|
18
|
-
|
|
19
|
-
subject(:recipe_generator) do
|
|
20
|
-
generator = described_class.new(argv)
|
|
21
|
-
allow(generator).to receive(:stdout).and_return(stdout_io)
|
|
22
|
-
allow(generator).to receive(:stderr).and_return(stderr_io)
|
|
23
|
-
generator
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def generator_context
|
|
27
|
-
ChefDK::Generator.context
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
before do
|
|
31
|
-
ChefDK::Generator.reset
|
|
32
|
-
reset_tempdir
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
after(:each) do
|
|
36
|
-
ChefDK::Generator::Context.reset
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
context "when argv is empty" do
|
|
40
|
-
let(:argv) { [] }
|
|
41
|
-
|
|
42
|
-
it "emits an error message and exits" do
|
|
43
|
-
expected_stdout = "Usage: chef generate #{generator_name} [path/to/cookbook] NAME [options]"
|
|
44
|
-
|
|
45
|
-
expect(recipe_generator.run).to eq(1)
|
|
46
|
-
expect(stdout).to include(expected_stdout)
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
context "when CWD is a cookbook" do
|
|
51
|
-
|
|
52
|
-
let(:argv) { [ new_file_name ] }
|
|
53
|
-
|
|
54
|
-
before do
|
|
55
|
-
FileUtils.cp_r(File.join(fixtures_path, "example_cookbook"), tempdir)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "configures the generator context" do
|
|
59
|
-
Dir.chdir(cookbook_path) do
|
|
60
|
-
recipe_generator.read_and_validate_params
|
|
61
|
-
recipe_generator.setup_context
|
|
62
|
-
|
|
63
|
-
expect(generator_context.cookbook_root).to eq(expected_cookbook_root)
|
|
64
|
-
expect(generator_context.cookbook_name).to eq(cookbook_name)
|
|
65
|
-
expect(generator_context.new_file_basename).to eq(new_file_name)
|
|
66
|
-
expect(generator_context.recipe_name).to eq(new_file_name)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it "creates a new recipe" do
|
|
71
|
-
Dir.chdir(cookbook_path) do
|
|
72
|
-
allow(recipe_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
73
|
-
recipe_generator.run
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
generated_files.each do |expected_file|
|
|
77
|
-
expect(File).to exist(File.join(cookbook_path, expected_file))
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
context "when CWD is not a cookbook" do
|
|
84
|
-
context "and path to the cookbook is not given in the agv" do
|
|
85
|
-
let(:argv) { [ new_file_name ] }
|
|
86
|
-
|
|
87
|
-
it "emits an error message and exits" do
|
|
88
|
-
expected_stdout = "Usage: chef generate #{generator_name} [path/to/cookbook] NAME [options]"
|
|
89
|
-
expected_stderr = "Error: Directory #{Dir.pwd} is not a cookbook\n"
|
|
90
|
-
|
|
91
|
-
expect(recipe_generator.run).to eq(1)
|
|
92
|
-
expect(stdout).to include(expected_stdout)
|
|
93
|
-
expect(stderr).to eq(expected_stderr)
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
context "and path to the cookbook is given in the argv" do
|
|
98
|
-
let(:argv) { [cookbook_path, new_file_name ] }
|
|
99
|
-
|
|
100
|
-
before do
|
|
101
|
-
FileUtils.cp_r(File.join(fixtures_path, "example_cookbook"), tempdir)
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
it "configures the generator context" do
|
|
105
|
-
recipe_generator.read_and_validate_params
|
|
106
|
-
recipe_generator.setup_context
|
|
107
|
-
|
|
108
|
-
expect(generator_context.cookbook_root).to eq(File.dirname(cookbook_path))
|
|
109
|
-
expect(generator_context.cookbook_name).to eq(cookbook_name)
|
|
110
|
-
expect(generator_context.new_file_basename).to eq(new_file_name)
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
it "creates a new recipe" do
|
|
114
|
-
allow(recipe_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
115
|
-
recipe_generator.run
|
|
116
|
-
|
|
117
|
-
generated_files.each do |expected_file|
|
|
118
|
-
expect(File).to exist(File.join(cookbook_path, expected_file))
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
end
|
|
1
|
+
shared_examples_for "a file generator" do
|
|
2
|
+
|
|
3
|
+
let(:stdout_io) { StringIO.new }
|
|
4
|
+
let(:stderr_io) { StringIO.new }
|
|
5
|
+
|
|
6
|
+
def stdout
|
|
7
|
+
stdout_io.string
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def stderr
|
|
11
|
+
stderr_io.string
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
let(:expected_cookbook_root) { tempdir }
|
|
15
|
+
let(:cookbook_name) { "example_cookbook" }
|
|
16
|
+
|
|
17
|
+
let(:cookbook_path) { File.join(tempdir, cookbook_name) }
|
|
18
|
+
|
|
19
|
+
subject(:recipe_generator) do
|
|
20
|
+
generator = described_class.new(argv)
|
|
21
|
+
allow(generator).to receive(:stdout).and_return(stdout_io)
|
|
22
|
+
allow(generator).to receive(:stderr).and_return(stderr_io)
|
|
23
|
+
generator
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def generator_context
|
|
27
|
+
ChefDK::Generator.context
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
before do
|
|
31
|
+
ChefDK::Generator.reset
|
|
32
|
+
reset_tempdir
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
after(:each) do
|
|
36
|
+
ChefDK::Generator::Context.reset
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context "when argv is empty" do
|
|
40
|
+
let(:argv) { [] }
|
|
41
|
+
|
|
42
|
+
it "emits an error message and exits" do
|
|
43
|
+
expected_stdout = "Usage: chef generate #{generator_name} [path/to/cookbook] NAME [options]"
|
|
44
|
+
|
|
45
|
+
expect(recipe_generator.run).to eq(1)
|
|
46
|
+
expect(stdout).to include(expected_stdout)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "when CWD is a cookbook" do
|
|
51
|
+
|
|
52
|
+
let(:argv) { [ new_file_name ] }
|
|
53
|
+
|
|
54
|
+
before do
|
|
55
|
+
FileUtils.cp_r(File.join(fixtures_path, "example_cookbook"), tempdir)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "configures the generator context" do
|
|
59
|
+
Dir.chdir(cookbook_path) do
|
|
60
|
+
recipe_generator.read_and_validate_params
|
|
61
|
+
recipe_generator.setup_context
|
|
62
|
+
|
|
63
|
+
expect(generator_context.cookbook_root).to eq(expected_cookbook_root)
|
|
64
|
+
expect(generator_context.cookbook_name).to eq(cookbook_name)
|
|
65
|
+
expect(generator_context.new_file_basename).to eq(new_file_name)
|
|
66
|
+
expect(generator_context.recipe_name).to eq(new_file_name)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "creates a new recipe" do
|
|
71
|
+
Dir.chdir(cookbook_path) do
|
|
72
|
+
allow(recipe_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
73
|
+
recipe_generator.run
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
generated_files.each do |expected_file|
|
|
77
|
+
expect(File).to exist(File.join(cookbook_path, expected_file))
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
context "when CWD is not a cookbook" do
|
|
84
|
+
context "and path to the cookbook is not given in the agv" do
|
|
85
|
+
let(:argv) { [ new_file_name ] }
|
|
86
|
+
|
|
87
|
+
it "emits an error message and exits" do
|
|
88
|
+
expected_stdout = "Usage: chef generate #{generator_name} [path/to/cookbook] NAME [options]"
|
|
89
|
+
expected_stderr = "Error: Directory #{Dir.pwd} is not a cookbook\n"
|
|
90
|
+
|
|
91
|
+
expect(recipe_generator.run).to eq(1)
|
|
92
|
+
expect(stdout).to include(expected_stdout)
|
|
93
|
+
expect(stderr).to eq(expected_stderr)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
context "and path to the cookbook is given in the argv" do
|
|
98
|
+
let(:argv) { [cookbook_path, new_file_name ] }
|
|
99
|
+
|
|
100
|
+
before do
|
|
101
|
+
FileUtils.cp_r(File.join(fixtures_path, "example_cookbook"), tempdir)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "configures the generator context" do
|
|
105
|
+
recipe_generator.read_and_validate_params
|
|
106
|
+
recipe_generator.setup_context
|
|
107
|
+
|
|
108
|
+
expect(generator_context.cookbook_root).to eq(File.dirname(cookbook_path))
|
|
109
|
+
expect(generator_context.cookbook_name).to eq(cookbook_name)
|
|
110
|
+
expect(generator_context.new_file_basename).to eq(new_file_name)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "creates a new recipe" do
|
|
114
|
+
allow(recipe_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
115
|
+
recipe_generator.run
|
|
116
|
+
|
|
117
|
+
generated_files.each do |expected_file|
|
|
118
|
+
expect(File).to exist(File.join(cookbook_path, expected_file))
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
end
|