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
data/lib/chef/environment.rb
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# Author:: Stephen Delano (<stephen@opscode.com>)
|
|
3
3
|
# Author:: Seth Falcon (<seth@opscode.com>)
|
|
4
4
|
# Author:: John Keiser (<jkeiser@ospcode.com>)
|
|
5
|
+
# Author:: Kyle Goodwin (<kgoodwin@primerevenue.com>)
|
|
5
6
|
# Copyright:: Copyright 2010-2011 Opscode, Inc.
|
|
6
7
|
# License:: Apache License, Version 2.0
|
|
7
8
|
#
|
|
@@ -236,7 +237,32 @@ class Chef
|
|
|
236
237
|
end
|
|
237
238
|
|
|
238
239
|
def self.load(name)
|
|
239
|
-
|
|
240
|
+
if Chef::Config[:solo]
|
|
241
|
+
load_from_file(name)
|
|
242
|
+
else
|
|
243
|
+
chef_server_rest.get_rest("environments/#{name}")
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
def self.load_from_file(name)
|
|
248
|
+
unless File.directory?(Chef::Config[:environment_path])
|
|
249
|
+
raise Chef::Exceptions::InvalidEnvironmentPath, "Environment path '#{Chef::Config[:environment_path]}' is invalid"
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
js_file = File.join(Chef::Config[:environment_path], "#{name}.json")
|
|
253
|
+
rb_file = File.join(Chef::Config[:environment_path], "#{name}.rb")
|
|
254
|
+
|
|
255
|
+
if File.exists?(js_file)
|
|
256
|
+
# from_json returns object.class => json_class in the JSON.
|
|
257
|
+
Chef::JSONCompat.from_json(IO.read(js_file))
|
|
258
|
+
elsif File.exists?(rb_file)
|
|
259
|
+
environment = Chef::Environment.new
|
|
260
|
+
environment.name(name)
|
|
261
|
+
environment.from_file(rb_file)
|
|
262
|
+
environment
|
|
263
|
+
else
|
|
264
|
+
raise Chef::Exceptions::EnvironmentNotFound, "Environment '#{name}' could not be loaded from disk"
|
|
265
|
+
end
|
|
240
266
|
end
|
|
241
267
|
|
|
242
268
|
def destroy
|
|
@@ -276,8 +302,13 @@ class Chef
|
|
|
276
302
|
|
|
277
303
|
def self.validate_cookbook_version(version)
|
|
278
304
|
begin
|
|
279
|
-
Chef::
|
|
280
|
-
|
|
305
|
+
if Chef::Config[:solo]
|
|
306
|
+
raise Chef::Exceptions::IllegalVersionConstraint,
|
|
307
|
+
"Environment cookbook version constraints not allowed in chef-solo"
|
|
308
|
+
else
|
|
309
|
+
Chef::VersionConstraint.new version
|
|
310
|
+
true
|
|
311
|
+
end
|
|
281
312
|
rescue ArgumentError
|
|
282
313
|
false
|
|
283
314
|
end
|
data/lib/chef/exceptions.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
3
|
# Author:: Seth Falcon (<seth@opscode.com>)
|
|
4
|
+
# Author:: Kyle Goodwin (<kgoodwin@primerevenue.com>)
|
|
4
5
|
# Copyright:: Copyright 2008-2010 Opscode, Inc.
|
|
5
6
|
# License:: Apache License, Version 2.0
|
|
6
7
|
#
|
|
@@ -97,6 +98,8 @@ class Chef
|
|
|
97
98
|
# Attempting to run windows code on a not-windows node
|
|
98
99
|
class Win32NotWindows < RuntimeError; end
|
|
99
100
|
class WindowsNotAdmin < RuntimeError; end
|
|
101
|
+
# Attempting to access a 64-bit only resource on a 32-bit Windows system
|
|
102
|
+
class Win32ArchitectureIncorrect < RuntimeError; end
|
|
100
103
|
class ObsoleteDependencySyntax < ArgumentError; end
|
|
101
104
|
class InvalidDataBagPath < ArgumentError; end
|
|
102
105
|
|
|
@@ -105,12 +108,16 @@ class Chef
|
|
|
105
108
|
class CookbookVersionConflict < ArgumentError ; end
|
|
106
109
|
|
|
107
110
|
# does not follow X.Y.Z format. ArgumentError?
|
|
111
|
+
class InvalidPlatformVersion < ArgumentError; end
|
|
108
112
|
class InvalidCookbookVersion < ArgumentError; end
|
|
109
113
|
|
|
110
114
|
# version constraint should be a string or array, or it doesn't
|
|
111
115
|
# match OP VERSION. ArgumentError?
|
|
112
116
|
class InvalidVersionConstraint < ArgumentError; end
|
|
113
117
|
|
|
118
|
+
# Version constraints are not allowed in chef-solo
|
|
119
|
+
class IllegalVersionConstraint < NotImplementedError; end
|
|
120
|
+
|
|
114
121
|
# File operation attempted but no permissions to perform it
|
|
115
122
|
class InsufficientPermissions < RuntimeError; end
|
|
116
123
|
|
|
@@ -130,8 +137,8 @@ class Chef
|
|
|
130
137
|
# of merged attributes will trigger this error.
|
|
131
138
|
class StaleAttributeRead < StandardError; end
|
|
132
139
|
|
|
133
|
-
#Registry Helper throws the following errors
|
|
134
|
-
class Win32RegArchitectureIncorrect <
|
|
140
|
+
# Registry Helper throws the following errors
|
|
141
|
+
class Win32RegArchitectureIncorrect < Win32ArchitectureIncorrect; end
|
|
135
142
|
class Win32RegHiveMissing < ArgumentError; end
|
|
136
143
|
class Win32RegKeyMissing < RuntimeError; end
|
|
137
144
|
class Win32RegValueMissing < RuntimeError; end
|
|
@@ -143,6 +150,18 @@ class Chef
|
|
|
143
150
|
class Win32RegBadValueSize < ArgumentError; end
|
|
144
151
|
class Win32RegTypesMismatch < ArgumentError; end
|
|
145
152
|
|
|
153
|
+
class InvalidEnvironmentPath < ArgumentError; end
|
|
154
|
+
class EnvironmentNotFound < RuntimeError; end
|
|
155
|
+
|
|
156
|
+
# File-like resource found a non-file (socket, pipe, directory, etc) at its destination
|
|
157
|
+
class FileTypeMismatch < RuntimeError; end
|
|
158
|
+
|
|
159
|
+
# File (or descendent) resource configured to manage symlink source, but
|
|
160
|
+
# the symlink that is there either loops or points to a nonexistent file
|
|
161
|
+
class InvalidSymlink < RuntimeError; end
|
|
162
|
+
|
|
163
|
+
class ChildConvergeError < RuntimeError; end
|
|
164
|
+
|
|
146
165
|
class MissingRole < RuntimeError
|
|
147
166
|
NULL = Object.new
|
|
148
167
|
|
|
@@ -271,5 +290,11 @@ class Chef
|
|
|
271
290
|
|
|
272
291
|
end # CookbookVersionSelection
|
|
273
292
|
|
|
293
|
+
# When the server sends a redirect, RFC 2616 states a user-agent should
|
|
294
|
+
# not follow it with a method other than GET or HEAD, unless a specific
|
|
295
|
+
# action is taken by the user. A redirect received as response to a
|
|
296
|
+
# non-GET and non-HEAD request will thus raise an InvalidRedirect.
|
|
297
|
+
class InvalidRedirect < StandardError; end
|
|
298
|
+
|
|
274
299
|
end
|
|
275
300
|
end
|
|
@@ -43,6 +43,11 @@ class Chef
|
|
|
43
43
|
should_update_mode? || should_update_owner? || should_update_group?
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
+
def define_resource_requirements
|
|
47
|
+
uid_from_resource(resource)
|
|
48
|
+
gid_from_resource(resource)
|
|
49
|
+
end
|
|
50
|
+
|
|
46
51
|
def describe_changes
|
|
47
52
|
changes = []
|
|
48
53
|
changes << "change mode from '#{mode_to_s(current_mode)}' to '#{mode_to_s(target_mode)}'" if should_update_mode?
|
|
@@ -60,7 +65,23 @@ class Chef
|
|
|
60
65
|
end
|
|
61
66
|
|
|
62
67
|
def should_update_owner?
|
|
63
|
-
|
|
68
|
+
if target_uid.nil?
|
|
69
|
+
# the user has not specified a permission on the new resource, so we never manage it with FAC
|
|
70
|
+
Chef::Log.debug("found target_uid == nil, so no owner was specified on resource, not managing owner")
|
|
71
|
+
return false
|
|
72
|
+
elsif current_uid.nil?
|
|
73
|
+
# the user has specified a permission, and we are creating a file, so always enforce permissions
|
|
74
|
+
Chef::Log.debug("found current_uid == nil, so we are creating a new file, updating owner")
|
|
75
|
+
return true
|
|
76
|
+
elsif target_uid != current_uid
|
|
77
|
+
# the user has specified a permission, and it does not match the file, so fix the permission
|
|
78
|
+
Chef::Log.debug("found target_uid != current_uid, updating owner")
|
|
79
|
+
return true
|
|
80
|
+
else
|
|
81
|
+
Chef::Log.debug("found target_uid == current_uid, not updating owner")
|
|
82
|
+
# the user has specified a permission, but it matches the file, so behave idempotently
|
|
83
|
+
return false
|
|
84
|
+
end
|
|
64
85
|
end
|
|
65
86
|
|
|
66
87
|
def set_owner!
|
|
@@ -103,7 +124,23 @@ class Chef
|
|
|
103
124
|
end
|
|
104
125
|
|
|
105
126
|
def should_update_group?
|
|
106
|
-
|
|
127
|
+
if target_gid.nil?
|
|
128
|
+
# the user has not specified a permission on the new resource, so we never manage it with FAC
|
|
129
|
+
Chef::Log.debug("found target_gid == nil, so no group was specified on resource, not managing group")
|
|
130
|
+
return false
|
|
131
|
+
elsif current_gid.nil?
|
|
132
|
+
# the user has specified a permission, and we are creating a file, so always enforce permissions
|
|
133
|
+
Chef::Log.debug("found current_gid == nil, so we are creating a new file, updating group")
|
|
134
|
+
return true
|
|
135
|
+
elsif target_gid != current_gid
|
|
136
|
+
# the user has specified a permission, and it does not match the file, so fix the permission
|
|
137
|
+
Chef::Log.debug("found target_gid != current_gid, updating group")
|
|
138
|
+
return true
|
|
139
|
+
else
|
|
140
|
+
Chef::Log.debug("found target_gid == current_gid, not updating group")
|
|
141
|
+
# the user has specified a permission, but it matches the file, so behave idempotently
|
|
142
|
+
return false
|
|
143
|
+
end
|
|
107
144
|
end
|
|
108
145
|
|
|
109
146
|
def set_group!
|
|
@@ -136,7 +173,23 @@ class Chef
|
|
|
136
173
|
end
|
|
137
174
|
|
|
138
175
|
def should_update_mode?
|
|
139
|
-
|
|
176
|
+
if target_mode.nil?
|
|
177
|
+
# the user has not specified a permission on the new resource, so we never manage it with FAC
|
|
178
|
+
Chef::Log.debug("found target_mode == nil, so no mode was specified on resource, not managing mode")
|
|
179
|
+
return false
|
|
180
|
+
elsif current_mode.nil?
|
|
181
|
+
# the user has specified a permission, and we are creating a file, so always enforce permissions
|
|
182
|
+
Chef::Log.debug("found current_mode == nil, so we are creating a new file, updating mode")
|
|
183
|
+
return true
|
|
184
|
+
elsif target_mode != current_mode
|
|
185
|
+
# the user has specified a permission, and it does not match the file, so fix the permission
|
|
186
|
+
Chef::Log.debug("found target_mode != current_mode, updating mode")
|
|
187
|
+
return true
|
|
188
|
+
else
|
|
189
|
+
Chef::Log.debug("found target_mode == current_mode, not updating mode")
|
|
190
|
+
# the user has specified a permission, but it matches the file, so behave idempotently
|
|
191
|
+
return false
|
|
192
|
+
end
|
|
140
193
|
end
|
|
141
194
|
|
|
142
195
|
def set_mode!
|
|
@@ -152,17 +205,21 @@ class Chef
|
|
|
152
205
|
end
|
|
153
206
|
|
|
154
207
|
def stat
|
|
155
|
-
if
|
|
208
|
+
if manage_symlink_attrs?
|
|
156
209
|
@stat ||= File.lstat(file)
|
|
157
210
|
else
|
|
158
211
|
@stat ||= File.stat(file)
|
|
159
212
|
end
|
|
160
213
|
end
|
|
161
214
|
|
|
215
|
+
def manage_symlink_attrs?
|
|
216
|
+
@provider.manage_symlink_access?
|
|
217
|
+
end
|
|
218
|
+
|
|
162
219
|
private
|
|
163
220
|
|
|
164
221
|
def chmod(mode, file)
|
|
165
|
-
if
|
|
222
|
+
if manage_symlink_attrs?
|
|
166
223
|
begin
|
|
167
224
|
File.lchmod(mode, file)
|
|
168
225
|
rescue NotImplementedError
|
|
@@ -174,7 +231,7 @@ class Chef
|
|
|
174
231
|
end
|
|
175
232
|
|
|
176
233
|
def chown(uid, gid, file)
|
|
177
|
-
if
|
|
234
|
+
if manage_symlink_attrs?
|
|
178
235
|
File.lchown(uid, gid, file)
|
|
179
236
|
else
|
|
180
237
|
File.chown(uid, gid, file)
|
|
@@ -192,7 +249,7 @@ class Chef
|
|
|
192
249
|
end
|
|
193
250
|
end
|
|
194
251
|
|
|
195
|
-
def uid_from_resource(resource)
|
|
252
|
+
def uid_from_resource(resource)
|
|
196
253
|
return nil if resource == nil or resource.owner.nil?
|
|
197
254
|
if resource.owner.kind_of?(String)
|
|
198
255
|
diminished_radix_complement( Etc.getpwnam(resource.owner).uid )
|
|
@@ -41,6 +41,10 @@ class Chef
|
|
|
41
41
|
set_dacl
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
+
def define_resource_requirements
|
|
45
|
+
# windows FAC has no assertions
|
|
46
|
+
end
|
|
47
|
+
|
|
44
48
|
def requires_changes?
|
|
45
49
|
should_update_dacl? || should_update_owner? || should_update_group?
|
|
46
50
|
end
|
|
@@ -214,17 +218,24 @@ class Chef
|
|
|
214
218
|
def calculate_flags(rights)
|
|
215
219
|
# Handle inheritance flags
|
|
216
220
|
flags = 0
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
221
|
+
|
|
222
|
+
#
|
|
223
|
+
# Configure child inheritence only if the the resource is some
|
|
224
|
+
# type of a directory.
|
|
225
|
+
#
|
|
226
|
+
if resource.is_a? Chef::Resource::Directory
|
|
227
|
+
case rights[:applies_to_children]
|
|
228
|
+
when :containers_only
|
|
229
|
+
flags |= CONTAINER_INHERIT_ACE
|
|
230
|
+
when :objects_only
|
|
231
|
+
flags |= OBJECT_INHERIT_ACE
|
|
232
|
+
when true
|
|
233
|
+
flags |= CONTAINER_INHERIT_ACE
|
|
234
|
+
flags |= OBJECT_INHERIT_ACE
|
|
235
|
+
when nil
|
|
236
|
+
flags |= CONTAINER_INHERIT_ACE
|
|
237
|
+
flags |= OBJECT_INHERIT_ACE
|
|
238
|
+
end
|
|
228
239
|
end
|
|
229
240
|
|
|
230
241
|
if rights[:applies_to_self] == false
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
class Chef
|
|
20
|
+
class FileContentManagement
|
|
21
|
+
class ContentBase
|
|
22
|
+
|
|
23
|
+
attr_reader :run_context
|
|
24
|
+
attr_reader :new_resource
|
|
25
|
+
attr_reader :current_resource
|
|
26
|
+
|
|
27
|
+
def initialize(new_resource, current_resource, run_context)
|
|
28
|
+
@new_resource = new_resource
|
|
29
|
+
@current_resource = current_resource
|
|
30
|
+
@run_context = run_context
|
|
31
|
+
@tempfile_loaded = false
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def tempfile
|
|
35
|
+
# tempfile may be nil, so we cannot use ||= here
|
|
36
|
+
if @tempfile_loaded
|
|
37
|
+
@tempfile
|
|
38
|
+
else
|
|
39
|
+
@tempfile_loaded = true
|
|
40
|
+
@tempfile = file_for_provider
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
#
|
|
47
|
+
# Return something that looks like a File or Tempfile and
|
|
48
|
+
# you must assume the provider will unlink this file. Copy
|
|
49
|
+
# the contents to a Tempfile if you need to.
|
|
50
|
+
#
|
|
51
|
+
def file_for_provider
|
|
52
|
+
raise "class must implement file_for_provider!"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
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/deploy/cp'
|
|
20
|
+
require 'chef/file_content_management/deploy/mv_unix'
|
|
21
|
+
if Chef::Platform.windows?
|
|
22
|
+
require 'chef/file_content_management/deploy/mv_windows'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class Chef
|
|
26
|
+
class FileContentManagement
|
|
27
|
+
class Deploy
|
|
28
|
+
def self.strategy(atomic_update)
|
|
29
|
+
if atomic_update
|
|
30
|
+
Chef::Platform.windows? ? MvWindows.new() : MvUnix.new()
|
|
31
|
+
else
|
|
32
|
+
Cp.new()
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
#
|
|
20
|
+
# PURPOSE: This strategy preserves the inode, and will preserve modes + ownership
|
|
21
|
+
# even if the user running chef cannot create that ownership (but has
|
|
22
|
+
# rights to the file). It is vulnerable to crashes in the middle of
|
|
23
|
+
# writing the file which could result in corruption or zero-length files.
|
|
24
|
+
#
|
|
25
|
+
|
|
26
|
+
class Chef
|
|
27
|
+
class FileContentManagement
|
|
28
|
+
class Deploy
|
|
29
|
+
#
|
|
30
|
+
# PURPOSE: This strategy preserves the inode, and will preserve modes + ownership
|
|
31
|
+
# even if the user running chef cannot create that ownership (but has
|
|
32
|
+
# rights to the file). It is vulnerable to crashes in the middle of
|
|
33
|
+
# writing the file which could result in corruption or zero-length files.
|
|
34
|
+
#
|
|
35
|
+
class Cp
|
|
36
|
+
def create(file)
|
|
37
|
+
Chef::Log.debug("touching #{file} to create it")
|
|
38
|
+
FileUtils.touch(file)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def deploy(src, dst)
|
|
42
|
+
Chef::Log.debug("copying temporary file #{src} into place at #{dst}")
|
|
43
|
+
FileUtils.cp(src, dst)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|