chef-dk 2.4.17 → 2.5.3
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 +5 -5
- data/Gemfile +121 -119
- data/Gemfile.lock +802 -817
- 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 -20
- 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 +126 -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 +151 -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 +150 -150
- data/lib/chef-dk/generator.rb +165 -165
- data/lib/chef-dk/helpers.rb +176 -176
- data/lib/chef-dk/pager.rb +105 -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 +164 -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/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 +123 -122
- 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 +122 -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 +312 -312
- data/lib/chef-dk/policyfile/source_uri.rb +57 -57
- data/lib/chef-dk/policyfile/storage_config.rb +102 -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 +420 -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 +200 -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 +236 -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 +107 -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 +54 -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 +152 -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/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 +22 -22
- 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 +756 -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/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 -161
- 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 +638 -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 +478 -478
- data/spec/unit/policyfile_services/install_spec.rb +209 -209
- data/spec/unit/policyfile_services/push_archive_spec.rb +374 -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 +5 -5
data/lib/chef-dk/pager.rb
CHANGED
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2015 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require "chef-dk/ui"
|
|
19
|
-
|
|
20
|
-
module ChefDK
|
|
21
|
-
class Pager
|
|
22
|
-
|
|
23
|
-
attr_reader :pager_pid
|
|
24
|
-
|
|
25
|
-
def initialize(enable_pager: true)
|
|
26
|
-
@enable_pager = enable_pager
|
|
27
|
-
@pipe = nil
|
|
28
|
-
@pager_pid
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def pager_enabled?
|
|
32
|
-
!!(@enable_pager && have_tty? && env["PAGER"])
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def ui
|
|
36
|
-
@ui ||=
|
|
37
|
-
if pager_enabled?
|
|
38
|
-
UI.new(out: parent_stdout)
|
|
39
|
-
else
|
|
40
|
-
UI.new
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def with_pager
|
|
45
|
-
start
|
|
46
|
-
begin
|
|
47
|
-
yield self
|
|
48
|
-
ensure
|
|
49
|
-
wait
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def start
|
|
54
|
-
return false unless pager_enabled?
|
|
55
|
-
|
|
56
|
-
# Ignore CTRL-C because it can cause the parent to die before the
|
|
57
|
-
# pager which causes wonky behavior in the terminal
|
|
58
|
-
Kernel.trap(:INT, "IGNORE")
|
|
59
|
-
|
|
60
|
-
@pager_pid = Process.spawn(pager_env, env["PAGER"], in: child_stdin)
|
|
61
|
-
|
|
62
|
-
child_stdin.close
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def wait
|
|
66
|
-
return false unless pager_enabled?
|
|
67
|
-
|
|
68
|
-
# Sends EOF to the PAGER
|
|
69
|
-
parent_stdout.close
|
|
70
|
-
# wait or else we'd kill the pager when we exit
|
|
71
|
-
Process.waitpid(pager_pid)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# @api private
|
|
75
|
-
# This is just public so we can stub it for testing
|
|
76
|
-
def env
|
|
77
|
-
ENV
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# @api private
|
|
81
|
-
# This is just public so we can stub it for testing
|
|
82
|
-
def have_tty?
|
|
83
|
-
$stdout.tty?
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
private
|
|
87
|
-
|
|
88
|
-
def child_stdin
|
|
89
|
-
pipe[0]
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def parent_stdout
|
|
93
|
-
pipe[1]
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def pipe
|
|
97
|
-
@pipe ||= IO.pipe
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def pager_env
|
|
101
|
-
{ "LESS" => "-FRX", "LV" => "-c" }
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
end
|
|
105
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2015 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "chef-dk/ui"
|
|
19
|
+
|
|
20
|
+
module ChefDK
|
|
21
|
+
class Pager
|
|
22
|
+
|
|
23
|
+
attr_reader :pager_pid
|
|
24
|
+
|
|
25
|
+
def initialize(enable_pager: true)
|
|
26
|
+
@enable_pager = enable_pager
|
|
27
|
+
@pipe = nil
|
|
28
|
+
@pager_pid
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def pager_enabled?
|
|
32
|
+
!!(@enable_pager && have_tty? && env["PAGER"])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def ui
|
|
36
|
+
@ui ||=
|
|
37
|
+
if pager_enabled?
|
|
38
|
+
UI.new(out: parent_stdout)
|
|
39
|
+
else
|
|
40
|
+
UI.new
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def with_pager
|
|
45
|
+
start
|
|
46
|
+
begin
|
|
47
|
+
yield self
|
|
48
|
+
ensure
|
|
49
|
+
wait
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def start
|
|
54
|
+
return false unless pager_enabled?
|
|
55
|
+
|
|
56
|
+
# Ignore CTRL-C because it can cause the parent to die before the
|
|
57
|
+
# pager which causes wonky behavior in the terminal
|
|
58
|
+
Kernel.trap(:INT, "IGNORE")
|
|
59
|
+
|
|
60
|
+
@pager_pid = Process.spawn(pager_env, env["PAGER"], in: child_stdin)
|
|
61
|
+
|
|
62
|
+
child_stdin.close
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def wait
|
|
66
|
+
return false unless pager_enabled?
|
|
67
|
+
|
|
68
|
+
# Sends EOF to the PAGER
|
|
69
|
+
parent_stdout.close
|
|
70
|
+
# wait or else we'd kill the pager when we exit
|
|
71
|
+
Process.waitpid(pager_pid)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# @api private
|
|
75
|
+
# This is just public so we can stub it for testing
|
|
76
|
+
def env
|
|
77
|
+
ENV
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# @api private
|
|
81
|
+
# This is just public so we can stub it for testing
|
|
82
|
+
def have_tty?
|
|
83
|
+
$stdout.tty?
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
private
|
|
87
|
+
|
|
88
|
+
def child_stdin
|
|
89
|
+
pipe[0]
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def parent_stdout
|
|
93
|
+
pipe[1]
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def pipe
|
|
97
|
+
@pipe ||= IO.pipe
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def pager_env
|
|
101
|
+
{ "LESS" => "-FRX", "LV" => "-c" }
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2017 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require "json"
|
|
19
|
-
require "chef-dk/cookbook_omnifetch"
|
|
20
|
-
require "chef-dk/policyfile/source_uri"
|
|
21
|
-
require "chef-dk/exceptions"
|
|
22
|
-
require "chef/http/simple"
|
|
23
|
-
|
|
24
|
-
module ChefDK
|
|
25
|
-
module Policyfile
|
|
26
|
-
class ArtifactoryCookbookSource
|
|
27
|
-
|
|
28
|
-
attr_reader :uri
|
|
29
|
-
attr_reader :preferred_cookbooks
|
|
30
|
-
attr_reader :chef_config
|
|
31
|
-
|
|
32
|
-
def initialize(uri, chef_config: nil)
|
|
33
|
-
@uri = uri
|
|
34
|
-
@http_connections = {}
|
|
35
|
-
@chef_config = chef_config
|
|
36
|
-
@preferred_cookbooks = []
|
|
37
|
-
yield self if block_given?
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def default_source_args
|
|
41
|
-
[:artifactory, uri]
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def ==(other)
|
|
45
|
-
other.kind_of?(self.class) && other.uri == uri && other.preferred_cookbooks == preferred_cookbooks
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def preferred_for(*cookbook_names)
|
|
49
|
-
preferred_cookbooks.concat(cookbook_names)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def preferred_source_for?(cookbook_name)
|
|
53
|
-
preferred_cookbooks.include?(cookbook_name)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def universe_graph
|
|
57
|
-
@universe_graph ||= begin
|
|
58
|
-
full_community_graph.inject({}) do |normalized_graph, (cookbook_name, metadata_by_version)|
|
|
59
|
-
normalized_graph[cookbook_name] = metadata_by_version.inject({}) do |deps_by_version, (version, metadata)|
|
|
60
|
-
deps_by_version[version] = metadata["dependencies"]
|
|
61
|
-
deps_by_version
|
|
62
|
-
end
|
|
63
|
-
normalized_graph
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def source_options_for(cookbook_name, cookbook_version)
|
|
69
|
-
base_uri = full_community_graph[cookbook_name][cookbook_version]["download_url"]
|
|
70
|
-
{
|
|
71
|
-
artifactory: base_uri,
|
|
72
|
-
version: cookbook_version,
|
|
73
|
-
http_client: http_connection_for(base_uri.to_s),
|
|
74
|
-
}
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def null?
|
|
78
|
-
false
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def desc
|
|
82
|
-
"artifactory(#{uri})"
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
private
|
|
86
|
-
|
|
87
|
-
def http_connection_for(base_url)
|
|
88
|
-
headers = { "X-Jfrog-Art-API" => chef_config.artifactory_api_key || ENV["ARTIFACTORY_API_KEY"] }
|
|
89
|
-
@http_connections[base_url] ||= Chef::HTTP::Simple.new(base_url, headers: headers)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def full_community_graph
|
|
93
|
-
@full_community_graph ||=
|
|
94
|
-
begin
|
|
95
|
-
graph_json = http_connection_for(uri).get("/universe")
|
|
96
|
-
JSON.parse(graph_json)
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2017 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "json"
|
|
19
|
+
require "chef-dk/cookbook_omnifetch"
|
|
20
|
+
require "chef-dk/policyfile/source_uri"
|
|
21
|
+
require "chef-dk/exceptions"
|
|
22
|
+
require "chef/http/simple"
|
|
23
|
+
|
|
24
|
+
module ChefDK
|
|
25
|
+
module Policyfile
|
|
26
|
+
class ArtifactoryCookbookSource
|
|
27
|
+
|
|
28
|
+
attr_reader :uri
|
|
29
|
+
attr_reader :preferred_cookbooks
|
|
30
|
+
attr_reader :chef_config
|
|
31
|
+
|
|
32
|
+
def initialize(uri, chef_config: nil)
|
|
33
|
+
@uri = uri
|
|
34
|
+
@http_connections = {}
|
|
35
|
+
@chef_config = chef_config
|
|
36
|
+
@preferred_cookbooks = []
|
|
37
|
+
yield self if block_given?
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def default_source_args
|
|
41
|
+
[:artifactory, uri]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def ==(other)
|
|
45
|
+
other.kind_of?(self.class) && other.uri == uri && other.preferred_cookbooks == preferred_cookbooks
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def preferred_for(*cookbook_names)
|
|
49
|
+
preferred_cookbooks.concat(cookbook_names)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def preferred_source_for?(cookbook_name)
|
|
53
|
+
preferred_cookbooks.include?(cookbook_name)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def universe_graph
|
|
57
|
+
@universe_graph ||= begin
|
|
58
|
+
full_community_graph.inject({}) do |normalized_graph, (cookbook_name, metadata_by_version)|
|
|
59
|
+
normalized_graph[cookbook_name] = metadata_by_version.inject({}) do |deps_by_version, (version, metadata)|
|
|
60
|
+
deps_by_version[version] = metadata["dependencies"]
|
|
61
|
+
deps_by_version
|
|
62
|
+
end
|
|
63
|
+
normalized_graph
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def source_options_for(cookbook_name, cookbook_version)
|
|
69
|
+
base_uri = full_community_graph[cookbook_name][cookbook_version]["download_url"]
|
|
70
|
+
{
|
|
71
|
+
artifactory: base_uri,
|
|
72
|
+
version: cookbook_version,
|
|
73
|
+
http_client: http_connection_for(base_uri.to_s),
|
|
74
|
+
}
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def null?
|
|
78
|
+
false
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def desc
|
|
82
|
+
"artifactory(#{uri})"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
private
|
|
86
|
+
|
|
87
|
+
def http_connection_for(base_url)
|
|
88
|
+
headers = { "X-Jfrog-Art-API" => chef_config.artifactory_api_key || ENV["ARTIFACTORY_API_KEY"] }
|
|
89
|
+
@http_connections[base_url] ||= Chef::HTTP::Simple.new(base_url, headers: headers)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def full_community_graph
|
|
93
|
+
@full_community_graph ||=
|
|
94
|
+
begin
|
|
95
|
+
graph_json = http_connection_for(uri).get("/universe")
|
|
96
|
+
JSON.parse(graph_json)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2017 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require "chef/mash"
|
|
19
|
-
|
|
20
|
-
module ChefDK
|
|
21
|
-
module Policyfile
|
|
22
|
-
class AttributeMergeChecker
|
|
23
|
-
# A ConflictError is used to specify a conflict has occurred
|
|
24
|
-
class ConflictError < StandardError
|
|
25
|
-
attr_reader :attribute_path
|
|
26
|
-
attr_reader :provided_by
|
|
27
|
-
|
|
28
|
-
def initialize(attribute_path, provided_by)
|
|
29
|
-
@attribute_path = attribute_path
|
|
30
|
-
@provided_by = provided_by
|
|
31
|
-
super("Attribute '#{attribute_path}' provided conflicting values by the following sources #{provided_by}")
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# A Leaf is used to mark an individual attribute that has already
|
|
36
|
-
# been provided, along with its value and by who
|
|
37
|
-
#
|
|
38
|
-
# @api private
|
|
39
|
-
class Leaf
|
|
40
|
-
attr_reader :provided_by
|
|
41
|
-
attr_reader :val
|
|
42
|
-
|
|
43
|
-
def initialize(provided_by, val)
|
|
44
|
-
@provided_by = provided_by
|
|
45
|
-
@val = val
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# An AttributeHashInfo holds a set of attributes along with where they came from
|
|
50
|
-
class AttributeHashInfo
|
|
51
|
-
attr_reader :source_name
|
|
52
|
-
attr_reader :hash
|
|
53
|
-
def initialize(source_name, hash)
|
|
54
|
-
@source_name = source_name
|
|
55
|
-
@hash = hash
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# @return [Array<AttributeHashInfo>] A list of attributes and who they were provided by
|
|
60
|
-
attr_reader :attribute_hash_infos
|
|
61
|
-
|
|
62
|
-
def initialize
|
|
63
|
-
@attribute_hash_infos = []
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Add a hash of attributes to the set of attributes that will be compared
|
|
67
|
-
# for conflicts
|
|
68
|
-
#
|
|
69
|
-
# @param source_name [String] Where the attributes came from
|
|
70
|
-
# @param hash [Hash] attributes from source_name
|
|
71
|
-
def with_attributes(source_name, hash)
|
|
72
|
-
attribute_hash_infos << AttributeHashInfo.new(source_name, hash)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# Check all added attributes for conflicts. Different sources can provide
|
|
76
|
-
# the same attribute if they have the same value. Otherwise, it is considered
|
|
77
|
-
# a conflict
|
|
78
|
-
#
|
|
79
|
-
# @raise ConflictError if there are conflicting attributes
|
|
80
|
-
def check!
|
|
81
|
-
check_struct = Mash.new
|
|
82
|
-
attribute_hash_infos.each do |attr_hash_info|
|
|
83
|
-
fill!(check_struct, attr_hash_info.source_name, "", attr_hash_info.hash)
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
private
|
|
88
|
-
|
|
89
|
-
def fill!(acc, source_name, path, hash)
|
|
90
|
-
hash.each do |(key, val)|
|
|
91
|
-
new_path = "#{path}[#{key}]"
|
|
92
|
-
if val.kind_of?(Hash)
|
|
93
|
-
acc[key] ||= Mash.new
|
|
94
|
-
fill!(acc[key], source_name, new_path, val)
|
|
95
|
-
else
|
|
96
|
-
if acc[key].nil?
|
|
97
|
-
acc[key] = Leaf.new(source_name, val)
|
|
98
|
-
else
|
|
99
|
-
leaf = acc[key]
|
|
100
|
-
if leaf.val != val
|
|
101
|
-
raise ConflictError.new(new_path, [leaf.provided_by, source_name])
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2017 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "chef/mash"
|
|
19
|
+
|
|
20
|
+
module ChefDK
|
|
21
|
+
module Policyfile
|
|
22
|
+
class AttributeMergeChecker
|
|
23
|
+
# A ConflictError is used to specify a conflict has occurred
|
|
24
|
+
class ConflictError < StandardError
|
|
25
|
+
attr_reader :attribute_path
|
|
26
|
+
attr_reader :provided_by
|
|
27
|
+
|
|
28
|
+
def initialize(attribute_path, provided_by)
|
|
29
|
+
@attribute_path = attribute_path
|
|
30
|
+
@provided_by = provided_by
|
|
31
|
+
super("Attribute '#{attribute_path}' provided conflicting values by the following sources #{provided_by}")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# A Leaf is used to mark an individual attribute that has already
|
|
36
|
+
# been provided, along with its value and by who
|
|
37
|
+
#
|
|
38
|
+
# @api private
|
|
39
|
+
class Leaf
|
|
40
|
+
attr_reader :provided_by
|
|
41
|
+
attr_reader :val
|
|
42
|
+
|
|
43
|
+
def initialize(provided_by, val)
|
|
44
|
+
@provided_by = provided_by
|
|
45
|
+
@val = val
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# An AttributeHashInfo holds a set of attributes along with where they came from
|
|
50
|
+
class AttributeHashInfo
|
|
51
|
+
attr_reader :source_name
|
|
52
|
+
attr_reader :hash
|
|
53
|
+
def initialize(source_name, hash)
|
|
54
|
+
@source_name = source_name
|
|
55
|
+
@hash = hash
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# @return [Array<AttributeHashInfo>] A list of attributes and who they were provided by
|
|
60
|
+
attr_reader :attribute_hash_infos
|
|
61
|
+
|
|
62
|
+
def initialize
|
|
63
|
+
@attribute_hash_infos = []
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Add a hash of attributes to the set of attributes that will be compared
|
|
67
|
+
# for conflicts
|
|
68
|
+
#
|
|
69
|
+
# @param source_name [String] Where the attributes came from
|
|
70
|
+
# @param hash [Hash] attributes from source_name
|
|
71
|
+
def with_attributes(source_name, hash)
|
|
72
|
+
attribute_hash_infos << AttributeHashInfo.new(source_name, hash)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Check all added attributes for conflicts. Different sources can provide
|
|
76
|
+
# the same attribute if they have the same value. Otherwise, it is considered
|
|
77
|
+
# a conflict
|
|
78
|
+
#
|
|
79
|
+
# @raise ConflictError if there are conflicting attributes
|
|
80
|
+
def check!
|
|
81
|
+
check_struct = Mash.new
|
|
82
|
+
attribute_hash_infos.each do |attr_hash_info|
|
|
83
|
+
fill!(check_struct, attr_hash_info.source_name, "", attr_hash_info.hash)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
private
|
|
88
|
+
|
|
89
|
+
def fill!(acc, source_name, path, hash)
|
|
90
|
+
hash.each do |(key, val)|
|
|
91
|
+
new_path = "#{path}[#{key}]"
|
|
92
|
+
if val.kind_of?(Hash)
|
|
93
|
+
acc[key] ||= Mash.new
|
|
94
|
+
fill!(acc[key], source_name, new_path, val)
|
|
95
|
+
else
|
|
96
|
+
if acc[key].nil?
|
|
97
|
+
acc[key] = Leaf.new(source_name, val)
|
|
98
|
+
else
|
|
99
|
+
leaf = acc[key]
|
|
100
|
+
if leaf.val != val
|
|
101
|
+
raise ConflictError.new(new_path, [leaf.provided_by, source_name])
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|