chef-dk 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +190 -190
- data/Gemfile +26 -0
- data/LICENSE +201 -201
- data/README.md +276 -276
- data/Rakefile +18 -18
- data/bin/chef +25 -25
- data/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +40 -40
- data/lib/chef-dk/builtin_commands.rb +60 -60
- data/lib/chef-dk/chef_runner.rb +98 -98
- data/lib/chef-dk/cli.rb +200 -200
- data/lib/chef-dk/command/base.rb +79 -75
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +116 -116
- data/lib/chef-dk/command/clean_policy_revisions.rb +113 -113
- data/lib/chef-dk/command/delete_policy.rb +122 -122
- data/lib/chef-dk/command/delete_policy_group.rb +122 -122
- data/lib/chef-dk/command/diff.rb +316 -316
- data/lib/chef-dk/command/env.rb +90 -90
- data/lib/chef-dk/command/exec.rb +45 -45
- data/lib/chef-dk/command/export.rb +151 -153
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +120 -118
- data/lib/chef-dk/command/generator_commands.rb +80 -80
- data/lib/chef-dk/command/generator_commands/app.rb +107 -107
- data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
- data/lib/chef-dk/command/generator_commands/base.rb +121 -121
- data/lib/chef-dk/command/generator_commands/cookbook.rb +119 -108
- data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +177 -0
- data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +86 -83
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +96 -96
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +121 -121
- data/lib/chef-dk/command/provision.rb +438 -438
- data/lib/chef-dk/command/push.rb +118 -118
- data/lib/chef-dk/command/push_archive.rb +126 -126
- data/lib/chef-dk/command/shell_init.rb +180 -180
- data/lib/chef-dk/command/show_policy.rb +165 -165
- data/lib/chef-dk/command/undelete.rb +155 -155
- data/lib/chef-dk/command/update.rb +129 -129
- data/lib/chef-dk/command/verify.rb +490 -453
- data/lib/chef-dk/commands_map.rb +115 -115
- data/lib/chef-dk/completions/bash.sh.erb +5 -5
- data/lib/chef-dk/completions/chef.fish.erb +10 -10
- data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
- data/lib/chef-dk/component_test.rb +171 -171
- data/lib/chef-dk/configurable.rb +57 -52
- data/lib/chef-dk/cookbook_metadata.rb +45 -45
- data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
- data/lib/chef-dk/cookbook_profiler/git.rb +151 -151
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +32 -32
- data/lib/chef-dk/exceptions.rb +113 -113
- data/lib/chef-dk/generator.rb +163 -162
- data/lib/chef-dk/helpers.rb +159 -159
- data/lib/chef-dk/pager.rb +106 -106
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +122 -122
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +82 -82
- data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +133 -133
- data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
- data/lib/chef-dk/policyfile/cookbook_sources.rb +21 -21
- data/lib/chef-dk/policyfile/differ.rb +266 -266
- data/lib/chef-dk/policyfile/dsl.rb +197 -197
- data/lib/chef-dk/policyfile/lister.rb +232 -232
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +70 -70
- data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
- data/lib/chef-dk/policyfile/storage_config.rb +100 -100
- data/lib/chef-dk/policyfile/undo_record.rb +142 -142
- data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +322 -322
- data/lib/chef-dk/policyfile_lock.rb +552 -552
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
- data/lib/chef-dk/policyfile_services/export_repo.rb +309 -281
- data/lib/chef-dk/policyfile_services/install.rb +125 -125
- data/lib/chef-dk/policyfile_services/push.rb +114 -114
- data/lib/chef-dk/policyfile_services/push_archive.rb +173 -173
- data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
- data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
- data/lib/chef-dk/service_exception_inspectors.rb +25 -25
- data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
- data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
- data/lib/chef-dk/service_exceptions.rb +143 -143
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +100 -100
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -16
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +28 -28
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +57 -57
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb +8 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +97 -97
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +104 -92
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
- data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +27 -27
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +48 -47
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.apache2.erb +201 -201
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
- data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +20 -16
- data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +16 -16
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +27 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +20 -20
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
- data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +9 -9
- data/lib/chef-dk/ui.rb +58 -58
- data/lib/chef-dk/version.rb +20 -20
- data/lib/kitchen/provisioner/policyfile_zero.rb +193 -164
- data/spec/shared/a_file_generator.rb +125 -125
- data/spec/shared/a_generated_file.rb +12 -12
- data/spec/shared/command_with_ui_object.rb +11 -11
- data/spec/shared/custom_generator_cookbook.rb +117 -117
- data/spec/shared/fixture_cookbook_checksums.rb +47 -47
- data/spec/shared/setup_git_cookbooks.rb +53 -53
- data/spec/spec_helper.rb +49 -48
- data/spec/test_helpers.rb +84 -84
- data/spec/unit/chef_runner_spec.rb +111 -110
- data/spec/unit/cli_spec.rb +357 -357
- data/spec/unit/command/base_spec.rb +169 -136
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
- data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
- data/spec/unit/command/delete_policy_group_spec.rb +207 -207
- data/spec/unit/command/delete_policy_spec.rb +207 -207
- data/spec/unit/command/diff_spec.rb +312 -312
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +179 -179
- data/spec/unit/command/export_spec.rb +189 -189
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +169 -169
- data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
- data/spec/unit/command/generator_commands/cookbook_spec.rb +320 -240
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -0
- data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
- data/spec/unit/command/generator_commands/policyfile_spec.rb +125 -125
- data/spec/unit/command/generator_commands/recipe_spec.rb +34 -34
- data/spec/unit/command/generator_commands/repo_spec.rb +283 -283
- data/spec/unit/command/generator_commands/template_spec.rb +32 -32
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +592 -592
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +199 -199
- data/spec/unit/command/shell_init_spec.rb +329 -329
- data/spec/unit/command/show_policy_spec.rb +235 -235
- data/spec/unit/command/undelete_spec.rb +246 -246
- data/spec/unit/command/update_spec.rb +251 -251
- data/spec/unit/command/verify_spec.rb +323 -322
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/component_test_spec.rb +126 -126
- data/spec/unit/cookbook_metadata_spec.rb +98 -98
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
- data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
- data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
- data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
- data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
- data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -36
- data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
- data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/generator_spec.rb +120 -120
- data/spec/unit/helpers_spec.rb +92 -92
- data/spec/unit/pager_spec.rb +119 -119
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +66 -66
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +51 -51
- data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +252 -252
- data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
- data/spec/unit/policyfile/differ_spec.rb +687 -687
- data/spec/unit/policyfile/lister_spec.rb +272 -272
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +115 -115
- data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
- data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
- data/spec/unit/policyfile/storage_config_spec.rb +172 -172
- data/spec/unit/policyfile/undo_record_spec.rb +260 -260
- data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
- data/spec/unit/policyfile/uploader_spec.rb +410 -410
- data/spec/unit/policyfile_demands_spec.rb +876 -876
- data/spec/unit/policyfile_evaluation_spec.rb +441 -441
- data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
- data/spec/unit/policyfile_lock_install_spec.rb +138 -138
- data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
- data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
- data/spec/unit/policyfile_services/export_repo_spec.rb +439 -416
- data/spec/unit/policyfile_services/install_spec.rb +191 -191
- data/spec/unit/policyfile_services/push_archive_spec.rb +345 -345
- data/spec/unit/policyfile_services/push_spec.rb +233 -233
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
- data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
- data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
- data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
- data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
- data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
- data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
- data/spec/unit/shell_out_spec.rb +34 -34
- metadata +9 -3
|
@@ -1,124 +1,124 @@
|
|
|
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 'ffi_yajl'
|
|
19
|
-
require 'mixlib/shellout'
|
|
20
|
-
require 'chef-dk/service_exceptions'
|
|
21
|
-
|
|
22
|
-
module ChefDK
|
|
23
|
-
module Policyfile
|
|
24
|
-
module ComparisonBase
|
|
25
|
-
|
|
26
|
-
class Local
|
|
27
|
-
|
|
28
|
-
attr_reader :policyfile_lock_relpath
|
|
29
|
-
|
|
30
|
-
def initialize(policyfile_lock_relpath)
|
|
31
|
-
@policyfile_lock_relpath = policyfile_lock_relpath
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def name
|
|
35
|
-
"local:#{policyfile_lock_relpath}"
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def lock
|
|
39
|
-
raise LockfileNotFound, "Expected lockfile at #{policyfile_lock_relpath} does not exist" unless File.exist?(policyfile_lock_relpath)
|
|
40
|
-
raise LockfileNotFound, "Expected lockfile at #{policyfile_lock_relpath} cannot be read" unless File.readable?(policyfile_lock_relpath)
|
|
41
|
-
FFI_Yajl::Parser.parse(IO.read(policyfile_lock_relpath))
|
|
42
|
-
rescue FFI_Yajl::ParseError => e
|
|
43
|
-
raise MalformedLockfile, "Invalid JSON in lockfile at #{policyfile_lock_relpath}:\n #{e.message}"
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
class Git
|
|
49
|
-
|
|
50
|
-
attr_reader :ref
|
|
51
|
-
attr_reader :policyfile_lock_relpath
|
|
52
|
-
|
|
53
|
-
def initialize(ref, policyfile_lock_relpath)
|
|
54
|
-
@ref = ref
|
|
55
|
-
@policyfile_lock_relpath = policyfile_lock_relpath
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def name
|
|
59
|
-
"git:#{ref}"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def lock
|
|
63
|
-
git_cmd.run_command
|
|
64
|
-
git_cmd.error!
|
|
65
|
-
FFI_Yajl::Parser.parse(git_cmd.stdout)
|
|
66
|
-
rescue Mixlib::ShellOut::ShellCommandFailed
|
|
67
|
-
raise GitError, "Git command `#{git_cmd_string}` failed with message: #{git_cmd.stderr.chomp}"
|
|
68
|
-
rescue FFI_Yajl::ParseError => e
|
|
69
|
-
raise MalformedLockfile, "Invalid JSON in lockfile at git ref '#{ref}' at path '#{policyfile_lock_relpath}':\n #{e.message}"
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def git_cmd
|
|
73
|
-
@git_cmd ||= Mixlib::ShellOut.new(git_cmd_string)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def git_cmd_string
|
|
77
|
-
# Git is a little picky about how we specify the paths, but it looks
|
|
78
|
-
# like we don't need to worry about the relative path to the root of
|
|
79
|
-
# the repo if we give git a leading dot:
|
|
80
|
-
#
|
|
81
|
-
# git show 6644e6cb2ade90b8aff2ebb44728958fbc939ebf:zero.rb
|
|
82
|
-
# fatal: Path 'etc/zero.rb' exists, but not 'zero.rb'.
|
|
83
|
-
# Did you mean '6644e6cb2ade90b8aff2ebb44728958fbc939ebf:etc/zero.rb' aka '6644e6cb2ade90b8aff2ebb44728958fbc939ebf:./zero.rb'?
|
|
84
|
-
# git show 6644e6cb2ade90b8aff2ebb44728958fbc939ebf:./zero.rb
|
|
85
|
-
# (works)
|
|
86
|
-
"git show #{ref}:./#{policyfile_lock_relpath}"
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
class PolicyGroup
|
|
92
|
-
|
|
93
|
-
attr_reader :group
|
|
94
|
-
attr_reader :policy_name
|
|
95
|
-
attr_reader :http_client
|
|
96
|
-
|
|
97
|
-
def initialize(group, policy_name, http_client)
|
|
98
|
-
@group = group
|
|
99
|
-
@policy_name = policy_name
|
|
100
|
-
@http_client = http_client
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def name
|
|
104
|
-
"policy_group:#{group}"
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def lock
|
|
108
|
-
http_client.get("policy_groups/#{group}/policies/#{policy_name}")
|
|
109
|
-
rescue Net::ProtocolError => e
|
|
110
|
-
if e.respond_to?(:response) && e.response.code.to_s == "404"
|
|
111
|
-
raise PolicyfileDownloadError.new("No policyfile lock named '#{policy_name}' found in policy_group '#{group}' at #{http_client.url}", e)
|
|
112
|
-
else
|
|
113
|
-
raise PolicyfileDownloadError.new("HTTP error attempting to fetch policyfile lock from #{http_client.url}", e)
|
|
114
|
-
end
|
|
115
|
-
rescue => e
|
|
116
|
-
raise PolicyfileDownloadError.new("Failed to fetch policyfile lock from #{http_client.url}", e)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
|
|
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 'ffi_yajl'
|
|
19
|
+
require 'mixlib/shellout'
|
|
20
|
+
require 'chef-dk/service_exceptions'
|
|
21
|
+
|
|
22
|
+
module ChefDK
|
|
23
|
+
module Policyfile
|
|
24
|
+
module ComparisonBase
|
|
25
|
+
|
|
26
|
+
class Local
|
|
27
|
+
|
|
28
|
+
attr_reader :policyfile_lock_relpath
|
|
29
|
+
|
|
30
|
+
def initialize(policyfile_lock_relpath)
|
|
31
|
+
@policyfile_lock_relpath = policyfile_lock_relpath
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def name
|
|
35
|
+
"local:#{policyfile_lock_relpath}"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def lock
|
|
39
|
+
raise LockfileNotFound, "Expected lockfile at #{policyfile_lock_relpath} does not exist" unless File.exist?(policyfile_lock_relpath)
|
|
40
|
+
raise LockfileNotFound, "Expected lockfile at #{policyfile_lock_relpath} cannot be read" unless File.readable?(policyfile_lock_relpath)
|
|
41
|
+
FFI_Yajl::Parser.parse(IO.read(policyfile_lock_relpath))
|
|
42
|
+
rescue FFI_Yajl::ParseError => e
|
|
43
|
+
raise MalformedLockfile, "Invalid JSON in lockfile at #{policyfile_lock_relpath}:\n #{e.message}"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
class Git
|
|
49
|
+
|
|
50
|
+
attr_reader :ref
|
|
51
|
+
attr_reader :policyfile_lock_relpath
|
|
52
|
+
|
|
53
|
+
def initialize(ref, policyfile_lock_relpath)
|
|
54
|
+
@ref = ref
|
|
55
|
+
@policyfile_lock_relpath = policyfile_lock_relpath
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def name
|
|
59
|
+
"git:#{ref}"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def lock
|
|
63
|
+
git_cmd.run_command
|
|
64
|
+
git_cmd.error!
|
|
65
|
+
FFI_Yajl::Parser.parse(git_cmd.stdout)
|
|
66
|
+
rescue Mixlib::ShellOut::ShellCommandFailed
|
|
67
|
+
raise GitError, "Git command `#{git_cmd_string}` failed with message: #{git_cmd.stderr.chomp}"
|
|
68
|
+
rescue FFI_Yajl::ParseError => e
|
|
69
|
+
raise MalformedLockfile, "Invalid JSON in lockfile at git ref '#{ref}' at path '#{policyfile_lock_relpath}':\n #{e.message}"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def git_cmd
|
|
73
|
+
@git_cmd ||= Mixlib::ShellOut.new(git_cmd_string)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def git_cmd_string
|
|
77
|
+
# Git is a little picky about how we specify the paths, but it looks
|
|
78
|
+
# like we don't need to worry about the relative path to the root of
|
|
79
|
+
# the repo if we give git a leading dot:
|
|
80
|
+
#
|
|
81
|
+
# git show 6644e6cb2ade90b8aff2ebb44728958fbc939ebf:zero.rb
|
|
82
|
+
# fatal: Path 'etc/zero.rb' exists, but not 'zero.rb'.
|
|
83
|
+
# Did you mean '6644e6cb2ade90b8aff2ebb44728958fbc939ebf:etc/zero.rb' aka '6644e6cb2ade90b8aff2ebb44728958fbc939ebf:./zero.rb'?
|
|
84
|
+
# git show 6644e6cb2ade90b8aff2ebb44728958fbc939ebf:./zero.rb
|
|
85
|
+
# (works)
|
|
86
|
+
"git show #{ref}:./#{policyfile_lock_relpath}"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
class PolicyGroup
|
|
92
|
+
|
|
93
|
+
attr_reader :group
|
|
94
|
+
attr_reader :policy_name
|
|
95
|
+
attr_reader :http_client
|
|
96
|
+
|
|
97
|
+
def initialize(group, policy_name, http_client)
|
|
98
|
+
@group = group
|
|
99
|
+
@policy_name = policy_name
|
|
100
|
+
@http_client = http_client
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def name
|
|
104
|
+
"policy_group:#{group}"
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def lock
|
|
108
|
+
http_client.get("policy_groups/#{group}/policies/#{policy_name}")
|
|
109
|
+
rescue Net::ProtocolError => e
|
|
110
|
+
if e.respond_to?(:response) && e.response.code.to_s == "404"
|
|
111
|
+
raise PolicyfileDownloadError.new("No policyfile lock named '#{policy_name}' found in policy_group '#{group}' at #{http_client.url}", e)
|
|
112
|
+
else
|
|
113
|
+
raise PolicyfileDownloadError.new("HTTP error attempting to fetch policyfile lock from #{http_client.url}", e)
|
|
114
|
+
end
|
|
115
|
+
rescue => e
|
|
116
|
+
raise PolicyfileDownloadError.new("Failed to fetch policyfile lock from #{http_client.url}", e)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require 'semverse'
|
|
19
|
-
require 'chef-dk/cookbook_omnifetch'
|
|
20
|
-
require 'chef-dk/policyfile/storage_config'
|
|
21
|
-
|
|
22
|
-
module ChefDK
|
|
23
|
-
module Policyfile
|
|
24
|
-
|
|
25
|
-
class CookbookLocationSpecification
|
|
26
|
-
|
|
27
|
-
#--
|
|
28
|
-
# Provides #relative_paths_root, which is required by CookbookOmnifetch
|
|
29
|
-
# API contract
|
|
30
|
-
include StorageConfigDelegation
|
|
31
|
-
|
|
32
|
-
SOURCE_TYPES = [:git, :github, :path, :artifactserver]
|
|
33
|
-
|
|
34
|
-
#--
|
|
35
|
-
# Required by CookbookOmnifetch API contract
|
|
36
|
-
attr_reader :version_constraint
|
|
37
|
-
|
|
38
|
-
#--
|
|
39
|
-
# Required by CookbookOmnifetch API contract
|
|
40
|
-
attr_reader :name
|
|
41
|
-
|
|
42
|
-
#--
|
|
43
|
-
# Required by CookbookOmnifetch API contract
|
|
44
|
-
attr_reader :source_options
|
|
45
|
-
attr_reader :source_type
|
|
46
|
-
attr_reader :storage_config
|
|
47
|
-
|
|
48
|
-
def initialize(name, version_constraint, source_options, storage_config)
|
|
49
|
-
@name = name
|
|
50
|
-
@version_constraint = Semverse::Constraint.new(version_constraint)
|
|
51
|
-
@source_options = source_options
|
|
52
|
-
@source_type = SOURCE_TYPES.find { |type| source_options.key?(type) }
|
|
53
|
-
@storage_config = storage_config
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def ==(other)
|
|
57
|
-
other.kind_of?(self.class) and
|
|
58
|
-
other.name == name and
|
|
59
|
-
other.version_constraint == version_constraint and
|
|
60
|
-
other.source_options == source_options
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def mirrors_canonical_upstream?
|
|
64
|
-
[:git, :github, :artifactserver].include?(source_type)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def installed?
|
|
68
|
-
installer.installed?
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def ensure_cached
|
|
72
|
-
unless installer.installed?
|
|
73
|
-
installer.install
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def valid?
|
|
78
|
-
errors.empty?
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def errors
|
|
82
|
-
error_messages = []
|
|
83
|
-
if source_options_invalid?
|
|
84
|
-
error_messages << "Cookbook `#{name}' has invalid source options `#{source_options.inspect}'"
|
|
85
|
-
end
|
|
86
|
-
error_messages
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def installer
|
|
90
|
-
# TODO: handle 'bad' return values here (invalid source_options, etc.)
|
|
91
|
-
@installer ||= CookbookOmnifetch.init(self, source_options)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def cache_key
|
|
95
|
-
installer.cache_key
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def relative_path
|
|
99
|
-
installer.relative_path.to_s
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def uri
|
|
103
|
-
installer.uri
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def version_fixed?
|
|
107
|
-
[:git, :github, :path].include?(@source_type)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def version
|
|
111
|
-
cached_cookbook.version
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
def dependencies
|
|
115
|
-
cached_cookbook.dependencies
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def cached_cookbook
|
|
119
|
-
# TODO: handle 'bad' return values here (cookbook not installed yet)
|
|
120
|
-
installer.cached_cookbook
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
def source_options_for_lock
|
|
124
|
-
installer.lock_data
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
def source_options_invalid?
|
|
128
|
-
!source_options.empty? && installer.nil?
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require 'semverse'
|
|
19
|
+
require 'chef-dk/cookbook_omnifetch'
|
|
20
|
+
require 'chef-dk/policyfile/storage_config'
|
|
21
|
+
|
|
22
|
+
module ChefDK
|
|
23
|
+
module Policyfile
|
|
24
|
+
|
|
25
|
+
class CookbookLocationSpecification
|
|
26
|
+
|
|
27
|
+
#--
|
|
28
|
+
# Provides #relative_paths_root, which is required by CookbookOmnifetch
|
|
29
|
+
# API contract
|
|
30
|
+
include StorageConfigDelegation
|
|
31
|
+
|
|
32
|
+
SOURCE_TYPES = [:git, :github, :path, :artifactserver]
|
|
33
|
+
|
|
34
|
+
#--
|
|
35
|
+
# Required by CookbookOmnifetch API contract
|
|
36
|
+
attr_reader :version_constraint
|
|
37
|
+
|
|
38
|
+
#--
|
|
39
|
+
# Required by CookbookOmnifetch API contract
|
|
40
|
+
attr_reader :name
|
|
41
|
+
|
|
42
|
+
#--
|
|
43
|
+
# Required by CookbookOmnifetch API contract
|
|
44
|
+
attr_reader :source_options
|
|
45
|
+
attr_reader :source_type
|
|
46
|
+
attr_reader :storage_config
|
|
47
|
+
|
|
48
|
+
def initialize(name, version_constraint, source_options, storage_config)
|
|
49
|
+
@name = name
|
|
50
|
+
@version_constraint = Semverse::Constraint.new(version_constraint)
|
|
51
|
+
@source_options = source_options
|
|
52
|
+
@source_type = SOURCE_TYPES.find { |type| source_options.key?(type) }
|
|
53
|
+
@storage_config = storage_config
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def ==(other)
|
|
57
|
+
other.kind_of?(self.class) and
|
|
58
|
+
other.name == name and
|
|
59
|
+
other.version_constraint == version_constraint and
|
|
60
|
+
other.source_options == source_options
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def mirrors_canonical_upstream?
|
|
64
|
+
[:git, :github, :artifactserver].include?(source_type)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def installed?
|
|
68
|
+
installer.installed?
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def ensure_cached
|
|
72
|
+
unless installer.installed?
|
|
73
|
+
installer.install
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def valid?
|
|
78
|
+
errors.empty?
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def errors
|
|
82
|
+
error_messages = []
|
|
83
|
+
if source_options_invalid?
|
|
84
|
+
error_messages << "Cookbook `#{name}' has invalid source options `#{source_options.inspect}'"
|
|
85
|
+
end
|
|
86
|
+
error_messages
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def installer
|
|
90
|
+
# TODO: handle 'bad' return values here (invalid source_options, etc.)
|
|
91
|
+
@installer ||= CookbookOmnifetch.init(self, source_options)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def cache_key
|
|
95
|
+
installer.cache_key
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def relative_path
|
|
99
|
+
installer.relative_path.to_s
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def uri
|
|
103
|
+
installer.uri
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def version_fixed?
|
|
107
|
+
[:git, :github, :path].include?(@source_type)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def version
|
|
111
|
+
cached_cookbook.version
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def dependencies
|
|
115
|
+
cached_cookbook.dependencies
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def cached_cookbook
|
|
119
|
+
# TODO: handle 'bad' return values here (cookbook not installed yet)
|
|
120
|
+
installer.cached_cookbook
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def source_options_for_lock
|
|
124
|
+
installer.lock_data
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def source_options_invalid?
|
|
128
|
+
!source_options.empty? && installer.nil?
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|