chef 10.34.6 → 11.0.0.beta.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.
- data/CONTRIBUTING.md +155 -0
- data/README.md +89 -0
- data/Rakefile +4 -12
- data/bin/chef-apply +25 -0
- data/bin/chef-shell +34 -0
- data/bin/shef +6 -5
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/{shef.1.html → chef-shell.1.html} +49 -46
- data/distro/common/html/chef-solo.8.html +18 -12
- data/distro/common/html/chef-solr.8.html +4 -4
- data/distro/common/html/knife-bootstrap.1.html +4 -4
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +4 -4
- data/distro/common/html/knife-cookbook.1.html +10 -7
- data/distro/common/html/knife-data-bag.1.html +10 -7
- data/distro/common/html/knife-environment.1.html +8 -6
- data/distro/common/html/knife-exec.1.html +9 -9
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +8 -13
- data/distro/common/man/man1/{shef.1 → chef-shell.1} +21 -57
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +15 -2
- data/distro/common/man/man1/knife-data-bag.1 +15 -2
- data/distro/common/man/man1/knife-environment.1 +12 -2
- data/distro/common/man/man1/knife-exec.1 +4 -7
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +3 -6
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +36 -4
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/common/markdown/man1/{shef.mkd → chef-shell.mkd} +49 -43
- data/distro/common/markdown/man1/knife-exec.mkd +11 -6
- data/distro/common/markdown/man1/knife.mkd +4 -9
- data/distro/debian/etc/default/chef-client +0 -1
- data/distro/debian/etc/init.d/chef-client +2 -2
- data/lib/chef.rb +2 -5
- data/lib/chef/api_client.rb +20 -130
- data/lib/chef/api_client/registration.rb +126 -0
- data/lib/chef/application.rb +71 -14
- data/lib/chef/application/apply.rb +160 -0
- data/lib/chef/application/client.rb +25 -18
- data/lib/chef/application/knife.rb +0 -2
- data/lib/chef/application/solo.rb +23 -8
- data/lib/chef/application/windows_service.rb +5 -2
- data/lib/chef/applications.rb +1 -0
- data/lib/chef/chef_fs.rb +11 -0
- data/lib/chef/chef_fs/command_line.rb +232 -0
- data/lib/chef/chef_fs/file_pattern.rb +312 -0
- data/lib/chef/chef_fs/file_system.rb +358 -0
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +121 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +109 -0
- data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb} +12 -15
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +84 -0
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +188 -0
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +78 -0
- data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +78 -0
- data/lib/chef/chef_fs/file_system/data_bag_item.rb +59 -0
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +66 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +90 -0
- data/lib/chef/{index_queue.rb → chef_fs/file_system/file_system_error.rb} +14 -12
- data/lib/chef/{resource/whyrun_safe_ruby_block.rb → chef_fs/file_system/file_system_root_dir.rb} +10 -10
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +47 -0
- data/lib/chef/{provider/whyrun_safe_ruby_block.rb → chef_fs/file_system/nonexistent_fs_object.rb} +19 -9
- data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +84 -0
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +123 -0
- data/lib/chef/chef_fs/knife.rb +77 -0
- data/lib/chef/chef_fs/path_utils.rb +64 -0
- data/lib/chef/client.rb +44 -21
- data/lib/chef/config.rb +52 -43
- data/lib/chef/cookbook/synchronizer.rb +6 -8
- data/lib/chef/cookbook/syntax_check.rb +61 -14
- data/lib/chef/cookbook_loader.rb +39 -26
- data/lib/chef/cookbook_uploader.rb +17 -19
- data/lib/chef/cookbook_version.rb +3 -302
- data/lib/chef/daemon.rb +3 -18
- data/lib/chef/data_bag.rb +4 -97
- data/lib/chef/data_bag_item.rb +2 -65
- data/lib/chef/digester.rb +73 -0
- data/lib/chef/dsl.rb +6 -0
- data/lib/chef/dsl/data_query.rb +66 -0
- data/lib/chef/dsl/include_attribute.rb +60 -0
- data/lib/chef/dsl/include_recipe.rb +42 -0
- data/lib/chef/dsl/platform_introspection.rb +213 -0
- data/lib/chef/dsl/recipe.rb +84 -0
- data/lib/chef/dsl/registry_helper.rb +59 -0
- data/lib/chef/encrypted_data_bag_item.rb +74 -19
- data/lib/chef/environment.rb +9 -180
- data/lib/chef/exceptions.rb +87 -14
- data/lib/chef/formatters/base.rb +4 -1
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +0 -4
- data/lib/chef/json_compat.rb +1 -97
- data/lib/chef/knife.rb +90 -41
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/centos5-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +2 -2
- data/lib/chef/knife/configure.rb +1 -2
- data/lib/chef/knife/cookbook_metadata.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +3 -2
- data/lib/chef/knife/cookbook_upload.rb +12 -7
- data/lib/chef/knife/core/bootstrap_context.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +26 -13
- data/lib/chef/knife/core/node_editor.rb +36 -16
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/text_formatter.rb +23 -37
- data/lib/chef/knife/core/ui.rb +15 -9
- data/lib/chef/knife/delete.rb +39 -0
- data/lib/chef/knife/diff.rb +46 -0
- data/lib/chef/knife/download.rb +50 -0
- data/lib/chef/knife/environment_show.rb +7 -0
- data/lib/chef/knife/exec.rb +5 -5
- data/lib/chef/knife/help_topics.rb +1 -1
- data/lib/chef/knife/index_rebuild.rb +91 -7
- data/lib/chef/knife/list.rb +109 -0
- data/lib/chef/knife/raw.rb +108 -0
- data/lib/chef/knife/search.rb +40 -22
- data/lib/chef/knife/show.rb +32 -0
- data/lib/chef/knife/ssh.rb +6 -2
- data/lib/chef/knife/upload.rb +50 -0
- data/lib/chef/mixin/checksum.rb +3 -3
- data/lib/chef/mixin/deep_merge.rb +55 -197
- data/lib/chef/mixin/language.rb +9 -222
- data/lib/chef/mixin/language_include_attribute.rb +6 -38
- data/lib/chef/mixin/language_include_recipe.rb +3 -35
- data/lib/chef/mixin/params_validate.rb +6 -19
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +8 -61
- data/lib/chef/mixin/securable.rb +32 -7
- data/lib/chef/mixin/template.rb +40 -0
- data/lib/chef/mixins.rb +0 -4
- data/lib/chef/monkey_patches/net_http.rb +0 -34
- data/lib/chef/node.rb +133 -309
- data/lib/chef/node/attribute.rb +333 -473
- data/lib/chef/node/attribute_collections.rb +199 -0
- data/lib/chef/node/immutable_collections.rb +186 -0
- data/lib/chef/platform.rb +7 -22
- data/lib/chef/provider.rb +2 -49
- data/lib/chef/provider/breakpoint.rb +6 -6
- data/lib/chef/provider/cookbook_file.rb +5 -33
- data/lib/chef/provider/deploy.rb +2 -1
- data/lib/chef/provider/directory.rb +14 -17
- data/lib/chef/provider/file.rb +19 -52
- data/lib/chef/provider/group.rb +31 -51
- data/lib/chef/provider/group/dscl.rb +13 -53
- data/lib/chef/provider/group/gpasswd.rb +19 -14
- data/lib/chef/provider/group/groupadd.rb +1 -41
- data/lib/chef/provider/group/groupmod.rb +36 -46
- data/lib/chef/provider/group/pw.rb +16 -59
- data/lib/chef/provider/group/suse.rb +13 -16
- data/lib/chef/provider/group/usermod.rb +18 -40
- data/lib/chef/provider/group/windows.rb +6 -13
- data/lib/chef/provider/http_request.rb +25 -42
- data/lib/chef/provider/link.rb +2 -0
- data/lib/chef/provider/lwrp_base.rb +150 -0
- data/lib/chef/provider/package/portage.rb +4 -9
- data/lib/chef/provider/package/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +9 -41
- data/lib/chef/provider/package/yum.rb +12 -19
- data/lib/chef/provider/registry_key.rb +156 -0
- data/lib/chef/provider/remote_directory.rb +2 -0
- data/lib/chef/provider/remote_file.rb +21 -12
- data/lib/chef/provider/ruby_block.rb +5 -2
- data/lib/chef/provider/service.rb +15 -0
- data/lib/chef/provider/service/init.rb +9 -7
- data/lib/chef/provider/service/macosx.rb +15 -73
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/service/solaris.rb +3 -3
- data/lib/chef/provider/template.rb +22 -25
- data/lib/chef/provider/template_finder.rb +61 -0
- data/lib/chef/provider/user.rb +0 -1
- data/lib/chef/provider/user/dscl.rb +175 -568
- data/lib/chef/provider/user/useradd.rb +30 -47
- data/lib/chef/providers.rb +3 -2
- data/lib/chef/recipe.rb +14 -8
- data/lib/chef/resource.rb +13 -154
- data/lib/chef/resource/group.rb +1 -11
- data/lib/chef/resource/http_request.rb +2 -1
- data/lib/chef/resource/lwrp_base.rb +127 -0
- data/lib/chef/resource/mount.rb +10 -11
- data/lib/chef/resource/registry_key.rb +86 -0
- data/lib/chef/resource/remote_directory.rb +6 -5
- data/lib/chef/resource/remote_file.rb +22 -31
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/service.rb +14 -0
- data/lib/chef/resource/user.rb +0 -18
- data/lib/chef/resource_collection.rb +25 -21
- data/lib/chef/resources.rb +2 -1
- data/lib/chef/rest.rb +50 -131
- data/lib/chef/rest/auth_credentials.rb +4 -20
- data/lib/chef/rest/rest_request.rb +2 -7
- data/lib/chef/role.rb +1 -97
- data/lib/chef/run_context.rb +108 -130
- data/lib/chef/run_context/cookbook_compiler.rb +280 -0
- data/lib/chef/run_list.rb +0 -2
- data/lib/chef/run_list/run_list_expansion.rb +0 -15
- data/lib/chef/run_lock.rb +90 -0
- data/lib/chef/runner.rb +28 -5
- data/lib/chef/sandbox.rb +15 -148
- data/lib/chef/scan_access_control.rb +2 -4
- data/lib/chef/shef/ext.rb +3 -575
- data/lib/chef/{shef.rb → shell.rb} +35 -40
- data/lib/chef/shell/ext.rb +593 -0
- data/lib/chef/{shef → shell}/model_wrapper.rb +3 -3
- data/lib/chef/{shef/shef_rest.rb → shell/shell_rest.rb} +4 -4
- data/lib/chef/{shef/shef_session.rb → shell/shell_session.rb} +17 -15
- data/lib/chef/shell_out.rb +7 -0
- data/lib/chef/util/windows/net_group.rb +1 -5
- data/lib/chef/version.rb +3 -3
- data/lib/chef/win32/api/process.rb +0 -1
- data/lib/chef/win32/handle.rb +1 -8
- data/lib/chef/win32/registry.rb +371 -0
- data/spec/data/big_json.json +1 -2
- data/spec/data/big_json_plus_one.json +1 -2
- data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
- data/spec/data/nodes/default.rb +3 -3
- data/spec/data/nodes/test.example.com.rb +3 -3
- data/spec/data/nodes/test.rb +3 -3
- data/spec/data/partial_one.erb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
- data/spec/data/{knife-home/.chef/plugins/knife/example_home_subcommand.rb → run_context/cookbooks/circular-dep1/recipes/default.rb} +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
- data/spec/data/{lwrp_const_scoping/resources/conflict.rb → run_context/cookbooks/circular-dep2/recipes/default.rb} +0 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
- data/spec/data/shef-config.rb +7 -0
- data/spec/functional/dsl/registry_helper_spec.rb +63 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
- data/spec/functional/knife/exec_spec.rb +2 -2
- data/spec/functional/knife/ssh_spec.rb +5 -1
- data/spec/functional/resource/cookbook_file_spec.rb +7 -19
- data/spec/functional/resource/directory_spec.rb +4 -0
- data/spec/functional/resource/file_spec.rb +56 -22
- data/spec/functional/resource/link_spec.rb +2 -0
- data/spec/functional/resource/registry_spec.rb +576 -0
- data/spec/functional/resource/remote_directory_spec.rb +142 -36
- data/spec/functional/resource/remote_file_spec.rb +18 -0
- data/spec/functional/resource/template_spec.rb +23 -2
- data/spec/functional/run_lock_spec.rb +106 -0
- data/spec/functional/shell_spec.rb +100 -0
- data/spec/functional/win32/registry_helper_spec.rb +632 -0
- data/spec/spec_helper.rb +5 -29
- data/spec/stress/win32/security_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +0 -2
- data/spec/support/platform_helpers.rb +8 -15
- data/spec/support/shared/functional/directory_resource.rb +84 -22
- data/spec/support/shared/functional/file_resource.rb +169 -71
- data/spec/support/shared/functional/securable_resource.rb +143 -119
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
- data/spec/support/shared/unit/file_system_support.rb +110 -0
- data/spec/support/shared/unit/platform_introspector.rb +162 -0
- data/spec/unit/api_client/registration_spec.rb +175 -0
- data/spec/unit/api_client_spec.rb +78 -156
- data/spec/unit/application/apply.rb +84 -0
- data/spec/unit/application/client_spec.rb +1 -37
- data/spec/unit/application/knife_spec.rb +5 -0
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/checksum/storage/filesystem_spec.rb +1 -1
- data/spec/unit/chef_fs/diff_spec.rb +328 -0
- data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
- data/spec/unit/chef_fs/file_system_spec.rb +136 -0
- data/spec/unit/client_spec.rb +124 -33
- data/spec/unit/config_spec.rb +46 -13
- data/spec/unit/cookbook/synchronizer_spec.rb +1 -49
- data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
- data/spec/unit/cookbook_loader_spec.rb +153 -91
- data/spec/unit/cookbook_manifest_spec.rb +81 -81
- data/spec/unit/cookbook_spec.rb +3 -20
- data/spec/unit/cookbook_version_spec.rb +23 -122
- data/spec/unit/daemon_spec.rb +3 -24
- data/spec/unit/data_bag_spec.rb +6 -4
- data/spec/unit/digester_spec.rb +50 -0
- data/spec/unit/dsl/data_query_spec.rb +66 -0
- data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
- data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +50 -105
- data/spec/unit/environment_spec.rb +0 -130
- data/spec/unit/exceptions_spec.rb +2 -3
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
- data/spec/unit/json_compat_spec.rb +15 -7
- data/spec/unit/knife/bootstrap_spec.rb +2 -0
- data/spec/unit/knife/configure_spec.rb +20 -14
- data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
- data/spec/unit/knife/cookbook_test_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +43 -8
- data/spec/unit/knife/core/bootstrap_context_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +156 -125
- data/spec/unit/knife/data_bag_create_spec.rb +9 -0
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -4
- data/spec/unit/knife/data_bag_from_file_spec.rb +4 -6
- data/spec/unit/knife/data_bag_show_spec.rb +11 -4
- data/spec/unit/knife/index_rebuild_spec.rb +96 -33
- data/spec/unit/knife/knife_help.rb +7 -7
- data/spec/unit/knife/node_edit_spec.rb +6 -33
- data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
- data/spec/unit/knife/ssh_spec.rb +12 -15
- data/spec/unit/knife/status_spec.rb +2 -2
- data/spec/unit/knife_spec.rb +53 -0
- data/spec/unit/lwrp_spec.rb +59 -42
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/deep_merge_spec.rb +101 -799
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -37
- data/spec/unit/mixin/securable_spec.rb +5 -3
- data/spec/unit/mixin/template_spec.rb +119 -0
- data/spec/unit/node/attribute_spec.rb +195 -173
- data/spec/unit/node/immutable_collections_spec.rb +139 -0
- data/spec/unit/node_spec.rb +366 -370
- data/spec/unit/platform_spec.rb +9 -10
- data/spec/unit/provider/breakpoint_spec.rb +8 -8
- data/spec/unit/provider/cookbook_file_spec.rb +4 -8
- data/spec/unit/provider/directory_spec.rb +96 -64
- data/spec/unit/provider/env_spec.rb +2 -2
- data/spec/unit/provider/file_spec.rb +48 -39
- data/spec/unit/provider/group/dscl_spec.rb +0 -36
- data/spec/unit/provider/group/gpasswd_spec.rb +9 -16
- data/spec/unit/provider/group/groupadd_spec.rb +4 -3
- data/spec/unit/provider/group/groupmod_spec.rb +1 -0
- data/spec/unit/provider/group/pw_spec.rb +15 -12
- data/spec/unit/provider/group/usermod_spec.rb +6 -21
- data/spec/unit/provider/group/windows_spec.rb +8 -0
- data/spec/unit/provider/group_spec.rb +6 -28
- data/spec/unit/provider/http_request_spec.rb +28 -69
- data/spec/unit/provider/ifconfig_spec.rb +2 -2
- data/spec/unit/provider/ohai_spec.rb +4 -4
- data/spec/unit/provider/package/apt_spec.rb +0 -1
- data/spec/unit/provider/package/ips_spec.rb +0 -1
- data/spec/unit/provider/package/portage_spec.rb +0 -44
- data/spec/unit/provider/package/rpm_spec.rb +0 -12
- data/spec/unit/provider/package/rubygems_spec.rb +1 -44
- data/spec/unit/provider/package/yum_spec.rb +39 -36
- data/spec/unit/provider/package_spec.rb +7 -5
- data/spec/unit/provider/registry_key_spec.rb +269 -0
- data/spec/unit/provider/remote_directory_spec.rb +7 -3
- data/spec/unit/provider/remote_file_spec.rb +36 -0
- data/spec/unit/provider/route_spec.rb +4 -3
- data/spec/unit/provider/ruby_block_spec.rb +8 -0
- data/spec/unit/provider/service/arch_service_spec.rb +5 -5
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/freebsd_service_spec.rb +5 -5
- data/spec/unit/provider/service/init_service_spec.rb +27 -4
- data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
- data/spec/unit/provider/service/invokercd_service_spec.rb +4 -4
- data/spec/unit/provider/service/macosx_spec.rb +11 -66
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/simple_service_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +9 -9
- data/spec/unit/provider/subversion_spec.rb +1 -1
- data/spec/unit/provider/template_spec.rb +35 -11
- data/spec/unit/provider/user/dscl_spec.rb +285 -681
- data/spec/unit/provider/user/useradd_spec.rb +1 -22
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/recipe_spec.rb +10 -8
- data/spec/unit/registry_helper_spec.rb +374 -0
- data/spec/unit/resource/mount_spec.rb +0 -11
- data/spec/unit/resource/registry_key_spec.rb +171 -0
- data/spec/unit/resource/remote_file_spec.rb +21 -23
- data/spec/unit/resource/ruby_block_spec.rb +7 -3
- data/spec/unit/resource/service_spec.rb +11 -0
- data/spec/unit/resource_spec.rb +4 -19
- data/spec/unit/rest/auth_credentials_spec.rb +2 -19
- data/spec/unit/rest_spec.rb +130 -284
- data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
- data/spec/unit/run_context_spec.rb +18 -4
- data/spec/unit/run_list_spec.rb +0 -209
- data/spec/unit/run_lock_spec.rb +37 -0
- data/spec/unit/runner_spec.rb +101 -2
- data/spec/unit/scan_access_control_spec.rb +4 -4
- data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
- data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
- data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +14 -69
- data/spec/unit/shell_out_spec.rb +18 -0
- data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
- metadata +275 -234
- checksums.yaml +0 -15
- data/README.rdoc +0 -177
- data/distro/common/html/knife-recipe.1.html +0 -92
- data/lib/chef/certificate.rb +0 -161
- data/lib/chef/checksum.rb +0 -167
- data/lib/chef/checksum_cache.rb +0 -190
- data/lib/chef/cookbook_version_selector.rb +0 -168
- data/lib/chef/couchdb.rb +0 -246
- data/lib/chef/index_queue/amqp_client.rb +0 -116
- data/lib/chef/index_queue/consumer.rb +0 -76
- data/lib/chef/index_queue/indexable.rb +0 -109
- data/lib/chef/knife/bootstrap/ubuntu12.10-gems.erb +0 -60
- data/lib/chef/monkey_patches/moneta.rb +0 -50
- data/lib/chef/monkey_patches/uri.rb +0 -70
- data/lib/chef/openid_registration.rb +0 -187
- data/lib/chef/provider/user/solaris.rb +0 -90
- data/lib/chef/solr_query.rb +0 -187
- data/lib/chef/solr_query/lucene.treetop +0 -150
- data/lib/chef/solr_query/lucene_nodes.rb +0 -285
- data/lib/chef/solr_query/query_transform.rb +0 -65
- data/lib/chef/solr_query/solr_http_request.rb +0 -132
- data/lib/chef/webui_user.rb +0 -231
- data/spec/data/cookbooks/openldap/files/default/.dotfile +0 -1
- data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +0 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +0 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +0 -1
- data/spec/data/mac_users/10.7-8.plist.xml +0 -559
- data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
- data/spec/data/mac_users/10.7.plist.xml +0 -559
- data/spec/data/mac_users/10.7.shadow.xml +0 -11
- data/spec/data/mac_users/10.8.plist.xml +0 -559
- data/spec/data/mac_users/10.8.shadow.xml +0 -21
- data/spec/data/mac_users/10.9.plist.xml +0 -560
- data/spec/data/mac_users/10.9.shadow.xml +0 -21
- data/spec/functional/resource/base.rb +0 -40
- data/spec/functional/resource/group_spec.rb +0 -343
- data/spec/functional/resource/user/dscl_spec.rb +0 -199
- data/spec/unit/certificate_spec.rb +0 -76
- data/spec/unit/checksum_cache_spec.rb +0 -209
- data/spec/unit/checksum_spec.rb +0 -94
- data/spec/unit/couchdb_spec.rb +0 -274
- data/spec/unit/index_queue_spec.rb +0 -391
- data/spec/unit/mixin/language_spec.rb +0 -305
- data/spec/unit/openid_registration_spec.rb +0 -153
- data/spec/unit/provider/user/solaris_spec.rb +0 -414
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +0 -47
- data/spec/unit/solr_query/query_transform_spec.rb +0 -454
- data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
- data/spec/unit/solr_query_spec.rb +0 -203
- data/spec/unit/webui_user_spec.rb +0 -238
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
8
8
|
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
9
|
+
#
|
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
11
|
+
#
|
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@@ -21,7 +21,7 @@ require 'spec_helper'
|
|
|
21
21
|
describe Chef::Knife::Help do
|
|
22
22
|
before(:each) do
|
|
23
23
|
# Perilously use the build in list even though it is dynamic so we don't get warnings about the constant
|
|
24
|
-
# HELP_TOPICS = [ "foo", "bar", "knife-kittens", "ceiling-cat", "
|
|
24
|
+
# HELP_TOPICS = [ "foo", "bar", "knife-kittens", "ceiling-cat", "shell" ]
|
|
25
25
|
@knife = Chef::Knife::Help.new
|
|
26
26
|
end
|
|
27
27
|
|
|
@@ -30,8 +30,8 @@ describe Chef::Knife::Help do
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "should run man for you" do
|
|
33
|
-
@knife.name_args = [ "
|
|
34
|
-
@knife.should_receive(:exec).with(/^man \/.*\/
|
|
33
|
+
@knife.name_args = [ "shell" ]
|
|
34
|
+
@knife.should_receive(:exec).with(/^man \/.*\/shell.1$/)
|
|
35
35
|
@knife.run
|
|
36
36
|
end
|
|
37
37
|
|
|
@@ -47,9 +47,9 @@ describe Chef::Knife::Help do
|
|
|
47
47
|
|
|
48
48
|
describe "find_manpage_path" do
|
|
49
49
|
it "should find the man page in the gem" do
|
|
50
|
-
@knife.find_manpage_path("
|
|
50
|
+
@knife.find_manpage_path("shell").should =~ /distro\/common\/man\/man1\/chef-shell.1$/
|
|
51
51
|
end
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
it "should provide the man page name if not in the gem" do
|
|
54
54
|
@knife.find_manpage_path("foo").should == "foo"
|
|
55
55
|
end
|
|
@@ -20,12 +20,6 @@ require 'spec_helper'
|
|
|
20
20
|
Chef::Knife::NodeEdit.load_deps
|
|
21
21
|
|
|
22
22
|
describe Chef::Knife::NodeEdit do
|
|
23
|
-
|
|
24
|
-
# helper to convert the view from Chef objects into Ruby objects representing JSON
|
|
25
|
-
def deserialized_json_view
|
|
26
|
-
actual = Chef::JSONCompat.from_json(Chef::JSONCompat.to_json_pretty(@knife.node_editor.send(:view)))
|
|
27
|
-
end
|
|
28
|
-
|
|
29
23
|
before(:each) do
|
|
30
24
|
Chef::Config[:node_name] = "webmonkey.example.com"
|
|
31
25
|
@knife = Chef::Knife::NodeEdit.new
|
|
@@ -55,7 +49,7 @@ describe Chef::Knife::NodeEdit do
|
|
|
55
49
|
end
|
|
56
50
|
|
|
57
51
|
it "creates a view of the node without attributes from roles or ohai" do
|
|
58
|
-
actual =
|
|
52
|
+
actual = Chef::JSONCompat.from_json(@knife.node_editor.view)
|
|
59
53
|
actual.should_not have_key("automatic")
|
|
60
54
|
actual.should_not have_key("override")
|
|
61
55
|
actual.should_not have_key("default")
|
|
@@ -67,7 +61,7 @@ describe Chef::Knife::NodeEdit do
|
|
|
67
61
|
it "shows the extra attributes when given the --all option" do
|
|
68
62
|
@knife.config[:all_attributes] = true
|
|
69
63
|
|
|
70
|
-
actual =
|
|
64
|
+
actual = Chef::JSONCompat.from_json(@knife.node_editor.view)
|
|
71
65
|
actual["automatic"].should == {"go" => "away"}
|
|
72
66
|
actual["override"].should == {"dont" => "show"}
|
|
73
67
|
actual["default"].should == {"hide" => "me"}
|
|
@@ -77,39 +71,18 @@ describe Chef::Knife::NodeEdit do
|
|
|
77
71
|
end
|
|
78
72
|
|
|
79
73
|
it "does not consider unedited data updated" do
|
|
80
|
-
view =
|
|
81
|
-
@knife.node_editor.
|
|
74
|
+
view = Chef::JSONCompat.from_json( @knife.node_editor.view )
|
|
75
|
+
@knife.node_editor.apply_updates(view)
|
|
82
76
|
@knife.node_editor.should_not be_updated
|
|
83
77
|
end
|
|
84
78
|
|
|
85
79
|
it "considers edited data updated" do
|
|
86
|
-
view =
|
|
80
|
+
view = Chef::JSONCompat.from_json( @knife.node_editor.view )
|
|
87
81
|
view["run_list"] << "role[fuuu]"
|
|
88
|
-
@knife.node_editor.
|
|
82
|
+
@knife.node_editor.apply_updates(view)
|
|
89
83
|
@knife.node_editor.should be_updated
|
|
90
84
|
end
|
|
91
85
|
|
|
92
86
|
end
|
|
93
|
-
|
|
94
|
-
describe "edit_node" do
|
|
95
|
-
|
|
96
|
-
before do
|
|
97
|
-
@knife.stub!(:node).and_return(@node)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
let(:subject) { @knife.node_editor.edit_node }
|
|
101
|
-
|
|
102
|
-
it "raises an exception when editing is disabled" do
|
|
103
|
-
@knife.config[:disable_editing] = true
|
|
104
|
-
expect{ subject }.to raise_error(SystemExit)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
it "raises an exception when the editor is not set" do
|
|
108
|
-
@knife.config[:editor] = nil
|
|
109
|
-
expect{ subject }.to raise_error(SystemExit)
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
end
|
|
113
|
-
|
|
114
87
|
end
|
|
115
88
|
|
|
@@ -25,6 +25,7 @@ describe Chef::Knife::NodeRunListRemove do
|
|
|
25
25
|
@knife.config[:print_after] = nil
|
|
26
26
|
@knife.name_args = [ "adam", "role[monkey]" ]
|
|
27
27
|
@node = Chef::Node.new()
|
|
28
|
+
@node.name("knifetest-node")
|
|
28
29
|
@node.run_list << "role[monkey]"
|
|
29
30
|
@node.stub!(:save).and_return(true)
|
|
30
31
|
|
|
@@ -52,7 +53,7 @@ describe Chef::Knife::NodeRunListRemove do
|
|
|
52
53
|
|
|
53
54
|
it "should print the run list" do
|
|
54
55
|
@knife.config[:print_after] = true
|
|
55
|
-
@knife.ui.should_receive(:output).with({ 'run_list' => [] })
|
|
56
|
+
@knife.ui.should_receive(:output).with({ "knifetest-node" => { 'run_list' => [] } })
|
|
56
57
|
@knife.run
|
|
57
58
|
end
|
|
58
59
|
|
data/spec/unit/knife/ssh_spec.rb
CHANGED
|
@@ -34,14 +34,14 @@ describe Chef::Knife::Ssh do
|
|
|
34
34
|
|
|
35
35
|
before do
|
|
36
36
|
@knife = Chef::Knife::Ssh.new
|
|
37
|
-
@knife.
|
|
37
|
+
@knife.merge_configs
|
|
38
38
|
@knife.config[:attribute] = "fqdn"
|
|
39
|
-
@node_foo = Chef::Node.new
|
|
40
|
-
@node_foo[:fqdn] = "foo.example.org"
|
|
41
|
-
@node_foo[:ipaddress] = "10.0.0.1"
|
|
42
|
-
@node_bar = Chef::Node.new
|
|
43
|
-
@node_bar[:fqdn] = "bar.example.org"
|
|
44
|
-
@node_bar[:ipaddress] = "10.0.0.2"
|
|
39
|
+
@node_foo = Chef::Node.new
|
|
40
|
+
@node_foo.automatic_attrs[:fqdn] = "foo.example.org"
|
|
41
|
+
@node_foo.automatic_attrs[:ipaddress] = "10.0.0.1"
|
|
42
|
+
@node_bar = Chef::Node.new
|
|
43
|
+
@node_bar.automatic_attrs[:fqdn] = "bar.example.org"
|
|
44
|
+
@node_bar.automatic_attrs[:ipaddress] = "10.0.0.2"
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
describe "#configure_session" do
|
|
@@ -64,7 +64,7 @@ describe Chef::Knife::Ssh do
|
|
|
64
64
|
@knife.should_receive(:session_from_list).with(['10.0.0.1', '10.0.0.2'])
|
|
65
65
|
@knife.configure_session
|
|
66
66
|
end
|
|
67
|
-
|
|
67
|
+
|
|
68
68
|
it "returns an array of the attributes specified on the command line even when a config value is set" do
|
|
69
69
|
@knife.config[:attribute] = "config_file" # this value will be the config file
|
|
70
70
|
@knife.config[:override_attribute] = "ipaddress" # this is the value of the command line via #configure_attribute
|
|
@@ -84,10 +84,8 @@ describe Chef::Knife::Ssh do
|
|
|
84
84
|
|
|
85
85
|
context "when cloud hostnames are available" do
|
|
86
86
|
before do
|
|
87
|
-
@node_foo[:cloud] =
|
|
88
|
-
@node_bar[:cloud] =
|
|
89
|
-
@node_foo[:cloud][:public_hostname] = "ec2-10-0-0-1.compute-1.amazonaws.com"
|
|
90
|
-
@node_bar[:cloud][:public_hostname] = "ec2-10-0-0-2.compute-1.amazonaws.com"
|
|
87
|
+
@node_foo.automatic_attrs[:cloud][:public_hostname] = "ec2-10-0-0-1.compute-1.amazonaws.com"
|
|
88
|
+
@node_bar.automatic_attrs[:cloud][:public_hostname] = "ec2-10-0-0-2.compute-1.amazonaws.com"
|
|
91
89
|
end
|
|
92
90
|
|
|
93
91
|
it "returns an array of cloud public hostnames" do
|
|
@@ -109,8 +107,8 @@ describe Chef::Knife::Ssh do
|
|
|
109
107
|
context "when there are some hosts found but they do not have an attribute to connect with" do
|
|
110
108
|
before do
|
|
111
109
|
@query.stub!(:search).and_return([[@node_foo, @node_bar]])
|
|
112
|
-
@node_foo[:fqdn] = nil
|
|
113
|
-
@node_bar[:fqdn] = nil
|
|
110
|
+
@node_foo.automatic_attrs[:fqdn] = nil
|
|
111
|
+
@node_bar.automatic_attrs[:fqdn] = nil
|
|
114
112
|
Chef::Search::Query.stub!(:new).and_return(@query)
|
|
115
113
|
end
|
|
116
114
|
|
|
@@ -269,7 +267,6 @@ describe Chef::Knife::Ssh do
|
|
|
269
267
|
Chef::Search::Query.stub!(:new).and_return(@query)
|
|
270
268
|
@knife.stub(:ssh_command).and_return(exit_code)
|
|
271
269
|
@knife.name_args = ['*:*', 'false']
|
|
272
|
-
@knife.config[:manual] = false
|
|
273
270
|
end
|
|
274
271
|
|
|
275
272
|
context "with an error" do
|
|
@@ -22,8 +22,8 @@ require 'highline'
|
|
|
22
22
|
describe Chef::Knife::Status do
|
|
23
23
|
before(:each) do
|
|
24
24
|
node = Chef::Node.new.tap do |n|
|
|
25
|
-
n["fqdn"] = "foobar"
|
|
26
|
-
n["ohai_time"] = 1343845969
|
|
25
|
+
n.automatic_attrs["fqdn"] = "foobar"
|
|
26
|
+
n.automatic_attrs["ohai_time"] = 1343845969
|
|
27
27
|
end
|
|
28
28
|
query = mock("Chef::Search::Query")
|
|
29
29
|
query.stub!(:search).and_yield(node)
|
data/spec/unit/knife_spec.rb
CHANGED
|
@@ -40,6 +40,29 @@ describe Chef::Knife do
|
|
|
40
40
|
@stdout = StringIO.new
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
+
describe "selecting a config file" do
|
|
44
|
+
context "when the current working dir is inside a symlinked directory" do
|
|
45
|
+
before do
|
|
46
|
+
Chef::Knife.reset_config_path!
|
|
47
|
+
# pwd according to your shell is /home/someuser/prod/chef-repo, but
|
|
48
|
+
# chef-repo is a symlink to /home/someuser/codes/chef-repo
|
|
49
|
+
ENV.stub!(:[]).with("PWD").and_return("/home/someuser/prod/chef-repo")
|
|
50
|
+
Dir.stub!(:pwd).and_return("/home/someuser/codes/chef-repo")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
after do
|
|
54
|
+
Chef::Knife.reset_config_path!
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "loads the config from the non-dereferenced directory path" do
|
|
58
|
+
File.should_receive(:exist?).with("/home/someuser/prod/chef-repo/.chef").and_return(false)
|
|
59
|
+
File.should_receive(:exist?).with("/home/someuser/prod/.chef").and_return(true)
|
|
60
|
+
File.should_receive(:directory?).with("/home/someuser/prod/.chef").and_return(true)
|
|
61
|
+
Chef::Knife.chef_config_dir.should == "/home/someuser/prod/.chef"
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
43
66
|
describe "after loading a subcommand" do
|
|
44
67
|
before do
|
|
45
68
|
Chef::Knife.reset_subcommands!
|
|
@@ -157,6 +180,36 @@ describe Chef::Knife do
|
|
|
157
180
|
lambda {Chef::Knife.run(%w{fuuu uuuu fuuuu})}.should raise_error(SystemExit) { |e| e.status.should_not == 0 }
|
|
158
181
|
end
|
|
159
182
|
|
|
183
|
+
describe "merging configuration options" do
|
|
184
|
+
before do
|
|
185
|
+
KnifeSpecs::TestYourself.option(:opt_with_default,
|
|
186
|
+
:short => "-D VALUE",
|
|
187
|
+
:default => "default-value")
|
|
188
|
+
Chef::Config[:knife] = {}
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
it "prefers the default value if no config or command line value is present" do
|
|
192
|
+
knife_command = KnifeSpecs::TestYourself.new([]) #empty argv
|
|
193
|
+
knife_command.configure_chef
|
|
194
|
+
knife_command.config[:opt_with_default].should == "default-value"
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it "prefers a value in Chef::Config[:knife] to the default" do
|
|
198
|
+
Chef::Config[:knife][:opt_with_default] = "from-knife-config"
|
|
199
|
+
knife_command = KnifeSpecs::TestYourself.new([]) #empty argv
|
|
200
|
+
knife_command.configure_chef
|
|
201
|
+
knife_command.config[:opt_with_default].should == "from-knife-config"
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
it "prefers a value from command line over Chef::Config and the default" do
|
|
205
|
+
Chef::Config[:knife][:opt_with_default] = "from-knife-config"
|
|
206
|
+
knife_command = KnifeSpecs::TestYourself.new(["-D", "from-cli"])
|
|
207
|
+
knife_command.configure_chef
|
|
208
|
+
knife_command.config[:opt_with_default].should == "from-cli"
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
|
|
160
213
|
end
|
|
161
214
|
|
|
162
215
|
describe "when first created" do
|
data/spec/unit/lwrp_spec.rb
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
8
8
|
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
9
|
+
#
|
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
11
|
+
#
|
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@@ -18,9 +18,6 @@
|
|
|
18
18
|
|
|
19
19
|
require 'spec_helper'
|
|
20
20
|
|
|
21
|
-
module LwrpConstScopingConflict
|
|
22
|
-
end
|
|
23
|
-
|
|
24
21
|
describe "override logging" do
|
|
25
22
|
before :each do
|
|
26
23
|
$stderr.stub!(:write)
|
|
@@ -28,48 +25,26 @@ describe "override logging" do
|
|
|
28
25
|
|
|
29
26
|
it "should log if attempting to load resource of same name" do
|
|
30
27
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "resources", "*"))].each do |file|
|
|
31
|
-
Chef::Resource.build_from_file("lwrp", file, nil)
|
|
28
|
+
Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
|
|
32
29
|
end
|
|
33
30
|
|
|
34
31
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "resources", "*"))].each do |file|
|
|
35
32
|
Chef::Log.should_receive(:info).with(/overriding/)
|
|
36
|
-
Chef::Resource.build_from_file("lwrp", file, nil)
|
|
33
|
+
Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
|
|
37
34
|
end
|
|
38
35
|
end
|
|
39
36
|
|
|
40
37
|
it "should log if attempting to load provider of same name" do
|
|
41
38
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "providers", "*"))].each do |file|
|
|
42
|
-
Chef::Provider.build_from_file("lwrp", file, nil)
|
|
39
|
+
Chef::Provider::LWRPBase.build_from_file("lwrp", file, nil)
|
|
43
40
|
end
|
|
44
41
|
|
|
45
42
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "providers", "*"))].each do |file|
|
|
46
43
|
Chef::Log.should_receive(:info).with(/overriding/)
|
|
47
|
-
Chef::Provider.build_from_file("lwrp", file, nil)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
it "removes the old LRWP resource class from the list of resource subclasses [CHEF-3432]" do
|
|
52
|
-
# CHEF-3432 regression test:
|
|
53
|
-
# Chef::Resource keeps a list of all subclasses to assist class inflation
|
|
54
|
-
# for json parsing (see Chef::JSONCompat). When replacing LWRP resources,
|
|
55
|
-
# we need to ensure the old resource class is remove from that list.
|
|
56
|
-
Dir[File.expand_path( "lwrp/resources/*", CHEF_SPEC_DATA)].each do |file|
|
|
57
|
-
Chef::Resource.build_from_file("lwrp", file, nil)
|
|
58
|
-
end
|
|
59
|
-
first_lwr_foo_class = Chef::Resource::LwrpFoo
|
|
60
|
-
Chef::Resource.resource_classes.should include(first_lwr_foo_class)
|
|
61
|
-
Dir[File.expand_path( "lwrp/resources/*", CHEF_SPEC_DATA)].each do |file|
|
|
62
|
-
Chef::Resource.build_from_file("lwrp", file, nil)
|
|
44
|
+
Chef::Provider::LWRPBase.build_from_file("lwrp", file, nil)
|
|
63
45
|
end
|
|
64
|
-
Chef::Resource.resource_classes.should_not include(first_lwr_foo_class)
|
|
65
46
|
end
|
|
66
47
|
|
|
67
|
-
it "does not attempt to remove classes from higher up namespaces [CHEF-4117]" do
|
|
68
|
-
conflicting_lwrp_file = File.expand_path( "lwrp_const_scoping/resources/conflict.rb", CHEF_SPEC_DATA)
|
|
69
|
-
# The test is that this should not raise an error:
|
|
70
|
-
Chef::Resource.build_from_file("lwrp_const_scoping", conflicting_lwrp_file, nil)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
48
|
end
|
|
74
49
|
|
|
75
50
|
describe "LWRP" do
|
|
@@ -86,11 +61,11 @@ describe "LWRP" do
|
|
|
86
61
|
|
|
87
62
|
before do
|
|
88
63
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "resources", "*"))].each do |file|
|
|
89
|
-
Chef::Resource.build_from_file("lwrp", file, nil)
|
|
64
|
+
Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
|
|
90
65
|
end
|
|
91
66
|
|
|
92
67
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "resources", "*"))].each do |file|
|
|
93
|
-
Chef::Resource.build_from_file("lwrp", file, nil)
|
|
68
|
+
Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
|
|
94
69
|
end
|
|
95
70
|
end
|
|
96
71
|
|
|
@@ -119,12 +94,12 @@ describe "LWRP" do
|
|
|
119
94
|
end
|
|
120
95
|
|
|
121
96
|
it "should have access to the run context and node during class definition" do
|
|
122
|
-
node = Chef::Node.new
|
|
123
|
-
node[:penguin_name] = "jackass"
|
|
97
|
+
node = Chef::Node.new
|
|
98
|
+
node.normal[:penguin_name] = "jackass"
|
|
124
99
|
run_context = Chef::RunContext.new(node, Chef::CookbookCollection.new, @events)
|
|
125
100
|
|
|
126
101
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "resources_with_default_attributes", "*"))].each do |file|
|
|
127
|
-
Chef::Resource.build_from_file("lwrp", file, run_context)
|
|
102
|
+
Chef::Resource::LWRPBase.build_from_file("lwrp", file, run_context)
|
|
128
103
|
end
|
|
129
104
|
|
|
130
105
|
cls = Chef::Resource.const_get("LwrpNodeattr")
|
|
@@ -138,8 +113,8 @@ describe "LWRP" do
|
|
|
138
113
|
describe "Lightweight Chef::Provider" do
|
|
139
114
|
before do
|
|
140
115
|
@node = Chef::Node.new
|
|
141
|
-
@node.platform
|
|
142
|
-
@node.platform_version
|
|
116
|
+
@node.automatic[:platform] = :ubuntu
|
|
117
|
+
@node.automatic[:platform_version] = '8.10'
|
|
143
118
|
@events = Chef::EventDispatch::Dispatcher.new
|
|
144
119
|
@run_context = Chef::RunContext.new(@node, Chef::CookbookCollection.new({}), @events)
|
|
145
120
|
@runner = Chef::Runner.new(@run_context)
|
|
@@ -147,19 +122,19 @@ describe "LWRP" do
|
|
|
147
122
|
|
|
148
123
|
before(:each) do
|
|
149
124
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "resources", "*"))].each do |file|
|
|
150
|
-
Chef::Resource.build_from_file("lwrp", file, @run_context)
|
|
125
|
+
Chef::Resource::LWRPBase.build_from_file("lwrp", file, @run_context)
|
|
151
126
|
end
|
|
152
127
|
|
|
153
128
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "resources", "*"))].each do |file|
|
|
154
|
-
Chef::Resource.build_from_file("lwrp", file, @run_context)
|
|
129
|
+
Chef::Resource::LWRPBase.build_from_file("lwrp", file, @run_context)
|
|
155
130
|
end
|
|
156
131
|
|
|
157
132
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "providers", "*"))].each do |file|
|
|
158
|
-
Chef::Provider.build_from_file("lwrp", file, @run_context)
|
|
133
|
+
Chef::Provider::LWRPBase.build_from_file("lwrp", file, @run_context)
|
|
159
134
|
end
|
|
160
135
|
|
|
161
136
|
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "providers", "*"))].each do |file|
|
|
162
|
-
Chef::Provider.build_from_file("lwrp", file, @run_context)
|
|
137
|
+
Chef::Provider::LWRPBase.build_from_file("lwrp", file, @run_context)
|
|
163
138
|
end
|
|
164
139
|
|
|
165
140
|
end
|
|
@@ -251,6 +226,48 @@ describe "LWRP" do
|
|
|
251
226
|
provider.enclosed_resource.monkey.should == 'bob, the monkey'
|
|
252
227
|
end
|
|
253
228
|
|
|
229
|
+
describe "when using inline compilation" do
|
|
230
|
+
before do
|
|
231
|
+
# Behavior in these examples depends on implementation of fixture provider.
|
|
232
|
+
# See spec/data/lwrp/providers/inline_compiler
|
|
233
|
+
|
|
234
|
+
# Side effect of lwrp_inline_compiler provider for testing notifications.
|
|
235
|
+
$interior_ruby_block_2 = nil
|
|
236
|
+
# resource type doesn't matter, so make an existing resource type work with provider.
|
|
237
|
+
@resource = Chef::Resource::LwrpFoo.new("morpheus", @run_context)
|
|
238
|
+
@resource.allowed_actions << :test
|
|
239
|
+
@resource.action(:test)
|
|
240
|
+
@resource.provider(:lwrp_inline_compiler)
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
it "does not add interior resources to the exterior resource collection" do
|
|
244
|
+
@resource.run_action(:test)
|
|
245
|
+
@run_context.resource_collection.should be_empty
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
context "when interior resources are updated" do
|
|
249
|
+
it "processes notifications within the LWRP provider's action" do
|
|
250
|
+
@resource.run_action(:test)
|
|
251
|
+
$interior_ruby_block_2.should == "executed"
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
it "marks the parent resource updated" do
|
|
255
|
+
@resource.run_action(:test)
|
|
256
|
+
@resource.should be_updated
|
|
257
|
+
@resource.should be_updated_by_last_action
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
context "when interior resources are not updated" do
|
|
262
|
+
it "does not mark the parent resource updated" do
|
|
263
|
+
@resource.run_action(:no_updates)
|
|
264
|
+
@resource.should_not be_updated
|
|
265
|
+
@resource.should_not be_updated_by_last_action
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
end
|
|
270
|
+
|
|
254
271
|
end
|
|
255
272
|
|
|
256
273
|
end
|