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
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
8
8
|
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
9
|
+
#
|
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
11
|
+
#
|
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@@ -16,21 +16,27 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
class
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
19
|
+
class Chef
|
|
20
|
+
class Platform
|
|
21
|
+
|
|
22
|
+
class << self
|
|
23
|
+
def windows?
|
|
24
|
+
if RUBY_PLATFORM =~ /mswin|mingw|windows/
|
|
25
|
+
true
|
|
26
|
+
else
|
|
27
|
+
false
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def windows_server_2003?
|
|
32
|
+
return false unless windows?
|
|
33
|
+
|
|
34
|
+
require 'ruby-wmi'
|
|
35
|
+
|
|
36
|
+
host = WMI::Win32_OperatingSystem.find(:first)
|
|
37
|
+
(host.version && host.version.start_with?("5.2"))
|
|
32
38
|
end
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
end
|
data/lib/chef/provider.rb
CHANGED
|
@@ -103,7 +103,7 @@ class Chef
|
|
|
103
103
|
define_resource_requirements
|
|
104
104
|
process_resource_requirements
|
|
105
105
|
|
|
106
|
-
# user-defined providers including LWRPs may
|
|
106
|
+
# user-defined providers including LWRPs may
|
|
107
107
|
# not include whyrun support - if they don't support it
|
|
108
108
|
# we can't execute any actions while we're running in
|
|
109
109
|
# whyrun mode. Instead we 'fake' whyrun by documenting that
|
|
@@ -128,12 +128,16 @@ class Chef
|
|
|
128
128
|
requirements.run(@action)
|
|
129
129
|
end
|
|
130
130
|
|
|
131
|
+
def resource_updated?
|
|
132
|
+
!converge_actions.empty? || @new_resource.updated_by_last_action?
|
|
133
|
+
end
|
|
134
|
+
|
|
131
135
|
def set_updated_status
|
|
132
|
-
if
|
|
136
|
+
if !resource_updated?
|
|
133
137
|
events.resource_up_to_date(@new_resource, @action)
|
|
134
138
|
else
|
|
135
139
|
events.resource_updated(@new_resource, @action)
|
|
136
|
-
new_resource.updated_by_last_action(true)
|
|
140
|
+
new_resource.updated_by_last_action(true)
|
|
137
141
|
end
|
|
138
142
|
end
|
|
139
143
|
|
|
@@ -141,17 +145,16 @@ class Chef
|
|
|
141
145
|
@requirements ||= ResourceRequirements.new(@new_resource, run_context)
|
|
142
146
|
end
|
|
143
147
|
|
|
148
|
+
def converge_by(descriptions, &block)
|
|
149
|
+
converge_actions.add_action(descriptions, &block)
|
|
150
|
+
end
|
|
151
|
+
|
|
144
152
|
protected
|
|
145
153
|
|
|
146
154
|
def converge_actions
|
|
147
155
|
@converge_actions ||= ConvergeActions.new(@new_resource, run_context, @action)
|
|
148
156
|
end
|
|
149
157
|
|
|
150
|
-
def converge_by(descriptions, &block)
|
|
151
|
-
converge_actions.add_action(descriptions, &block)
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
|
|
155
158
|
def recipe_eval(&block)
|
|
156
159
|
# This block has new resource definitions within it, which
|
|
157
160
|
# essentially makes it an in-line Chef run. Save our current
|
|
@@ -162,7 +165,7 @@ class Chef
|
|
|
162
165
|
# this block cannot interact with resources outside, e.g.,
|
|
163
166
|
# manipulating notifies.
|
|
164
167
|
|
|
165
|
-
converge_by ("
|
|
168
|
+
converge_by ("evaluate block and run any associated actions") do
|
|
166
169
|
saved_run_context = @run_context
|
|
167
170
|
@run_context = @run_context.dup
|
|
168
171
|
@run_context.resource_collection = Chef::ResourceCollection.new
|
|
@@ -0,0 +1,35 @@
|
|
|
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 'chef/provider/windows_script'
|
|
20
|
+
|
|
21
|
+
class Chef
|
|
22
|
+
class Provider
|
|
23
|
+
class Batch < Chef::Provider::WindowsScript
|
|
24
|
+
|
|
25
|
+
def initialize (new_resource, run_context)
|
|
26
|
+
super(new_resource, run_context, '.bat')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def flags
|
|
30
|
+
@new_resource.flags.nil? ? '/c' : new_resource.flags + ' /c'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -16,18 +16,21 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
|
|
19
|
-
require 'chef/file_access_control'
|
|
20
19
|
require 'chef/provider/file'
|
|
21
|
-
require '
|
|
20
|
+
require 'chef/deprecation/provider/cookbook_file'
|
|
21
|
+
require 'chef/deprecation/warnings'
|
|
22
22
|
|
|
23
23
|
class Chef
|
|
24
24
|
class Provider
|
|
25
25
|
class CookbookFile < Chef::Provider::File
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
extend Chef::Deprecation::Warnings
|
|
28
|
+
include Chef::Deprecation::Provider::CookbookFile
|
|
29
|
+
add_deprecation_warnings_for(Chef::Deprecation::Provider::CookbookFile.instance_methods)
|
|
28
30
|
|
|
29
|
-
def
|
|
30
|
-
|
|
31
|
+
def initialize(new_resource, run_context)
|
|
32
|
+
@content_class = Chef::Provider::CookbookFile::Content
|
|
33
|
+
super
|
|
31
34
|
end
|
|
32
35
|
|
|
33
36
|
def load_current_resource
|
|
@@ -35,79 +38,7 @@ class Chef
|
|
|
35
38
|
super
|
|
36
39
|
end
|
|
37
40
|
|
|
38
|
-
def action_create
|
|
39
|
-
if file_cache_location && content_stale?
|
|
40
|
-
description = []
|
|
41
|
-
description << "create a new cookbook_file #{@new_resource.path}"
|
|
42
|
-
description << diff_current(file_cache_location)
|
|
43
|
-
converge_by(description) do
|
|
44
|
-
Chef::Log.debug("#{@new_resource} has new contents")
|
|
45
|
-
backup_new_resource
|
|
46
|
-
deploy_tempfile do |tempfile|
|
|
47
|
-
Chef::Log.debug("#{@new_resource} staging #{file_cache_location} to #{tempfile.path}")
|
|
48
|
-
tempfile.close
|
|
49
|
-
FileUtils.cp(file_cache_location, tempfile.path)
|
|
50
|
-
enforce_tempfile_inheritance(tempfile.path)
|
|
51
|
-
end
|
|
52
|
-
update_new_file_state
|
|
53
|
-
Chef::Log.info("#{@new_resource} created file #{@new_resource.path}")
|
|
54
|
-
end
|
|
55
|
-
else
|
|
56
|
-
set_all_access_controls
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def file_cache_location
|
|
61
|
-
@file_cache_location ||= begin
|
|
62
|
-
cookbook = run_context.cookbook_collection[resource_cookbook]
|
|
63
|
-
cookbook.preferred_filename_on_disk_location(node, :files, @new_resource.source, @new_resource.path)
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Determine the cookbook to get the file from. If new resource sets an
|
|
68
|
-
# explicit cookbook, use it, otherwise fall back to the implicit cookbook
|
|
69
|
-
# i.e., the cookbook the resource was declared in.
|
|
70
|
-
def resource_cookbook
|
|
71
|
-
@new_resource.cookbook || @new_resource.cookbook_name
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def backup_new_resource
|
|
75
|
-
if ::File.exists?(@new_resource.path)
|
|
76
|
-
backup @new_resource.path
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def content_stale?
|
|
81
|
-
( ! ::File.exist?(@new_resource.path)) || ( ! compare_content)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
protected
|
|
85
|
-
|
|
86
|
-
def enforce_tempfile_inheritance(tempfile_path)
|
|
87
|
-
# On the Windows platform, files in the temp directory
|
|
88
|
-
# default to not inherit unless the new resource
|
|
89
|
-
# specifies rights of
|
|
90
|
-
# some sort. Here we ensure that even when no rights
|
|
91
|
-
# are
|
|
92
|
-
# specified, the dacl's inheritance flag is set.
|
|
93
|
-
if Chef::Platform.windows? &&
|
|
94
|
-
@new_resource.rights.nil? &&
|
|
95
|
-
@new_resource.group.nil? &&
|
|
96
|
-
@new_resource.owner.nil? &&
|
|
97
|
-
@new_resource.deny_rights.nil?
|
|
98
|
-
|
|
99
|
-
securable_tempfile = Chef::ReservedNames::Win32::Security::SecurableObject.new(tempfile_path)
|
|
100
|
-
|
|
101
|
-
# No rights were specified, so the dacl will have
|
|
102
|
-
# no explicit aces
|
|
103
|
-
default_dacl = Chef::ReservedNames::Win32::Security::ACL.create([])
|
|
104
|
-
|
|
105
|
-
# In setting this default dacl, set inheritance to
|
|
106
|
-
# true
|
|
107
|
-
securable_tempfile.set_dacl(default_dacl, true)
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
41
|
end
|
|
112
42
|
end
|
|
113
43
|
end
|
|
44
|
+
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Lamont Granquist (<lamont@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 'chef/file_content_management/content_base'
|
|
20
|
+
require 'chef/file_content_management/tempfile'
|
|
21
|
+
|
|
22
|
+
class Chef
|
|
23
|
+
class Provider
|
|
24
|
+
class CookbookFile
|
|
25
|
+
class Content < Chef::FileContentManagement::ContentBase
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def file_for_provider
|
|
30
|
+
cookbook = run_context.cookbook_collection[resource_cookbook]
|
|
31
|
+
file_cache_location = cookbook.preferred_filename_on_disk_location(run_context.node, :files, @new_resource.source, @new_resource.path)
|
|
32
|
+
if file_cache_location.nil?
|
|
33
|
+
nil
|
|
34
|
+
else
|
|
35
|
+
tempfile = Chef::FileContentManagement::Tempfile.new(@new_resource).tempfile
|
|
36
|
+
tempfile.close
|
|
37
|
+
Chef::Log.debug("#{@new_resource} staging #{file_cache_location} to #{tempfile.path}")
|
|
38
|
+
FileUtils.cp(file_cache_location, tempfile.path)
|
|
39
|
+
tempfile
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def resource_cookbook
|
|
44
|
+
@new_resource.cookbook || @new_resource.cookbook_name
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
data/lib/chef/provider/deploy.rb
CHANGED
|
@@ -36,8 +36,8 @@ class Chef
|
|
|
36
36
|
def initialize(new_resource, run_context)
|
|
37
37
|
super(new_resource, run_context)
|
|
38
38
|
|
|
39
|
-
# will resolve to
|
|
40
|
-
# and will create a resource corresponding to that provider
|
|
39
|
+
# will resolve to either git or svn based on resource attributes,
|
|
40
|
+
# and will create a resource corresponding to that provider
|
|
41
41
|
@scm_provider = new_resource.scm_provider.new(new_resource, run_context)
|
|
42
42
|
|
|
43
43
|
# @configuration is not used by Deploy, it is only for backwards compat with
|
|
@@ -77,11 +77,11 @@ class Chef
|
|
|
77
77
|
#There is no reason to assume 2 deployments in a single chef run, hence fails in whyrun.
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
[ @new_resource.before_migrate, @new_resource.before_symlink,
|
|
80
|
+
[ @new_resource.before_migrate, @new_resource.before_symlink,
|
|
81
81
|
@new_resource.before_restart, @new_resource.after_restart ].each do |script|
|
|
82
82
|
requirements.assert(:deploy, :force_deploy) do |a|
|
|
83
83
|
callback_file = "#{release_path}/#{script}"
|
|
84
|
-
a.assertion do
|
|
84
|
+
a.assertion do
|
|
85
85
|
if script && script.class == String
|
|
86
86
|
::File.exist?(callback_file)
|
|
87
87
|
else
|
|
@@ -98,7 +98,7 @@ class Chef
|
|
|
98
98
|
def action_deploy
|
|
99
99
|
save_release_state
|
|
100
100
|
if deployed?(release_path )
|
|
101
|
-
if current_release?(release_path )
|
|
101
|
+
if current_release?(release_path )
|
|
102
102
|
Chef::Log.debug("#{@new_resource} is the latest version")
|
|
103
103
|
else
|
|
104
104
|
rollback_to release_path
|
|
@@ -113,7 +113,7 @@ class Chef
|
|
|
113
113
|
|
|
114
114
|
def action_force_deploy
|
|
115
115
|
if deployed?(release_path)
|
|
116
|
-
converge_by("delete deployed app at #{release_path} prior to force-deploy") do
|
|
116
|
+
converge_by("delete deployed app at #{release_path} prior to force-deploy") do
|
|
117
117
|
Chef::Log.info("Already deployed app at #{release_path}, forcing.")
|
|
118
118
|
FileUtils.rm_rf(release_path)
|
|
119
119
|
Chef::Log.info("#{@new_resource} forcing deploy of already deployed app at #{release_path}")
|
|
@@ -228,6 +228,10 @@ class Chef
|
|
|
228
228
|
end
|
|
229
229
|
|
|
230
230
|
def cleanup!
|
|
231
|
+
converge_by("update release history data") do
|
|
232
|
+
release_created(release_path)
|
|
233
|
+
end
|
|
234
|
+
|
|
231
235
|
chop = -1 - @new_resource.keep_releases
|
|
232
236
|
all_releases[0..chop].each do |old_release|
|
|
233
237
|
converge_by("remove old release #{old_release}") do
|
|
@@ -263,10 +267,10 @@ class Chef
|
|
|
263
267
|
def copy_cached_repo
|
|
264
268
|
target_dir_path = @new_resource.deploy_to + "/releases"
|
|
265
269
|
converge_by("deploy from repo to #{@target_dir_path} ") do
|
|
270
|
+
FileUtils.rm_rf(release_path) if ::File.exist?(release_path)
|
|
266
271
|
FileUtils.mkdir_p(target_dir_path)
|
|
267
272
|
FileUtils.cp_r(::File.join(@new_resource.destination, "."), release_path, :preserve => true)
|
|
268
273
|
Chef::Log.info "#{@new_resource} copied the cached checkout to #{release_path}"
|
|
269
|
-
release_created(release_path)
|
|
270
274
|
end
|
|
271
275
|
end
|
|
272
276
|
|
|
@@ -284,14 +288,14 @@ class Chef
|
|
|
284
288
|
end
|
|
285
289
|
|
|
286
290
|
def link_current_release_to_production
|
|
287
|
-
converge_by(["remove existing link at #{@new_resource.current_path}",
|
|
291
|
+
converge_by(["remove existing link at #{@new_resource.current_path}",
|
|
288
292
|
"link release #{release_path} into production at #{@new_resource.current_path}"]) do
|
|
289
293
|
FileUtils.rm_f(@new_resource.current_path)
|
|
290
294
|
begin
|
|
291
295
|
FileUtils.ln_sf(release_path, @new_resource.current_path)
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
296
|
+
rescue => e
|
|
297
|
+
raise Chef::Exceptions::FileNotFound.new("Cannot symlink current release to production: #{e.message}")
|
|
298
|
+
end
|
|
295
299
|
Chef::Log.info "#{@new_resource} linked release #{release_path} into production at #{@new_resource.current_path}"
|
|
296
300
|
end
|
|
297
301
|
enforce_ownership
|
|
@@ -299,7 +303,7 @@ class Chef
|
|
|
299
303
|
|
|
300
304
|
def run_symlinks_before_migrate
|
|
301
305
|
links_info = @new_resource.symlink_before_migrate.map { |src, dst| "#{src} => #{dst}" }.join(", ")
|
|
302
|
-
converge_by("make pre-migration
|
|
306
|
+
converge_by("make pre-migration symlinks: #{links_info}") do
|
|
303
307
|
@new_resource.symlink_before_migrate.each do |src, dest|
|
|
304
308
|
begin
|
|
305
309
|
FileUtils.ln_sf(@new_resource.shared_path + "/#{src}", release_path + "/#{dest}")
|
|
@@ -313,7 +317,7 @@ class Chef
|
|
|
313
317
|
|
|
314
318
|
def link_tempfiles_to_current_release
|
|
315
319
|
dirs_info = @new_resource.create_dirs_before_symlink.join(",")
|
|
316
|
-
@new_resource.create_dirs_before_symlink.each do |dir|
|
|
320
|
+
@new_resource.create_dirs_before_symlink.each do |dir|
|
|
317
321
|
create_dir_unless_exists(release_path + "/#{dir}")
|
|
318
322
|
end
|
|
319
323
|
Chef::Log.info("#{@new_resource} created directories before symlinking: #{dirs_info}")
|
|
@@ -348,15 +352,15 @@ class Chef
|
|
|
348
352
|
|
|
349
353
|
# Internal callback, called after copy_cached_repo.
|
|
350
354
|
# Override if you need to keep state externally.
|
|
351
|
-
# Note that YOU are responsible for implementing whyrun-friendly behavior
|
|
352
|
-
# in any actions you take in this callback.
|
|
355
|
+
# Note that YOU are responsible for implementing whyrun-friendly behavior
|
|
356
|
+
# in any actions you take in this callback.
|
|
353
357
|
def release_created(release_path)
|
|
354
358
|
end
|
|
355
359
|
|
|
356
360
|
# Note that YOU are responsible for using appropriate whyrun nomenclature
|
|
357
361
|
# Override if you need to keep state externally.
|
|
358
|
-
# Note that YOU are responsible for implementing whyrun-friendly behavior
|
|
359
|
-
# in any actions you take in this callback.
|
|
362
|
+
# Note that YOU are responsible for implementing whyrun-friendly behavior
|
|
363
|
+
# in any actions you take in this callback.
|
|
360
364
|
def release_deleted(release_path)
|
|
361
365
|
end
|
|
362
366
|
|
|
@@ -439,9 +443,9 @@ class Chef
|
|
|
439
443
|
yield
|
|
440
444
|
rescue ::Exception => e
|
|
441
445
|
if @new_resource.rollback_on_error
|
|
442
|
-
Chef::Log.warn "Error on deploying #{release_path}: #{e.message}"
|
|
446
|
+
Chef::Log.warn "Error on deploying #{release_path}: #{e.message}"
|
|
443
447
|
failed_release = release_path
|
|
444
|
-
|
|
448
|
+
|
|
445
449
|
if previous_release_path
|
|
446
450
|
@release_path = previous_release_path
|
|
447
451
|
rollback
|
|
@@ -452,7 +456,7 @@ class Chef
|
|
|
452
456
|
end
|
|
453
457
|
release_deleted(failed_release)
|
|
454
458
|
end
|
|
455
|
-
|
|
459
|
+
|
|
456
460
|
raise
|
|
457
461
|
end
|
|
458
462
|
|
|
@@ -32,6 +32,25 @@ class Chef
|
|
|
32
32
|
sorted_releases
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
+
def action_deploy
|
|
36
|
+
validate_release_history!
|
|
37
|
+
super
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def cleanup!
|
|
41
|
+
super
|
|
42
|
+
|
|
43
|
+
known_releases = sorted_releases
|
|
44
|
+
|
|
45
|
+
Dir["#{new_resource.deploy_to}/releases/*"].each do |release_dir|
|
|
46
|
+
unless known_releases.include?(release_dir)
|
|
47
|
+
converge_by("Remove unknown release in #{release_dir}") do
|
|
48
|
+
FileUtils.rm_rf(release_dir)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
35
54
|
protected
|
|
36
55
|
|
|
37
56
|
def release_created(release)
|
|
@@ -57,6 +76,14 @@ class Chef
|
|
|
57
76
|
cache
|
|
58
77
|
end
|
|
59
78
|
|
|
79
|
+
def validate_release_history!
|
|
80
|
+
sorted_releases do |release_list|
|
|
81
|
+
release_list.each do |path|
|
|
82
|
+
release_list.delete(path) unless ::File.exist?(path)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
60
87
|
def sorted_releases_from_filesystem
|
|
61
88
|
Dir.glob(new_resource.deploy_to + "/releases/*").sort_by { |d| ::File.ctime(d) }
|
|
62
89
|
end
|