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
|
@@ -46,12 +46,12 @@ describe Chef::Knife::Exec do
|
|
|
46
46
|
|
|
47
47
|
pending "executes a script in the context of the chef-shell main context", :ruby_18_only
|
|
48
48
|
|
|
49
|
-
it "executes a script in the context of the chef-shell main context", :
|
|
49
|
+
it "executes a script in the context of the chef-shell main context", :ruby_gte_19_only do
|
|
50
50
|
@node = Chef::Node.new
|
|
51
51
|
@node.name("ohai-world")
|
|
52
52
|
response = {"rows" => [@node],"start" => 0,"total" => 1}
|
|
53
53
|
@api.get(%r{^/search/node}, 200, response.to_json)
|
|
54
|
-
code = "$output.puts nodes.all
|
|
54
|
+
code = "$output.puts nodes.all"
|
|
55
55
|
@knife.config[:exec] = code
|
|
56
56
|
@knife.run
|
|
57
57
|
$output.string.should match(%r{node\[ohai-world\]})
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Edwards (<adamed@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
require 'uri'
|
|
21
|
+
|
|
22
|
+
describe Chef::Provider::RemoteFile::CacheControlData do
|
|
23
|
+
|
|
24
|
+
before do
|
|
25
|
+
@original_config = Chef::Config.hash_dup
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
after do
|
|
29
|
+
Chef::Config.configuration = @original_config if @original_config
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
before(:each) do
|
|
33
|
+
Chef::Config[:file_cache_path] = Dir.mktmpdir
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
after(:each) do
|
|
37
|
+
FileUtils.rm_rf(Chef::Config[:file_cache_path])
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
let(:uri) { URI.parse("http://www.bing.com/robots.txt") }
|
|
41
|
+
|
|
42
|
+
describe "when the cache control data save method is invoked" do
|
|
43
|
+
|
|
44
|
+
subject(:cache_control_data) do
|
|
45
|
+
Chef::Provider::RemoteFile::CacheControlData.load_and_validate(uri, file_checksum)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# the checksum of the file last we fetched it.
|
|
49
|
+
let(:file_checksum) { "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" }
|
|
50
|
+
|
|
51
|
+
let(:etag) { "\"a-strong-identifier\"" }
|
|
52
|
+
let(:mtime) { "Thu, 01 Aug 2013 08:16:32 GMT" }
|
|
53
|
+
|
|
54
|
+
before do
|
|
55
|
+
cache_control_data.etag = etag
|
|
56
|
+
cache_control_data.mtime = mtime
|
|
57
|
+
cache_control_data.checksum = file_checksum
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "writes data to the cache" do
|
|
61
|
+
cache_control_data.save
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "writes the data to the cache and the same data can be read back" do
|
|
65
|
+
cache_control_data.save
|
|
66
|
+
saved_cache_control_data = Chef::Provider::RemoteFile::CacheControlData.load_and_validate(uri, file_checksum)
|
|
67
|
+
saved_cache_control_data.etag.should == cache_control_data.etag
|
|
68
|
+
saved_cache_control_data.mtime.should == cache_control_data.mtime
|
|
69
|
+
saved_cache_control_data.checksum.should == cache_control_data.checksum
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Cover the very long remote file path case -- see CHEF-4422 where
|
|
73
|
+
# local cache file names generated from the long uri exceeded
|
|
74
|
+
# local file system path limits resulting in exceptions from
|
|
75
|
+
# file system API's on both Windows and Unix systems.
|
|
76
|
+
context "when the length of the uri exceeds the path length limits for the local file system" do
|
|
77
|
+
let(:uri_exceeds_file_system_limit) do
|
|
78
|
+
URI.parse("http://www.bing.com/" + ('0' * 1024))
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
let(:uri) { uri_exceeds_file_system_limit }
|
|
82
|
+
|
|
83
|
+
it "writes data to the cache" do
|
|
84
|
+
lambda do
|
|
85
|
+
cache_control_data.save
|
|
86
|
+
end.should_not raise_error
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "writes the data to the cache and the same data can be read back" do
|
|
90
|
+
cache_control_data.save
|
|
91
|
+
saved_cache_control_data = Chef::Provider::RemoteFile::CacheControlData.load_and_validate(uri, file_checksum)
|
|
92
|
+
saved_cache_control_data.etag.should == cache_control_data.etag
|
|
93
|
+
saved_cache_control_data.mtime.should == cache_control_data.mtime
|
|
94
|
+
saved_cache_control_data.checksum.should == cache_control_data.checksum
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
101
|
+
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Edwards (<adamed@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
|
|
21
|
+
shared_context Chef::Resource::WindowsScript do
|
|
22
|
+
before(:all) do
|
|
23
|
+
|
|
24
|
+
ohai_reader = Ohai::System.new
|
|
25
|
+
ohai_reader.require_plugin("os")
|
|
26
|
+
ohai_reader.require_plugin("windows::platform")
|
|
27
|
+
|
|
28
|
+
new_node = Chef::Node.new
|
|
29
|
+
new_node.consume_external_attrs(ohai_reader.data,{})
|
|
30
|
+
|
|
31
|
+
events = Chef::EventDispatch::Dispatcher.new
|
|
32
|
+
|
|
33
|
+
@run_context = Chef::RunContext.new(new_node, {}, events)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
let(:script_output_path) do
|
|
37
|
+
File.join(Dir.tmpdir, make_tmpname("windows_script_test"))
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
before(:each) do
|
|
41
|
+
k File.delete(script_output_path) if File.exists?(script_output_path)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
after(:each) do
|
|
45
|
+
File.delete(script_output_path) if File.exists?(script_output_path)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe Chef::Resource::WindowsScript::Batch, :windows_only do
|
|
50
|
+
let(:script_content) { "whoami" }
|
|
51
|
+
|
|
52
|
+
let!(:resource) do
|
|
53
|
+
Chef::Resource::WindowsScript::Batch.new("Batch resource functional test", @run_context)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
context "when the run action is invoked on Windows" do
|
|
57
|
+
include_context Chef::Resource::WindowsScript
|
|
58
|
+
it "executes the script code" do
|
|
59
|
+
resource.code(script_content + " > #{script_output_path}")
|
|
60
|
+
resource.returns(0)
|
|
61
|
+
resource.run_action(:run)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -32,7 +32,7 @@ describe Chef::Resource::CookbookFile do
|
|
|
32
32
|
content
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
let(:default_mode) {
|
|
35
|
+
let(:default_mode) { ((0100666 - File.umask) & 07777).to_s(8) }
|
|
36
36
|
|
|
37
37
|
it_behaves_like "a securable resource with reporting"
|
|
38
38
|
|
|
@@ -55,7 +55,7 @@ describe Chef::Resource::CookbookFile do
|
|
|
55
55
|
resource
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
let
|
|
58
|
+
let(:resource) do
|
|
59
59
|
create_resource
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -77,6 +77,5 @@ describe Chef::Resource::CookbookFile do
|
|
|
77
77
|
FileUtils.rm_r(windows_non_temp_dir) if Chef::Platform.windows? && File.exists?(windows_non_temp_dir)
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
it_behaves_like "a file that inherits permissions from a parent directory"
|
|
81
80
|
end
|
|
82
81
|
end
|
|
@@ -30,6 +30,7 @@ describe Chef::Resource::DeployRevision, :unix_only => true do
|
|
|
30
30
|
let(:observe_order_file) { Tempfile.new("deploy-resource-observe-operations") }
|
|
31
31
|
|
|
32
32
|
before do
|
|
33
|
+
Chef::Log.level = :info
|
|
33
34
|
@old_file_cache_path = Chef::Config[:file_cache_path]
|
|
34
35
|
Chef::Config[:file_cache_path] = file_cache_path
|
|
35
36
|
end
|
|
@@ -276,6 +277,11 @@ describe Chef::Resource::DeployRevision, :unix_only => true do
|
|
|
276
277
|
it "is marked updated" do
|
|
277
278
|
deploy_to_previous_rev.should be_updated_by_last_action
|
|
278
279
|
end
|
|
280
|
+
|
|
281
|
+
it "leaves the old copy of the app around for rollback" do
|
|
282
|
+
File.should exist(File.join(deploy_directory, "releases", previous_rev))
|
|
283
|
+
end
|
|
284
|
+
|
|
279
285
|
end
|
|
280
286
|
|
|
281
287
|
describe "back to a previously deployed revision (implicit rollback)" do
|
|
@@ -510,6 +516,180 @@ describe Chef::Resource::DeployRevision, :unix_only => true do
|
|
|
510
516
|
lambda { deploy_with_in_repo_symlinks.run_action(:deploy) }.should_not raise_error
|
|
511
517
|
end
|
|
512
518
|
end
|
|
519
|
+
|
|
520
|
+
context "when a previously deployed application has been nuked" do
|
|
521
|
+
|
|
522
|
+
shared_examples_for "a redeployed application" do
|
|
523
|
+
|
|
524
|
+
it "should redeploy the application" do
|
|
525
|
+
File.should be_directory(rel_path("releases"))
|
|
526
|
+
File.should be_directory(rel_path("shared"))
|
|
527
|
+
File.should be_directory(rel_path("releases/#{latest_rev}"))
|
|
528
|
+
|
|
529
|
+
File.should be_directory(rel_path("current/tmp"))
|
|
530
|
+
File.should be_directory(rel_path("current/config"))
|
|
531
|
+
File.should be_directory(rel_path("current/public"))
|
|
532
|
+
|
|
533
|
+
File.should be_symlink(rel_path("current"))
|
|
534
|
+
File.readlink(rel_path("current")).should == rel_path("releases/#{latest_rev}")
|
|
535
|
+
end
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
# background: If a deployment is hosed and the user decides to rm -rf the
|
|
539
|
+
# deployment dir, deploy resource should detect that and nullify its cache.
|
|
540
|
+
|
|
541
|
+
context "by removing the entire deploy directory" do
|
|
542
|
+
|
|
543
|
+
before do
|
|
544
|
+
deploy_to_latest_rev.dup.run_action(:deploy)
|
|
545
|
+
FileUtils.rm_rf(deploy_directory)
|
|
546
|
+
deploy_to_latest_rev.dup.run_action(:deploy)
|
|
547
|
+
end
|
|
548
|
+
|
|
549
|
+
include_examples "a redeployed application"
|
|
550
|
+
|
|
551
|
+
end
|
|
552
|
+
|
|
553
|
+
context "by removing the current/ directory" do
|
|
554
|
+
|
|
555
|
+
before do
|
|
556
|
+
deploy_to_latest_rev.dup.run_action(:deploy)
|
|
557
|
+
FileUtils.rm(rel_path("current"))
|
|
558
|
+
deploy_to_latest_rev.dup.run_action(:deploy)
|
|
559
|
+
end
|
|
560
|
+
|
|
561
|
+
include_examples "a redeployed application"
|
|
562
|
+
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
context "when a deployment fails" do
|
|
567
|
+
|
|
568
|
+
shared_examples_for "a recovered deployment" do
|
|
569
|
+
|
|
570
|
+
it "should redeploy the application" do
|
|
571
|
+
File.should be_directory(rel_path("releases"))
|
|
572
|
+
File.should be_directory(rel_path("shared"))
|
|
573
|
+
File.should be_directory(rel_path("releases/#{latest_rev}"))
|
|
574
|
+
|
|
575
|
+
File.should be_directory(rel_path("current/tmp"))
|
|
576
|
+
File.should be_directory(rel_path("current/config"))
|
|
577
|
+
File.should be_directory(rel_path("current/public"))
|
|
578
|
+
|
|
579
|
+
File.should be_symlink(rel_path("current"))
|
|
580
|
+
File.readlink(rel_path("current")).should == rel_path("releases/#{latest_rev}")
|
|
581
|
+
|
|
582
|
+
# if callbacks ran, we know the app was deployed and not merely rolled
|
|
583
|
+
# back to a (busted) prior deployment.
|
|
584
|
+
callback_order.should == [:before_migrate,
|
|
585
|
+
:before_symlink,
|
|
586
|
+
:before_restart,
|
|
587
|
+
:after_restart ]
|
|
588
|
+
end
|
|
589
|
+
end
|
|
590
|
+
|
|
591
|
+
let!(:callback_order) { [] }
|
|
592
|
+
|
|
593
|
+
let(:deploy_to_latest_with_callback_tracking) do
|
|
594
|
+
resource = deploy_to_latest_rev.dup
|
|
595
|
+
tracker = callback_order
|
|
596
|
+
resource.before_migrate { tracker << :before_migrate }
|
|
597
|
+
resource.before_symlink { tracker << :before_symlink }
|
|
598
|
+
resource.before_restart { tracker << :before_restart }
|
|
599
|
+
resource.after_restart { tracker << :after_restart }
|
|
600
|
+
resource
|
|
601
|
+
end
|
|
602
|
+
|
|
603
|
+
[:before_migrate, :before_symlink, :before_restart, :after_restart].each do |callback|
|
|
604
|
+
|
|
605
|
+
context "in the `#{callback}' callback" do
|
|
606
|
+
before do
|
|
607
|
+
lambda { deploy_that_fails.run_action(:deploy) }.should raise_error(Exception, %r{I am a failed deploy})
|
|
608
|
+
deploy_to_latest_with_callback_tracking.run_action(:deploy)
|
|
609
|
+
end
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
let(:deploy_that_fails) do
|
|
613
|
+
resource = deploy_to_latest_rev.dup
|
|
614
|
+
errant_callback = lambda {|x| raise Exception, "I am a failed deploy" }
|
|
615
|
+
resource.send(callback, &errant_callback)
|
|
616
|
+
resource
|
|
617
|
+
end
|
|
618
|
+
|
|
619
|
+
include_examples "a recovered deployment"
|
|
620
|
+
|
|
621
|
+
end
|
|
622
|
+
|
|
623
|
+
end
|
|
624
|
+
|
|
625
|
+
context "in the service restart step" do
|
|
626
|
+
|
|
627
|
+
let(:deploy_that_fails) do
|
|
628
|
+
resource = deploy_to_latest_rev.dup
|
|
629
|
+
resource.restart_command("RUBYOPT=\"\" ruby -e 'exit 1'")
|
|
630
|
+
resource
|
|
631
|
+
end
|
|
632
|
+
|
|
633
|
+
before do
|
|
634
|
+
lambda { deploy_that_fails.run_action(:deploy) }.should raise_error(Chef::Exceptions::Exec)
|
|
635
|
+
deploy_to_latest_with_callback_tracking.run_action(:deploy)
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
include_examples "a recovered deployment"
|
|
639
|
+
end
|
|
640
|
+
|
|
641
|
+
context "when cloning the app code" do
|
|
642
|
+
|
|
643
|
+
class BadTimeScmProvider
|
|
644
|
+
def initialize(new_resource, run_context)
|
|
645
|
+
end
|
|
646
|
+
|
|
647
|
+
def load_current_resource
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
def revision_slug
|
|
651
|
+
"5"
|
|
652
|
+
end
|
|
653
|
+
|
|
654
|
+
def run_action(action)
|
|
655
|
+
raise RuntimeError, "network error"
|
|
656
|
+
end
|
|
657
|
+
end
|
|
658
|
+
|
|
659
|
+
let(:deploy_that_fails) do
|
|
660
|
+
resource = deploy_to_latest_rev.dup
|
|
661
|
+
resource.scm_provider(BadTimeScmProvider)
|
|
662
|
+
resource
|
|
663
|
+
end
|
|
664
|
+
|
|
665
|
+
before do
|
|
666
|
+
lambda { deploy_that_fails.run_action(:deploy) }.should raise_error(RuntimeError, /network error/)
|
|
667
|
+
deploy_to_latest_with_callback_tracking.run_action(:deploy)
|
|
668
|
+
end
|
|
669
|
+
|
|
670
|
+
include_examples "a recovered deployment"
|
|
671
|
+
end
|
|
672
|
+
|
|
673
|
+
context "and then is deployed to a different revision" do
|
|
674
|
+
|
|
675
|
+
let(:deploy_that_fails) do
|
|
676
|
+
resource = deploy_to_previous_rev.dup
|
|
677
|
+
resource.after_restart {|x| raise Exception, "I am a failed deploy" }
|
|
678
|
+
resource
|
|
679
|
+
end
|
|
680
|
+
|
|
681
|
+
before do
|
|
682
|
+
lambda { deploy_that_fails.run_action(:deploy) }.should raise_error(Exception, %r{I am a failed deploy})
|
|
683
|
+
deploy_to_latest_rev.run_action(:deploy)
|
|
684
|
+
end
|
|
685
|
+
|
|
686
|
+
it "removes the unsuccessful deploy after a later successful deploy" do
|
|
687
|
+
::File.should_not exist(File.join(deploy_directory, "releases", previous_rev))
|
|
688
|
+
end
|
|
689
|
+
|
|
690
|
+
end
|
|
691
|
+
|
|
692
|
+
end
|
|
513
693
|
end
|
|
514
694
|
|
|
515
695
|
|
|
@@ -23,7 +23,7 @@ describe Chef::Resource::Directory do
|
|
|
23
23
|
|
|
24
24
|
let(:directory_base) { "directory_spec" }
|
|
25
25
|
|
|
26
|
-
let(:default_mode) {
|
|
26
|
+
let(:default_mode) { ((0100777 - File.umask) & 07777).to_s(8) }
|
|
27
27
|
|
|
28
28
|
def create_resource
|
|
29
29
|
events = Chef::EventDispatch::Dispatcher.new
|
|
@@ -32,7 +32,7 @@ describe Chef::Resource::Directory do
|
|
|
32
32
|
Chef::Resource::Directory.new(path, run_context)
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
let
|
|
35
|
+
let(:resource) do
|
|
36
36
|
create_resource
|
|
37
37
|
end
|
|
38
38
|
|
|
@@ -32,7 +32,7 @@ describe Chef::Resource::File do
|
|
|
32
32
|
resource
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
let
|
|
35
|
+
let(:resource) do
|
|
36
36
|
r = create_resource
|
|
37
37
|
r.content(expected_content)
|
|
38
38
|
r
|
|
@@ -58,6 +58,22 @@ describe Chef::Resource::File do
|
|
|
58
58
|
|
|
59
59
|
it_behaves_like "a securable resource with reporting"
|
|
60
60
|
|
|
61
|
+
describe "when running action :create without content" do
|
|
62
|
+
before do
|
|
63
|
+
resource_without_content.run_action(:create)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
context "and the target file does not exist" do
|
|
67
|
+
it "creates the file" do
|
|
68
|
+
File.should exist(path)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "is marked updated by last action" do
|
|
72
|
+
resource_without_content.should be_updated_by_last_action
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
61
77
|
describe "when running action :touch" do
|
|
62
78
|
context "and the target file does not exist" do
|
|
63
79
|
before do
|