chef 11.4.4 → 11.6.0.hotfix.1
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/README.md +1 -1
- data/Rakefile +18 -1
- data/bin/chef-service-manager +37 -0
- 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/chef-shell.1.html +4 -4
- data/distro/common/html/chef-solo.8.html +12 -18
- 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 +7 -10
- data/distro/common/html/knife-data-bag.1.html +7 -10
- data/distro/common/html/knife-environment.1.html +6 -8
- data/distro/common/html/knife-exec.1.html +4 -4
- 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 +4 -4
- data/distro/common/man/man1/chef-shell.1 +1 -1
- 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 +2 -15
- data/distro/common/man/man1/knife-data-bag.1 +2 -15
- data/distro/common/man/man1/knife-environment.1 +2 -12
- data/distro/common/man/man1/knife-exec.1 +1 -1
- 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 +1 -1
- 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 +4 -36
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/debian/etc/init.d/chef-client +4 -2
- data/distro/windows/service_manager.rb +2 -146
- data/lib/chef.rb +1 -1
- data/lib/chef/application.rb +5 -12
- data/lib/chef/application/apply.rb +2 -0
- data/lib/chef/application/client.rb +12 -12
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +4 -5
- data/lib/chef/application/windows_service.rb +113 -56
- data/lib/chef/application/windows_service_manager.rb +179 -0
- data/lib/chef/chef_fs.rb +2 -4
- data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
- data/lib/chef/chef_fs/command_line.rb +145 -93
- data/lib/chef/chef_fs/config.rb +205 -0
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -0
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +29 -0
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +56 -0
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +128 -0
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +51 -0
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -0
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +27 -0
- data/lib/chef/chef_fs/file_system.rb +195 -127
- data/lib/chef/chef_fs/file_system/acl_dir.rb +64 -0
- data/lib/chef/chef_fs/file_system/acl_entry.rb +58 -0
- data/lib/chef/chef_fs/file_system/acls_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/already_exists_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +98 -39
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +85 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +71 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +55 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_data_bags_dir.rb +36 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +14 -63
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +93 -3
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +35 -9
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +67 -32
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +13 -6
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +102 -21
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +12 -21
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +14 -8
- data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +36 -0
- data/lib/chef/chef_fs/file_system/environments_dir.rb +60 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/file_system_error.rb +3 -1
- data/lib/chef/chef_fs/file_system/memory_dir.rb +52 -0
- data/lib/chef/chef_fs/file_system/memory_file.rb +17 -0
- data/lib/chef/chef_fs/file_system/memory_root.rb +21 -0
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +48 -0
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +17 -9
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
- data/lib/chef/chef_fs/file_system/not_found_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/operation_failed_error.rb +34 -0
- data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +48 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +42 -13
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +81 -27
- data/lib/chef/chef_fs/knife.rb +68 -29
- data/lib/chef/chef_fs/parallelizer.rb +129 -0
- data/lib/chef/chef_fs/path_utils.rb +29 -3
- data/lib/chef/chef_fs/raw_request.rb +79 -0
- data/lib/chef/client.rb +46 -20
- data/lib/chef/config.rb +59 -61
- data/lib/chef/cookbook/chefignore.rb +2 -1
- data/lib/chef/cookbook/synchronizer.rb +8 -6
- data/lib/chef/cookbook/syntax_check.rb +17 -2
- data/lib/chef/cookbook_uploader.rb +10 -1
- data/lib/chef/cookbook_version.rb +0 -109
- data/lib/chef/data_bag.rb +15 -6
- data/lib/chef/deprecation/mixin/template.rb +49 -0
- data/lib/chef/deprecation/provider/cookbook_file.rb +55 -0
- data/lib/chef/deprecation/provider/file.rb +197 -0
- data/lib/chef/deprecation/provider/remote_file.rb +86 -0
- data/lib/chef/deprecation/provider/template.rb +63 -0
- data/lib/chef/deprecation/warnings.rb +38 -0
- data/lib/chef/encrypted_data_bag_item.rb +153 -61
- data/lib/chef/environment.rb +34 -3
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +27 -2
- data/lib/chef/file_access_control/unix.rb +64 -7
- data/lib/chef/file_access_control/windows.rb +22 -11
- data/lib/chef/file_content_management/content_base.rb +56 -0
- data/lib/chef/file_content_management/deploy.rb +38 -0
- data/lib/chef/file_content_management/deploy/cp.rb +48 -0
- data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -0
- data/lib/chef/file_content_management/deploy/mv_windows.rb +95 -0
- data/lib/chef/file_content_management/tempfile.rb +61 -0
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/error_descriptor.rb +5 -4
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +23 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +4 -0
- data/lib/chef/json_compat.rb +3 -0
- data/lib/chef/knife.rb +12 -3
- data/lib/chef/knife/bootstrap.rb +46 -2
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/centos5-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/chef-full.erb +4 -4
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +3 -3
- data/lib/chef/knife/client_show.rb +2 -5
- data/lib/chef/knife/configure.rb +3 -3
- data/lib/chef/knife/cookbook_create.rb +6 -5
- data/lib/chef/knife/cookbook_download.rb +13 -5
- data/lib/chef/knife/cookbook_site_share.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +1 -0
- data/lib/chef/knife/cookbook_upload.rb +4 -9
- data/lib/chef/knife/core/bootstrap_context.rb +10 -4
- data/lib/chef/knife/core/generic_presenter.rb +16 -0
- data/lib/chef/knife/core/node_editor.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +43 -12
- data/lib/chef/knife/core/ui.rb +19 -4
- data/lib/chef/knife/delete.rb +76 -9
- data/lib/chef/knife/deps.rb +139 -0
- data/lib/chef/knife/diff.rb +22 -5
- data/lib/chef/knife/download.rb +16 -3
- data/lib/chef/knife/edit.rb +76 -0
- data/lib/chef/knife/environment_show.rb +2 -7
- data/lib/chef/knife/list.rb +91 -47
- data/lib/chef/knife/node_run_list_set.rb +66 -0
- data/lib/chef/knife/node_show.rb +1 -7
- data/lib/chef/knife/raw.rb +20 -64
- data/lib/chef/knife/role_show.rb +2 -4
- data/lib/chef/knife/search.rb +5 -6
- data/lib/chef/knife/show.rb +34 -11
- data/lib/chef/knife/ssh.rb +8 -0
- data/lib/chef/knife/upload.rb +23 -4
- data/lib/chef/knife/user_show.rb +2 -5
- data/lib/chef/knife/xargs.rb +265 -0
- data/lib/chef/log.rb +2 -2
- data/lib/chef/mixin/file_class.rb +0 -9
- data/lib/chef/mixin/language_include_recipe.rb +1 -1
- data/lib/chef/mixin/params_validate.rb +19 -9
- data/lib/chef/mixin/template.rb +126 -36
- data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
- data/lib/chef/monkey_patches/file.rb +26 -0
- data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
- data/lib/chef/monkey_patches/securerandom.rb +44 -0
- data/lib/chef/monologger.rb +93 -0
- data/lib/chef/node.rb +4 -0
- data/lib/chef/platform.rb +4 -490
- data/lib/chef/platform/provider_mapping.rb +529 -0
- data/lib/chef/{monkey_patches/dir.rb → platform/query_helpers.rb} +25 -19
- data/lib/chef/provider.rb +12 -9
- data/lib/chef/provider/batch.rb +35 -0
- data/lib/chef/provider/cookbook_file.rb +9 -78
- data/lib/chef/provider/cookbook_file/content.rb +49 -0
- data/lib/chef/provider/deploy.rb +24 -20
- data/lib/chef/provider/deploy/revision.rb +27 -0
- data/lib/chef/provider/directory.rb +19 -22
- data/lib/chef/provider/execute.rb +22 -5
- data/lib/chef/provider/file.rb +299 -217
- data/lib/chef/provider/file/content.rb +39 -0
- data/lib/chef/provider/git.rb +76 -43
- data/lib/chef/provider/group/usermod.rb +2 -2
- data/lib/chef/provider/ifconfig.rb +25 -35
- data/lib/chef/provider/ifconfig/debian.rb +71 -0
- data/lib/chef/provider/ifconfig/redhat.rb +47 -0
- data/lib/chef/provider/link.rb +10 -3
- data/lib/chef/provider/mount.rb +1 -1
- data/lib/chef/provider/mount/mount.rb +8 -3
- data/lib/chef/provider/mount/windows.rb +4 -1
- data/lib/chef/provider/package/portage.rb +9 -4
- data/lib/chef/provider/package/rubygems.rb +45 -10
- data/lib/chef/provider/package/smartos.rb +47 -36
- data/lib/chef/provider/package/yum.rb +19 -12
- data/lib/chef/provider/package/zypper.rb +45 -55
- data/lib/chef/provider/powershell_script.rb +77 -0
- data/lib/chef/provider/remote_directory.rb +5 -6
- data/lib/chef/provider/remote_file.rb +12 -108
- data/lib/chef/provider/remote_file/cache_control_data.rb +165 -0
- data/lib/chef/provider/remote_file/content.rb +75 -0
- data/lib/chef/provider/remote_file/fetcher.rb +43 -0
- data/lib/chef/provider/remote_file/ftp.rb +183 -0
- data/lib/chef/provider/remote_file/http.rb +124 -0
- data/lib/chef/provider/remote_file/local_file.rb +47 -0
- data/lib/chef/provider/route.rb +6 -2
- data/lib/chef/provider/script.rb +14 -2
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/solaris.rb +6 -5
- data/lib/chef/provider/template.rb +16 -78
- data/lib/chef/provider/template/content.rb +61 -0
- data/lib/chef/provider/user/solaris.rb +90 -0
- data/lib/chef/provider/user/useradd.rb +76 -63
- data/lib/chef/provider/windows_script.rb +73 -0
- data/lib/chef/providers.rb +16 -0
- data/lib/chef/resource.rb +23 -2
- data/lib/chef/resource/batch.rb +31 -0
- data/lib/chef/resource/conditional.rb +4 -0
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -0
- data/lib/chef/resource/file.rb +31 -3
- data/lib/chef/resource/link.rb +17 -0
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/mount.rb +29 -2
- data/lib/chef/resource/powershell_script.rb +31 -0
- data/lib/chef/resource/remote_file.rb +47 -1
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/template.rb +145 -0
- data/lib/chef/resource/windows_script.rb +62 -0
- data/lib/chef/resource_collection.rb +45 -11
- data/lib/chef/resource_reporter.rb +81 -52
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/rest.rb +13 -4
- data/lib/chef/rest/rest_request.rb +5 -1
- data/lib/chef/run_context/cookbook_compiler.rb +3 -3
- data/lib/chef/run_list/run_list_expansion.rb +1 -1
- data/lib/chef/run_lock.rb +7 -1
- data/lib/chef/runner.rb +0 -1
- data/lib/chef/scan_access_control.rb +6 -1
- data/lib/chef/search/query.rb +2 -2
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/util/backup.rb +84 -0
- data/lib/chef/util/diff.rb +145 -0
- data/lib/chef/util/file_edit.rb +1 -1
- data/lib/chef/util/selinux.rb +100 -0
- data/lib/chef/util/windows/net_user.rb +14 -1
- data/lib/chef/util/windows/volume.rb +2 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version/platform.rb +42 -0
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/version_constraint.rb +6 -5
- data/lib/chef/version_constraint/platform.rb +26 -0
- data/lib/chef/win32/api/file.rb +8 -2
- data/lib/chef/win32/version.rb +25 -8
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
- data/spec/data/apt/var/www/apt/conf/distributions +7 -0
- data/spec/data/apt/var/www/apt/conf/incoming +4 -0
- data/spec/data/apt/var/www/apt/conf/pulls +3 -0
- data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
- data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
- data/spec/data/apt/var/www/apt/db/packages.db +0 -0
- data/spec/data/apt/var/www/apt/db/references.db +0 -0
- data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
- data/spec/data/apt/var/www/apt/db/version +4 -0
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -0
- data/spec/data/bootstrap/secret.erb +9 -0
- data/spec/data/cookbooks/ignorken/recipes/default.rb +1 -0
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +2 -0
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -0
- data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -0
- data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -0
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -0
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -0
- data/spec/data/git_bundles/example-repo.gitbundle +0 -0
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_yourself.rb +8 -0
- data/spec/data/null_config.rb +1 -0
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/remote_file/nyan_cat.png.gz +0 -0
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
- data/spec/functional/knife/exec_spec.rb +2 -2
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +101 -0
- data/spec/functional/resource/batch_spec.rb +64 -0
- data/spec/functional/resource/cookbook_file_spec.rb +2 -3
- data/spec/functional/resource/deploy_revision_spec.rb +180 -0
- data/spec/functional/resource/directory_spec.rb +2 -2
- data/spec/functional/resource/file_spec.rb +17 -1
- data/spec/functional/resource/git_spec.rb +259 -0
- data/spec/functional/resource/link_spec.rb +422 -388
- data/spec/functional/resource/package_spec.rb +297 -0
- data/spec/functional/resource/powershell_spec.rb +188 -0
- data/spec/functional/resource/registry_spec.rb +8 -4
- data/spec/functional/resource/remote_directory_spec.rb +2 -2
- data/spec/functional/resource/remote_file_spec.rb +97 -29
- data/spec/functional/resource/template_spec.rb +173 -17
- data/spec/functional/resource/user_spec.rb +547 -0
- data/spec/functional/run_lock_spec.rb +5 -0
- data/spec/functional/shell_spec.rb +2 -1
- data/spec/functional/win32/service_manager_spec.rb +269 -0
- data/spec/functional/win32/versions_spec.rb +78 -0
- data/spec/integration/knife/chef_repo_path_spec.rb +805 -0
- data/spec/integration/knife/chef_repository_file_system_spec.rb +276 -0
- data/spec/integration/knife/chefignore_spec.rb +271 -0
- data/spec/integration/knife/delete_spec.rb +944 -0
- data/spec/integration/knife/deps_spec.rb +648 -0
- data/spec/integration/knife/diff_spec.rb +536 -0
- data/spec/integration/knife/download_spec.rb +962 -0
- data/spec/integration/knife/list_spec.rb +633 -0
- data/spec/integration/knife/raw_spec.rb +166 -0
- data/spec/integration/knife/redirection_spec.rb +57 -0
- data/spec/integration/knife/show_spec.rb +158 -0
- data/spec/integration/knife/upload_spec.rb +1060 -0
- data/spec/integration/solo/solo_spec.rb +41 -0
- data/spec/spec_helper.rb +55 -1
- data/spec/support/chef_helpers.rb +32 -0
- data/spec/support/platform_helpers.rb +40 -0
- data/spec/support/platforms/win32/spec_service.rb +59 -0
- data/spec/support/shared/functional/directory_resource.rb +43 -16
- data/spec/support/shared/functional/file_resource.rb +661 -20
- data/spec/support/shared/functional/securable_resource.rb +109 -8
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +39 -31
- data/spec/support/shared/integration/integration_helper.rb +166 -0
- data/spec/support/shared/integration/knife_support.rb +171 -0
- data/spec/support/shared/unit/execute_resource.rb +125 -0
- data/spec/support/shared/unit/file_system_support.rb +8 -48
- data/spec/support/shared/unit/provider/file.rb +609 -0
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +407 -0
- data/spec/support/shared/unit/script_resource.rb +52 -0
- data/spec/support/shared/unit/windows_script_resource.rb +48 -0
- data/spec/tiny_server.rb +13 -11
- data/spec/unit/application/client_spec.rb +39 -1
- data/spec/unit/application/knife_spec.rb +12 -0
- data/spec/unit/application/solo_spec.rb +1 -1
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/chef_fs/diff_spec.rb +30 -31
- data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
- data/spec/unit/chef_fs/file_system_spec.rb +2 -3
- data/spec/unit/client_spec.rb +20 -1
- data/spec/unit/config_spec.rb +70 -52
- data/spec/unit/cookbook/synchronizer_spec.rb +49 -1
- data/spec/unit/cookbook/syntax_check_spec.rb +28 -3
- data/spec/unit/cookbook_loader_spec.rb +3 -2
- data/spec/unit/daemon_spec.rb +7 -7
- data/spec/unit/data_bag_spec.rb +7 -0
- data/spec/unit/deprecation_spec.rb +86 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +183 -88
- data/spec/unit/environment_spec.rb +98 -0
- data/spec/unit/exceptions_spec.rb +6 -1
- data/spec/unit/file_access_control_spec.rb +21 -1
- data/spec/unit/file_content_management/deploy/cp_spec.rb +46 -0
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +103 -0
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +179 -0
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +38 -2
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -2
- data/spec/unit/knife/bootstrap_spec.rb +128 -29
- data/spec/unit/knife/configure_spec.rb +42 -26
- data/spec/unit/knife/cookbook_download_spec.rb +24 -3
- data/spec/unit/knife/cookbook_upload_spec.rb +8 -4
- data/spec/unit/knife/core/bootstrap_context_spec.rb +78 -61
- data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
- data/spec/unit/knife/core/ui_spec.rb +41 -0
- data/spec/unit/knife/node_run_list_set_spec.rb +140 -0
- data/spec/unit/knife_spec.rb +21 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +1 -0
- data/spec/unit/mixin/params_validate_spec.rb +35 -0
- data/spec/unit/mixin/template_spec.rb +69 -57
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
- data/spec/unit/node_spec.rb +7 -0
- data/spec/unit/platform_spec.rb +15 -1
- data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
- data/spec/unit/provider/cookbook_file_spec.rb +26 -183
- data/spec/unit/provider/cron/solaris_spec.rb +1 -1
- data/spec/unit/provider/deploy/revision_spec.rb +19 -11
- data/spec/unit/provider/deploy_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +23 -23
- data/spec/unit/provider/execute_spec.rb +27 -1
- data/spec/unit/provider/file/content_spec.rb +101 -0
- data/spec/unit/provider/file_spec.rb +25 -484
- data/spec/unit/provider/git_spec.rb +224 -28
- data/spec/unit/provider/group/usermod_spec.rb +3 -1
- data/spec/unit/provider/ifconfig/debian_spec.rb +89 -0
- data/spec/unit/provider/ifconfig/redhat_spec.rb +71 -0
- data/spec/unit/provider/ifconfig_spec.rb +0 -33
- data/spec/unit/provider/mount/mount_spec.rb +33 -2
- data/spec/unit/provider/mount/windows_spec.rb +4 -1
- data/spec/unit/provider/mount_spec.rb +16 -6
- data/spec/unit/provider/package/portage_spec.rb +44 -0
- data/spec/unit/provider/package/rubygems_spec.rb +44 -1
- data/spec/unit/provider/package/smartos_spec.rb +3 -2
- data/spec/unit/provider/package/yum_spec.rb +36 -39
- data/spec/unit/provider/package/zypper_spec.rb +84 -22
- data/spec/unit/provider/package_spec.rb +0 -4
- data/spec/unit/provider/powershell_spec.rb +38 -0
- data/spec/unit/provider/remote_directory_spec.rb +0 -4
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +211 -0
- data/spec/unit/provider/remote_file/content_spec.rb +230 -0
- data/spec/unit/provider/remote_file/fetcher_spec.rb +75 -0
- data/spec/unit/provider/remote_file/ftp_spec.rb +224 -0
- data/spec/unit/provider/remote_file/http_spec.rb +319 -0
- data/spec/unit/provider/remote_file/local_file_spec.rb +60 -0
- data/spec/unit/provider/remote_file_spec.rb +33 -295
- data/spec/unit/provider/route_spec.rb +25 -9
- data/spec/unit/provider/service/macosx_spec.rb +176 -152
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +21 -18
- data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +2 -2
- data/spec/unit/provider/service_spec.rb +3 -3
- data/spec/unit/provider/template/content_spec.rb +78 -0
- data/spec/unit/provider/template_spec.rb +52 -184
- data/spec/unit/provider/user/solaris_spec.rb +80 -0
- data/spec/unit/provider/user/useradd_spec.rb +12 -358
- data/spec/unit/resource/batch_spec.rb +48 -0
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -0
- data/spec/unit/resource/execute_spec.rb +3 -101
- data/spec/unit/resource/file_spec.rb +0 -5
- data/spec/unit/resource/group_spec.rb +9 -0
- data/spec/unit/resource/ifconfig_spec.rb +60 -1
- data/spec/unit/resource/link_spec.rb +1 -0
- data/spec/unit/resource/mount_spec.rb +37 -0
- data/spec/unit/resource/powershell_spec.rb +48 -0
- data/spec/unit/resource/remote_file_spec.rb +44 -4
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/script_spec.rb +13 -36
- data/spec/unit/resource/template_spec.rb +111 -8
- data/spec/unit/resource/user_spec.rb +7 -0
- data/spec/unit/resource_collection_spec.rb +61 -32
- data/spec/unit/resource_reporter_spec.rb +115 -102
- data/spec/unit/resource_spec.rb +170 -1
- data/spec/unit/rest/auth_credentials_spec.rb +2 -2
- data/spec/unit/rest_spec.rb +6 -2
- data/spec/unit/run_context/cookbook_compiler_spec.rb +9 -0
- data/spec/unit/runner_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +4 -2
- data/spec/unit/shell/shell_session_spec.rb +15 -2
- data/spec/unit/util/backup_spec.rb +149 -0
- data/spec/unit/util/diff_spec.rb +596 -0
- data/spec/unit/util/selinux_spec.rb +172 -0
- data/spec/unit/version/platform_spec.rb +61 -0
- data/spec/unit/version_constraint/platform_spec.rb +46 -0
- data/spec/unit/version_constraint_spec.rb +5 -0
- metadata +233 -10
- data/lib/chef/chef_fs/file_system/data_bag_item.rb +0 -59
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +0 -237
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +0 -568
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +0 -220
|
@@ -83,14 +83,15 @@ describe Chef::Formatters::ErrorInspectors::ResourceFailureInspector do
|
|
|
83
83
|
@description = Chef::Formatters::ErrorDescription.new("Error Converging Resource:")
|
|
84
84
|
@template_class = Class.new { include Chef::Mixin::Template }
|
|
85
85
|
@template = @template_class.new
|
|
86
|
-
@context = {
|
|
86
|
+
@context = Chef::Mixin::Template::TemplateContext.new({})
|
|
87
|
+
@context[:chef] = "cool"
|
|
87
88
|
|
|
88
89
|
@resource = template("/tmp/foo.txt") do
|
|
89
90
|
mode "0644"
|
|
90
91
|
end
|
|
91
92
|
|
|
92
93
|
@error = begin
|
|
93
|
-
@
|
|
94
|
+
@context.render_template_from_string("foo\nbar\nbaz\n<%= this_is_not_defined %>\nquin\nqunx\ndunno")
|
|
94
95
|
rescue Chef::Mixin::Template::TemplateError => e
|
|
95
96
|
e
|
|
96
97
|
end
|
|
@@ -128,13 +128,65 @@ describe Chef::Knife::Bootstrap do
|
|
|
128
128
|
@knife.render_template(template_string).should match /\{\"foo\":\"bar\"\}/
|
|
129
129
|
end
|
|
130
130
|
|
|
131
|
-
|
|
132
131
|
it "should take the node name from ARGV" do
|
|
133
132
|
@knife.name_args = ['barf']
|
|
134
133
|
@knife.name_args.first.should == "barf"
|
|
135
134
|
end
|
|
136
135
|
|
|
137
|
-
describe "
|
|
136
|
+
describe "specifying the encrypted data bag secret key" do
|
|
137
|
+
subject(:knife) { described_class.new }
|
|
138
|
+
let(:secret) { "supersekret" }
|
|
139
|
+
let(:secret_file) { File.join(CHEF_SPEC_DATA, 'bootstrap', 'encrypted_data_bag_secret') }
|
|
140
|
+
let(:options) { [] }
|
|
141
|
+
let(:template_file) { File.expand_path(File.join(CHEF_SPEC_DATA, "bootstrap", "secret.erb")) }
|
|
142
|
+
let(:rendered_template) do
|
|
143
|
+
knife.instance_variable_set("@template_file", template_file)
|
|
144
|
+
knife.parse_options(options)
|
|
145
|
+
template_string = knife.read_template
|
|
146
|
+
knife.render_template(template_string)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
context "via --secret" do
|
|
150
|
+
let(:options){ ["--secret", secret] }
|
|
151
|
+
|
|
152
|
+
it "creates a secret file" do
|
|
153
|
+
rendered_template.should match(%r{#{secret}})
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
it "renders the client.rb with an encrypted_data_bag_secret entry" do
|
|
157
|
+
rendered_template.should match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
context "via --secret-file" do
|
|
162
|
+
let(:options) { ["--secret-file", secret_file] }
|
|
163
|
+
let(:secret) { IO.read(secret_file) }
|
|
164
|
+
|
|
165
|
+
it "creates a secret file" do
|
|
166
|
+
rendered_template.should match(%r{#{secret}})
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it "renders the client.rb with an encrypted_data_bag_secret entry" do
|
|
170
|
+
rendered_template.should match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
context "via Chef::Config[:encrypted_data_bag_secret]" do
|
|
175
|
+
before(:each) { Chef::Config[:encrypted_data_bag_secret] = secret_file }
|
|
176
|
+
let(:secret) { IO.read(secret_file) }
|
|
177
|
+
|
|
178
|
+
it "creates a secret file" do
|
|
179
|
+
rendered_template.should match(%r{#{secret}})
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
it "renders the client.rb with an encrypted_data_bag_secret entry" do
|
|
183
|
+
rendered_template.should match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
|
|
184
|
+
end
|
|
185
|
+
after(:each) { Chef::Config.configuration = @original_config }
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
describe "when configuring the underlying knife ssh command" do
|
|
138
190
|
context "from the command line" do
|
|
139
191
|
before do
|
|
140
192
|
@knife.name_args = ["foo.example.com"]
|
|
@@ -143,61 +195,96 @@ describe Chef::Knife::Bootstrap do
|
|
|
143
195
|
@knife.config[:ssh_password] = "open_sesame"
|
|
144
196
|
Chef::Config[:knife][:ssh_user] = nil
|
|
145
197
|
Chef::Config[:knife][:ssh_port] = nil
|
|
198
|
+
@knife.config[:forward_agent] = true
|
|
146
199
|
@knife.config[:identity_file] = "~/.ssh/me.rsa"
|
|
147
200
|
@knife.stub!(:read_template).and_return("")
|
|
148
201
|
@knife_ssh = @knife.knife_ssh
|
|
149
202
|
end
|
|
150
|
-
|
|
203
|
+
|
|
151
204
|
it "configures the hostname" do
|
|
152
205
|
@knife_ssh.name_args.first.should == "foo.example.com"
|
|
153
206
|
end
|
|
154
|
-
|
|
207
|
+
|
|
155
208
|
it "configures the ssh user" do
|
|
156
209
|
@knife_ssh.config[:ssh_user].should == 'rooty'
|
|
157
210
|
end
|
|
158
|
-
|
|
211
|
+
|
|
159
212
|
it "configures the ssh password" do
|
|
160
213
|
@knife_ssh.config[:ssh_password].should == 'open_sesame'
|
|
161
214
|
end
|
|
162
|
-
|
|
215
|
+
|
|
163
216
|
it "configures the ssh port" do
|
|
164
217
|
@knife_ssh.config[:ssh_port].should == '4001'
|
|
165
218
|
end
|
|
166
219
|
|
|
220
|
+
it "configures the ssh agent forwarding" do
|
|
221
|
+
@knife_ssh.config[:forward_agent].should == true
|
|
222
|
+
end
|
|
223
|
+
|
|
167
224
|
it "configures the ssh identity file" do
|
|
168
225
|
@knife_ssh.config[:identity_file].should == '~/.ssh/me.rsa'
|
|
169
226
|
end
|
|
170
227
|
end
|
|
228
|
+
context "validating use_sudo_password" do
|
|
229
|
+
before do
|
|
230
|
+
@knife.config[:distro] = "ubuntu"
|
|
231
|
+
@knife.config[:ssh_password] = "password"
|
|
232
|
+
@knife.stub(:read_template).and_return(IO.read(@knife.find_template).chomp)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
it "use_sudo_password contains description and long params for help" do
|
|
236
|
+
@knife.options.should have_key(:use_sudo_password) \
|
|
237
|
+
and @knife.options[:use_sudo_password][:description].to_s.should_not == ''\
|
|
238
|
+
and @knife.options[:use_sudo_password][:long].to_s.should_not == ''
|
|
239
|
+
end
|
|
171
240
|
|
|
241
|
+
it "uses the password from --ssh-password for sudo when --use-sudo-password is set" do
|
|
242
|
+
@knife.config[:use_sudo] = true
|
|
243
|
+
@knife.config[:use_sudo_password] = true
|
|
244
|
+
@knife.ssh_command.should include("echo #{@knife.config[:ssh_password]} | sudo -S")
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
it "should not honor --use-sudo-password when --use-sudo is not set" do
|
|
248
|
+
@knife.config[:use_sudo] = false
|
|
249
|
+
@knife.config[:use_sudo_password] = true
|
|
250
|
+
@knife.ssh_command.should_not include("echo #{@knife.config[:ssh_password]} | sudo -S")
|
|
251
|
+
end
|
|
252
|
+
end
|
|
172
253
|
context "from the knife config file" do
|
|
173
254
|
before do
|
|
174
255
|
@knife.name_args = ["config.example.com"]
|
|
175
256
|
@knife.config[:ssh_user] = nil
|
|
176
257
|
@knife.config[:ssh_port] = nil
|
|
177
258
|
@knife.config[:ssh_gateway] = nil
|
|
259
|
+
@knife.config[:forward_agent] = nil
|
|
178
260
|
@knife.config[:identity_file] = nil
|
|
179
261
|
@knife.config[:host_key_verify] = nil
|
|
180
262
|
Chef::Config[:knife][:ssh_user] = "curiosity"
|
|
181
263
|
Chef::Config[:knife][:ssh_port] = "2430"
|
|
264
|
+
Chef::Config[:knife][:forward_agent] = true
|
|
182
265
|
Chef::Config[:knife][:identity_file] = "~/.ssh/you.rsa"
|
|
183
266
|
Chef::Config[:knife][:ssh_gateway] = "towel.blinkenlights.nl"
|
|
184
267
|
Chef::Config[:knife][:host_key_verify] = true
|
|
185
268
|
@knife.stub!(:read_template).and_return("")
|
|
186
269
|
@knife_ssh = @knife.knife_ssh
|
|
187
270
|
end
|
|
188
|
-
|
|
271
|
+
|
|
189
272
|
it "configures the ssh user" do
|
|
190
273
|
@knife_ssh.config[:ssh_user].should == 'curiosity'
|
|
191
274
|
end
|
|
192
|
-
|
|
275
|
+
|
|
193
276
|
it "configures the ssh port" do
|
|
194
277
|
@knife_ssh.config[:ssh_port].should == '2430'
|
|
195
278
|
end
|
|
196
279
|
|
|
280
|
+
it "configures the ssh agent forwarding" do
|
|
281
|
+
@knife_ssh.config[:forward_agent].should == true
|
|
282
|
+
end
|
|
283
|
+
|
|
197
284
|
it "configures the ssh identity file" do
|
|
198
285
|
@knife_ssh.config[:identity_file].should == '~/.ssh/you.rsa'
|
|
199
286
|
end
|
|
200
|
-
|
|
287
|
+
|
|
201
288
|
it "configures the ssh gateway" do
|
|
202
289
|
@knife_ssh.config[:ssh_gateway].should == 'towel.blinkenlights.nl'
|
|
203
290
|
end
|
|
@@ -205,29 +292,30 @@ describe Chef::Knife::Bootstrap do
|
|
|
205
292
|
it "configures the host key verify mode" do
|
|
206
293
|
@knife_ssh.config[:host_key_verify].should == true
|
|
207
294
|
end
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
describe "when falling back to password auth when host key auth fails" do
|
|
211
|
-
before do
|
|
212
|
-
@knife.name_args = ["foo.example.com"]
|
|
213
|
-
@knife.config[:ssh_user] = "rooty"
|
|
214
|
-
@knife.config[:identity_file] = "~/.ssh/me.rsa"
|
|
215
|
-
@knife.stub!(:read_template).and_return("")
|
|
216
|
-
@knife_ssh = @knife.knife_ssh
|
|
217
295
|
end
|
|
218
296
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
297
|
+
describe "when falling back to password auth when host key auth fails" do
|
|
298
|
+
before do
|
|
299
|
+
@knife.name_args = ["foo.example.com"]
|
|
300
|
+
@knife.config[:ssh_user] = "rooty"
|
|
301
|
+
@knife.config[:identity_file] = "~/.ssh/me.rsa"
|
|
302
|
+
@knife.stub!(:read_template).and_return("")
|
|
303
|
+
@knife_ssh = @knife.knife_ssh
|
|
304
|
+
end
|
|
225
305
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
306
|
+
it "prompts the user for a password " do
|
|
307
|
+
@knife.stub!(:knife_ssh).and_return(@knife_ssh)
|
|
308
|
+
@knife_ssh.stub!(:get_password).and_return('typed_in_password')
|
|
309
|
+
alternate_knife_ssh = @knife.knife_ssh_with_password_auth
|
|
310
|
+
alternate_knife_ssh.config[:ssh_password].should == 'typed_in_password'
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
it "configures knife not to use the identity file that didn't work previously" do
|
|
314
|
+
@knife.stub!(:knife_ssh).and_return(@knife_ssh)
|
|
315
|
+
@knife_ssh.stub!(:get_password).and_return('typed_in_password')
|
|
316
|
+
alternate_knife_ssh = @knife.knife_ssh_with_password_auth
|
|
317
|
+
alternate_knife_ssh.config[:identity_file].should be_nil
|
|
318
|
+
end
|
|
231
319
|
end
|
|
232
320
|
end
|
|
233
321
|
|
|
@@ -262,6 +350,17 @@ describe Chef::Knife::Bootstrap do
|
|
|
262
350
|
@knife.run
|
|
263
351
|
end
|
|
264
352
|
|
|
353
|
+
context "Chef::Config[:encrypted_data_bag_secret] is set" do
|
|
354
|
+
let(:secret_file) { File.join(CHEF_SPEC_DATA, 'bootstrap', 'encrypted_data_bag_secret') }
|
|
355
|
+
before { Chef::Config[:encrypted_data_bag_secret] = secret_file }
|
|
356
|
+
|
|
357
|
+
it "warns the configuration option is deprecated" do
|
|
358
|
+
@knife_ssh.should_receive(:run)
|
|
359
|
+
@knife.ui.should_receive(:warn).at_least(3).times
|
|
360
|
+
@knife.run
|
|
361
|
+
end
|
|
362
|
+
end
|
|
363
|
+
|
|
265
364
|
end
|
|
266
365
|
|
|
267
366
|
end
|
|
@@ -21,20 +21,36 @@ describe Chef::Knife::Configure do
|
|
|
21
21
|
@err = StringIO.new
|
|
22
22
|
@knife.ui.stub!(:stderr).and_return(@err)
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
@ohai.stub(:require_plugin)
|
|
26
|
-
@ohai[:fqdn] = "foo.example.org"
|
|
27
|
-
Ohai::System.stub!(:new).and_return(@ohai)
|
|
24
|
+
Ohai::System.stub!(:new).and_return(ohai)
|
|
28
25
|
end
|
|
29
26
|
|
|
30
27
|
after do
|
|
31
28
|
Chef::Config.configuration.replace(@original_config)
|
|
32
29
|
end
|
|
33
30
|
|
|
31
|
+
|
|
32
|
+
let(:fqdn) { "foo.example.org" }
|
|
33
|
+
|
|
34
|
+
let(:ohai) do
|
|
35
|
+
o = {}
|
|
36
|
+
o.stub(:require_plugin)
|
|
37
|
+
o[:fqdn] = fqdn
|
|
38
|
+
o
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
let(:default_admin_key) { "/etc/chef-server/admin.pem" }
|
|
42
|
+
let(:default_admin_key_win32) { File.expand_path(default_admin_key) }
|
|
43
|
+
|
|
44
|
+
let(:default_validator_key) { "/etc/chef-server/chef-validator.pem" }
|
|
45
|
+
let(:default_validator_key_win32) { File.expand_path(default_validator_key) }
|
|
46
|
+
|
|
47
|
+
let(:default_server_url) { "https://#{fqdn}:443" }
|
|
48
|
+
|
|
49
|
+
|
|
34
50
|
it "asks the user for the URL of the chef server" do
|
|
35
51
|
@knife.ask_user_for_config
|
|
36
|
-
@out.string.should match(Regexp.escape(
|
|
37
|
-
@knife.chef_server.should ==
|
|
52
|
+
@out.string.should match(Regexp.escape("Please enter the chef server URL: [#{default_server_url}]"))
|
|
53
|
+
@knife.chef_server.should == default_server_url
|
|
38
54
|
end
|
|
39
55
|
|
|
40
56
|
it "asks the user for the clientname they want for the new client if -i is specified" do
|
|
@@ -85,11 +101,11 @@ describe Chef::Knife::Configure do
|
|
|
85
101
|
it "asks the user for the location of the existing admin key if -i is specified" do
|
|
86
102
|
@knife.config[:initial] = true
|
|
87
103
|
@knife.ask_user_for_config
|
|
88
|
-
@out.string.should match(Regexp.escape("Please enter the location of the existing admin's private key: [
|
|
104
|
+
@out.string.should match(Regexp.escape("Please enter the location of the existing admin's private key: [#{default_admin_key}]"))
|
|
89
105
|
if windows?
|
|
90
|
-
@knife.admin_client_key.should ==
|
|
106
|
+
@knife.admin_client_key.capitalize.should == default_admin_key_win32.capitalize
|
|
91
107
|
else
|
|
92
|
-
@knife.admin_client_key.should ==
|
|
108
|
+
@knife.admin_client_key.should == default_admin_key
|
|
93
109
|
end
|
|
94
110
|
end
|
|
95
111
|
|
|
@@ -99,7 +115,7 @@ describe Chef::Knife::Configure do
|
|
|
99
115
|
@knife.ask_user_for_config
|
|
100
116
|
@out.string.should_not match(Regexp.escape("Please enter the location of the existing admin client's private key:"))
|
|
101
117
|
if windows?
|
|
102
|
-
@knife.admin_client_key.should
|
|
118
|
+
@knife.admin_client_key.should match %r{^[A-Za-z]:/home/you/\.chef/my-webui\.pem$}
|
|
103
119
|
else
|
|
104
120
|
@knife.admin_client_key.should == '/home/you/.chef/my-webui.pem'
|
|
105
121
|
end
|
|
@@ -107,11 +123,11 @@ describe Chef::Knife::Configure do
|
|
|
107
123
|
|
|
108
124
|
it "should not ask the user for the location of the existing admin key if -i is not specified" do
|
|
109
125
|
@knife.ask_user_for_config
|
|
110
|
-
@out.string.should_not match(Regexp.escape("Please enter the location of the existing admin client's private key: [
|
|
126
|
+
@out.string.should_not match(Regexp.escape("Please enter the location of the existing admin client's private key: [#{default_admin_key}]"))
|
|
111
127
|
if windows?
|
|
112
|
-
@knife.admin_client_key.should_not ==
|
|
128
|
+
@knife.admin_client_key.should_not == default_admin_key_win32
|
|
113
129
|
else
|
|
114
|
-
@knife.admin_client_key.should_not ==
|
|
130
|
+
@knife.admin_client_key.should_not == default_admin_key
|
|
115
131
|
end
|
|
116
132
|
end
|
|
117
133
|
|
|
@@ -136,11 +152,11 @@ describe Chef::Knife::Configure do
|
|
|
136
152
|
|
|
137
153
|
it "asks the users for the location of the validation key" do
|
|
138
154
|
@knife.ask_user_for_config
|
|
139
|
-
@out.string.should match(Regexp.escape("Please enter the location of the validation key: [
|
|
155
|
+
@out.string.should match(Regexp.escape("Please enter the location of the validation key: [#{default_validator_key}]"))
|
|
140
156
|
if windows?
|
|
141
|
-
@knife.validation_key.should ==
|
|
157
|
+
@knife.validation_key.capitalize.should == default_validator_key_win32.capitalize
|
|
142
158
|
else
|
|
143
|
-
@knife.validation_key.should ==
|
|
159
|
+
@knife.validation_key.should == default_validator_key
|
|
144
160
|
end
|
|
145
161
|
end
|
|
146
162
|
|
|
@@ -149,7 +165,7 @@ describe Chef::Knife::Configure do
|
|
|
149
165
|
@knife.ask_user_for_config
|
|
150
166
|
@out.string.should_not match(Regexp.escape("Please enter the location of the validation key:"))
|
|
151
167
|
if windows?
|
|
152
|
-
@knife.validation_key.should
|
|
168
|
+
@knife.validation_key.should match %r{^[A-Za-z]:/home/you/\.chef/my-validation\.pem$}
|
|
153
169
|
else
|
|
154
170
|
@knife.validation_key.should == '/home/you/.chef/my-validation.pem'
|
|
155
171
|
end
|
|
@@ -174,9 +190,9 @@ describe Chef::Knife::Configure do
|
|
|
174
190
|
@knife.chef_server.should == 'http://localhost:5000'
|
|
175
191
|
@knife.admin_client_name.should == 'my-webui'
|
|
176
192
|
if windows?
|
|
177
|
-
@knife.admin_client_key.should
|
|
178
|
-
@knife.validation_key.should
|
|
179
|
-
@knife.new_client_key.should
|
|
193
|
+
@knife.admin_client_key.should match %r{^[A-Za-z]:/home/you/\.chef/my-webui\.pem$}
|
|
194
|
+
@knife.validation_key.should match %r{^[A-Za-z]:/home/you/\.chef/my-validation\.pem$}
|
|
195
|
+
@knife.new_client_key.should match %r{^[A-Za-z]:/home/you/a-new-user\.pem$}
|
|
180
196
|
else
|
|
181
197
|
@knife.admin_client_key.should == '/home/you/.chef/my-webui.pem'
|
|
182
198
|
@knife.validation_key.should == '/home/you/.chef/my-validation.pem'
|
|
@@ -189,8 +205,8 @@ describe Chef::Knife::Configure do
|
|
|
189
205
|
it "writes the new data to a config file" do
|
|
190
206
|
File.stub!(:expand_path).with("/home/you/.chef/knife.rb").and_return("/home/you/.chef/knife.rb")
|
|
191
207
|
File.stub!(:expand_path).with("/home/you/.chef/#{Etc.getlogin}.pem").and_return("/home/you/.chef/#{Etc.getlogin}.pem")
|
|
192
|
-
File.stub!(:expand_path).with(
|
|
193
|
-
File.stub!(:expand_path).with(
|
|
208
|
+
File.stub!(:expand_path).with(default_validator_key).and_return(default_validator_key)
|
|
209
|
+
File.stub!(:expand_path).with(default_admin_key).and_return(default_admin_key)
|
|
194
210
|
FileUtils.should_receive(:mkdir_p).with("/home/you/.chef")
|
|
195
211
|
config_file = StringIO.new
|
|
196
212
|
::File.should_receive(:open).with("/home/you/.chef/knife.rb", "w").and_yield config_file
|
|
@@ -199,16 +215,16 @@ describe Chef::Knife::Configure do
|
|
|
199
215
|
config_file.string.should match(/^node_name[\s]+'#{Etc.getlogin}'$/)
|
|
200
216
|
config_file.string.should match(%r{^client_key[\s]+'/home/you/.chef/#{Etc.getlogin}.pem'$})
|
|
201
217
|
config_file.string.should match(/^validation_client_name\s+'chef-validator'$/)
|
|
202
|
-
config_file.string.should match(%r{^validation_key\s+'
|
|
203
|
-
config_file.string.should match(%r{^chef_server_url\s+'
|
|
218
|
+
config_file.string.should match(%r{^validation_key\s+'#{default_validator_key}'$})
|
|
219
|
+
config_file.string.should match(%r{^chef_server_url\s+'#{default_server_url}'$})
|
|
204
220
|
config_file.string.should match(%r{cookbook_path\s+\[ '/home/you/chef-repo/cookbooks' \]})
|
|
205
221
|
end
|
|
206
222
|
|
|
207
223
|
it "creates a new client when given the --initial option" do
|
|
208
224
|
File.should_receive(:expand_path).with("/home/you/.chef/knife.rb").and_return("/home/you/.chef/knife.rb")
|
|
209
225
|
File.should_receive(:expand_path).with("/home/you/.chef/a-new-user.pem").and_return("/home/you/.chef/a-new-user.pem")
|
|
210
|
-
File.should_receive(:expand_path).with(
|
|
211
|
-
File.should_receive(:expand_path).with(
|
|
226
|
+
File.should_receive(:expand_path).with(default_validator_key).and_return(default_validator_key)
|
|
227
|
+
File.should_receive(:expand_path).with(default_admin_key).and_return(default_admin_key)
|
|
212
228
|
Chef::Config[:node_name] = "webmonkey.example.com"
|
|
213
229
|
|
|
214
230
|
user_command = Chef::Knife::UserCreate.new
|
|
@@ -33,6 +33,13 @@ describe Chef::Knife::CookbookDownload do
|
|
|
33
33
|
lambda { @knife.run }.should raise_error(SystemExit)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
+
it 'should exit with a fatal error when there is no cookbook on the server' do
|
|
37
|
+
@knife.name_args = ['foobar', nil]
|
|
38
|
+
@knife.should_receive(:determine_version).and_return(nil)
|
|
39
|
+
@knife.ui.should_receive(:fatal).with('No such cookbook found')
|
|
40
|
+
lambda { @knife.run }.should raise_error(SystemExit)
|
|
41
|
+
end
|
|
42
|
+
|
|
36
43
|
describe 'with a cookbook name' do
|
|
37
44
|
before(:each) do
|
|
38
45
|
@knife.name_args = ['foobar']
|
|
@@ -136,6 +143,13 @@ describe Chef::Knife::CookbookDownload do
|
|
|
136
143
|
end
|
|
137
144
|
|
|
138
145
|
describe 'determine_version' do
|
|
146
|
+
|
|
147
|
+
it 'should return nil if there are no versions' do
|
|
148
|
+
@knife.should_receive(:available_versions).and_return(nil)
|
|
149
|
+
@knife.determine_version.should == nil
|
|
150
|
+
@knife.version.should == nil
|
|
151
|
+
end
|
|
152
|
+
|
|
139
153
|
it 'should return and set the version if there is only one version' do
|
|
140
154
|
@knife.should_receive(:available_versions).at_least(:once).and_return(['1.0.0'])
|
|
141
155
|
@knife.determine_version.should == '1.0.0'
|
|
@@ -143,7 +157,7 @@ describe Chef::Knife::CookbookDownload do
|
|
|
143
157
|
end
|
|
144
158
|
|
|
145
159
|
it 'should ask which version to download and return it if there is more than one' do
|
|
146
|
-
@knife.should_receive(:available_versions).and_return(['1.0.0', '2.0.0'])
|
|
160
|
+
@knife.should_receive(:available_versions).at_least(:once).and_return(['1.0.0', '2.0.0'])
|
|
147
161
|
@knife.should_receive(:ask_which_version).and_return('1.0.0')
|
|
148
162
|
@knife.determine_version.should == '1.0.0'
|
|
149
163
|
end
|
|
@@ -152,7 +166,7 @@ describe Chef::Knife::CookbookDownload do
|
|
|
152
166
|
it 'should return and set the version to the latest version' do
|
|
153
167
|
@knife.config[:latest] = true
|
|
154
168
|
@knife.should_receive(:available_versions).at_least(:once).
|
|
155
|
-
and_return(['1.0.0', '
|
|
169
|
+
and_return(['1.0.0', '1.1.0', '2.0.0'])
|
|
156
170
|
@knife.determine_version
|
|
157
171
|
@knife.version.to_s.should == '2.0.0'
|
|
158
172
|
end
|
|
@@ -164,7 +178,14 @@ describe Chef::Knife::CookbookDownload do
|
|
|
164
178
|
@knife.cookbook_name = 'foobar'
|
|
165
179
|
end
|
|
166
180
|
|
|
167
|
-
it 'should return
|
|
181
|
+
it 'should return nil if there are no versions' do
|
|
182
|
+
Chef::CookbookVersion.should_receive(:available_versions).
|
|
183
|
+
with('foobar').
|
|
184
|
+
and_return(nil)
|
|
185
|
+
@knife.available_versions.should == nil
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
it 'should return the available versions' do
|
|
168
189
|
Chef::CookbookVersion.should_receive(:available_versions).
|
|
169
190
|
with('foobar').
|
|
170
191
|
and_return(['1.1.0', '2.0.0', '1.0.0'])
|