chef 10.34.6-x86-mingw32 → 11.6.2-x86-mingw32
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.
- checksums.yaml +5 -13
- data/CONTRIBUTING.md +155 -0
- data/README.md +89 -0
- data/Rakefile +18 -1
- data/bin/chef-apply +25 -0
- data/bin/chef-service-manager +37 -0
- data/bin/chef-shell +34 -0
- data/bin/shef +6 -5
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/{shef.1.html → chef-shell.1.html} +49 -46
- data/distro/common/html/chef-solo.8.html +4 -4
- data/distro/common/html/chef-solr.8.html +5 -5
- 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 +4 -4
- data/distro/common/html/knife-data-bag.1.html +4 -4
- data/distro/common/html/knife-environment.1.html +4 -4
- data/distro/common/html/knife-exec.1.html +9 -9
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +8 -13
- data/distro/common/man/man1/{shef.1 → chef-shell.1} +21 -57
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +0 -99
- 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 +1 -1
- data/distro/common/man/man1/knife-data-bag.1 +1 -1
- data/distro/common/man/man1/knife-environment.1 +0 -168
- data/distro/common/man/man1/knife-exec.1 +4 -7
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +3 -6
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +1 -1
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/common/markdown/man1/{shef.mkd → chef-shell.mkd} +49 -43
- data/distro/common/markdown/man1/knife-exec.mkd +11 -6
- data/distro/common/markdown/man1/knife.mkd +4 -9
- data/distro/debian/etc/default/chef-client +0 -1
- data/distro/debian/etc/init.d/chef-client +6 -4
- data/distro/windows/service_manager.rb +2 -146
- data/lib/chef.rb +3 -6
- data/lib/chef/api_client.rb +20 -130
- data/lib/chef/api_client/registration.rb +126 -0
- data/lib/chef/application.rb +68 -18
- data/lib/chef/application/apply.rb +162 -0
- data/lib/chef/application/client.rb +37 -22
- data/lib/chef/application/knife.rb +2 -4
- data/lib/chef/application/solo.rb +27 -13
- data/lib/chef/application/windows_service.rb +114 -54
- data/lib/chef/application/windows_service_manager.rb +179 -0
- data/lib/chef/applications.rb +1 -0
- data/lib/chef/chef_fs.rb +9 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
- data/lib/chef/chef_fs/command_line.rb +284 -0
- 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_pattern.rb +312 -0
- data/lib/chef/chef_fs/file_system.rb +426 -0
- 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_dir.rb +47 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +180 -0
- 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 +60 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +121 -0
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +110 -0
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +223 -0
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +85 -0
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +149 -0
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +69 -0
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +72 -0
- 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 +90 -0
- data/lib/chef/chef_fs/file_system/file_system_error.rb +33 -0
- data/lib/chef/chef_fs/file_system/file_system_root_dir.rb +31 -0
- 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 +31 -0
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +55 -0
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +36 -0
- data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
- 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 +113 -0
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +177 -0
- data/lib/chef/chef_fs/knife.rb +116 -0
- data/lib/chef/chef_fs/parallelizer.rb +129 -0
- data/lib/chef/chef_fs/path_utils.rb +90 -0
- data/lib/chef/chef_fs/raw_request.rb +79 -0
- data/lib/chef/client.rb +111 -34
- data/lib/chef/config.rb +111 -102
- data/lib/chef/cookbook/chefignore.rb +2 -1
- data/lib/chef/cookbook/metadata.rb +0 -2
- data/lib/chef/cookbook/syntax_check.rb +76 -14
- data/lib/chef/cookbook_loader.rb +39 -26
- data/lib/chef/cookbook_uploader.rb +16 -9
- data/lib/chef/cookbook_version.rb +2 -410
- data/lib/chef/daemon.rb +24 -19
- data/lib/chef/data_bag.rb +20 -104
- data/lib/chef/data_bag_item.rb +2 -65
- 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/digester.rb +73 -0
- data/lib/chef/dsl.rb +6 -0
- data/lib/chef/dsl/data_query.rb +71 -0
- data/lib/chef/dsl/include_attribute.rb +63 -0
- data/lib/chef/dsl/include_recipe.rb +45 -0
- data/lib/chef/dsl/platform_introspection.rb +218 -0
- data/lib/chef/dsl/recipe.rb +87 -0
- data/lib/chef/dsl/registry_helper.rb +59 -0
- data/lib/chef/encrypted_data_bag_item.rb +171 -24
- data/lib/chef/environment.rb +39 -179
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +107 -8
- 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/base.rb +4 -1
- 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/resource_failure_inspector.rb +8 -0
- data/lib/chef/json_compat.rb +15 -14
- data/lib/chef/knife.rb +99 -41
- data/lib/chef/knife/bootstrap.rb +46 -2
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/centos5-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/chef-full.erb +1 -1
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +1 -1
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +1 -1
- data/lib/chef/knife/client_show.rb +2 -5
- data/lib/chef/knife/configure.rb +19 -17
- data/lib/chef/knife/cookbook_create.rb +6 -5
- data/lib/chef/knife/cookbook_download.rb +13 -5
- data/lib/chef/knife/cookbook_metadata.rb +1 -0
- data/lib/chef/knife/cookbook_site_share.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +4 -2
- data/lib/chef/knife/cookbook_upload.rb +4 -4
- data/lib/chef/knife/core/bootstrap_context.rb +11 -5
- data/lib/chef/knife/core/generic_presenter.rb +42 -13
- data/lib/chef/knife/core/node_editor.rb +36 -16
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +43 -12
- data/lib/chef/knife/core/text_formatter.rb +23 -37
- data/lib/chef/knife/core/ui.rb +34 -13
- data/lib/chef/knife/delete.rb +106 -0
- data/lib/chef/knife/deps.rb +139 -0
- data/lib/chef/knife/diff.rb +63 -0
- data/lib/chef/knife/download.rb +63 -0
- data/lib/chef/knife/edit.rb +76 -0
- data/lib/chef/knife/environment_show.rb +2 -0
- data/lib/chef/knife/exec.rb +5 -5
- data/lib/chef/knife/help_topics.rb +1 -1
- data/lib/chef/knife/index_rebuild.rb +91 -7
- data/lib/chef/knife/list.rb +153 -0
- 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 +64 -0
- data/lib/chef/knife/role_show.rb +2 -4
- data/lib/chef/knife/search.rb +45 -28
- data/lib/chef/knife/show.rb +55 -0
- data/lib/chef/knife/ssh.rb +14 -2
- data/lib/chef/knife/upload.rb +69 -0
- data/lib/chef/knife/user_create.rb +93 -0
- data/lib/chef/knife/user_delete.rb +46 -0
- data/lib/chef/knife/user_edit.rb +53 -0
- data/lib/chef/{provider/whyrun_safe_ruby_block.rb → knife/user_list.rb} +21 -9
- data/lib/chef/knife/user_reregister.rb +59 -0
- data/lib/chef/knife/user_show.rb +49 -0
- data/lib/chef/knife/xargs.rb +265 -0
- data/lib/chef/log.rb +2 -2
- data/lib/chef/mixin/checksum.rb +3 -3
- data/lib/chef/mixin/deep_merge.rb +78 -194
- data/lib/chef/mixin/deprecation.rb +35 -0
- data/lib/chef/mixin/file_class.rb +0 -9
- data/lib/chef/mixin/language.rb +22 -223
- data/lib/chef/mixin/language_include_attribute.rb +10 -36
- data/lib/chef/mixin/language_include_recipe.rb +7 -33
- data/lib/chef/mixin/params_validate.rb +0 -3
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +10 -61
- data/lib/chef/mixin/securable.rb +32 -7
- data/lib/chef/mixin/template.rb +156 -26
- data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
- data/lib/chef/mixins.rb +1 -5
- data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/monkey_patches/file.rb} +6 -14
- data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
- data/lib/chef/monkey_patches/net_http.rb +0 -34
- data/lib/chef/monkey_patches/securerandom.rb +44 -0
- data/lib/chef/monologger.rb +93 -0
- data/lib/chef/node.rb +139 -308
- data/lib/chef/node/attribute.rb +367 -473
- data/lib/chef/node/attribute_collections.rb +206 -0
- data/lib/chef/node/immutable_collections.rb +186 -0
- data/lib/chef/platform.rb +4 -496
- data/lib/chef/platform/provider_mapping.rb +529 -0
- data/lib/chef/{mixin/check_helper.rb → platform/query_helpers.rb} +20 -9
- data/lib/chef/provider.rb +14 -58
- data/lib/chef/provider/batch.rb +35 -0
- data/lib/chef/provider/breakpoint.rb +6 -6
- data/lib/chef/provider/cookbook_file.rb +11 -80
- data/lib/chef/provider/cookbook_file/content.rb +49 -0
- data/lib/chef/provider/deploy.rb +26 -21
- data/lib/chef/provider/deploy/revision.rb +27 -0
- data/lib/chef/provider/directory.rb +12 -18
- data/lib/chef/provider/execute.rb +22 -5
- data/lib/chef/provider/file.rb +297 -248
- data/lib/chef/provider/file/content.rb +39 -0
- data/lib/chef/provider/git.rb +76 -43
- data/lib/chef/provider/group.rb +31 -51
- data/lib/chef/provider/group/dscl.rb +13 -53
- data/lib/chef/provider/group/gpasswd.rb +19 -14
- data/lib/chef/provider/group/groupadd.rb +1 -41
- data/lib/chef/provider/group/groupmod.rb +36 -46
- data/lib/chef/provider/group/pw.rb +16 -59
- data/lib/chef/provider/group/suse.rb +13 -16
- data/lib/chef/provider/group/usermod.rb +18 -40
- data/lib/chef/provider/group/windows.rb +6 -13
- data/lib/chef/provider/http_request.rb +25 -42
- data/lib/chef/provider/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 +12 -3
- data/lib/chef/provider/lwrp_base.rb +150 -0
- 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/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +4 -1
- data/lib/chef/provider/package/smartos.rb +47 -36
- data/lib/chef/provider/package/zypper.rb +45 -55
- data/lib/chef/provider/powershell_script.rb +77 -0
- data/lib/chef/provider/registry_key.rb +156 -0
- data/lib/chef/provider/remote_directory.rb +6 -5
- data/lib/chef/provider/remote_file.rb +13 -100
- 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/ruby_block.rb +5 -2
- data/lib/chef/provider/script.rb +14 -2
- data/lib/chef/provider/service.rb +15 -0
- data/lib/chef/provider/service/init.rb +9 -7
- data/lib/chef/provider/service/macosx.rb +29 -81
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/service/solaris.rb +6 -5
- data/lib/chef/provider/template.rb +16 -81
- data/lib/chef/provider/template/content.rb +61 -0
- data/lib/chef/provider/template_finder.rb +61 -0
- data/lib/chef/provider/user.rb +0 -1
- data/lib/chef/provider/user/dscl.rb +175 -568
- data/lib/chef/provider/user/useradd.rb +50 -54
- data/lib/chef/provider/windows_script.rb +73 -0
- data/lib/chef/providers.rb +18 -1
- data/lib/chef/recipe.rb +14 -8
- data/lib/chef/resource.rb +52 -146
- data/lib/chef/resource/{whyrun_safe_ruby_block.rb → batch.rb} +10 -10
- 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/group.rb +1 -11
- data/lib/chef/resource/http_request.rb +2 -1
- data/lib/chef/resource/link.rb +17 -0
- data/lib/chef/resource/lwrp_base.rb +132 -0
- data/lib/chef/resource/mount.rb +39 -13
- data/lib/chef/resource/powershell_script.rb +31 -0
- data/lib/chef/resource/registry_key.rb +86 -0
- data/lib/chef/resource/remote_directory.rb +6 -5
- data/lib/chef/resource/remote_file.rb +62 -25
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/service.rb +14 -0
- data/lib/chef/resource/template.rb +145 -0
- data/lib/chef/resource/user.rb +0 -18
- data/lib/chef/resource/windows_script.rb +62 -0
- data/lib/chef/resource_collection.rb +69 -31
- data/lib/chef/resource_reporter.rb +81 -52
- data/lib/chef/resources.rb +4 -1
- data/lib/chef/rest.rb +55 -127
- data/lib/chef/rest/auth_credentials.rb +4 -20
- data/lib/chef/rest/rest_request.rb +7 -8
- data/lib/chef/role.rb +1 -97
- data/lib/chef/run_context.rb +108 -130
- data/lib/chef/run_context/cookbook_compiler.rb +280 -0
- data/lib/chef/run_list.rb +0 -2
- data/lib/chef/run_list/run_list_expansion.rb +1 -16
- data/lib/chef/run_lock.rb +96 -0
- data/lib/chef/runner.rb +28 -6
- data/lib/chef/sandbox.rb +15 -148
- data/lib/chef/scan_access_control.rb +8 -5
- data/lib/chef/search/query.rb +2 -2
- data/lib/chef/shef/ext.rb +3 -575
- data/lib/chef/{shef.rb → shell.rb} +35 -40
- data/lib/chef/shell/ext.rb +593 -0
- data/lib/chef/{shef → shell}/model_wrapper.rb +3 -3
- data/lib/chef/{shef/shef_rest.rb → shell/shell_rest.rb} +4 -4
- data/lib/chef/{shef/shef_session.rb → shell/shell_session.rb} +15 -13
- data/lib/chef/shell_out.rb +7 -0
- data/lib/chef/user.rb +182 -0
- 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_group.rb +1 -5
- 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/{index_queue.rb → version_constraint/platform.rb} +11 -14
- data/lib/chef/win32/api/file.rb +8 -2
- data/lib/chef/win32/api/security.rb +45 -1
- data/lib/chef/win32/registry.rb +382 -0
- data/lib/chef/win32/security.rb +19 -0
- 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/attributes/default.rb +10 -9
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- 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_subcommand/test_yourself.rb +8 -0
- data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
- data/spec/data/nodes/default.rb +3 -3
- data/spec/data/nodes/test.example.com.rb +3 -3
- data/spec/data/nodes/test.rb +3 -3
- data/spec/data/null_config.rb +1 -0
- data/spec/data/partial_one.erb +1 -0
- data/spec/data/remote_file/nyan_cat.png.gz +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
- data/spec/data/shef-config.rb +10 -0
- data/spec/functional/dsl/registry_helper_spec.rb +63 -0
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
- data/spec/functional/knife/exec_spec.rb +3 -3
- data/spec/functional/knife/smoke_test.rb +34 -0
- data/spec/functional/knife/ssh_spec.rb +5 -1
- 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 +15 -9
- data/spec/functional/resource/deploy_revision_spec.rb +180 -0
- data/spec/functional/resource/directory_spec.rb +5 -1
- data/spec/functional/resource/file_spec.rb +71 -21
- data/spec/functional/resource/git_spec.rb +259 -0
- data/spec/functional/resource/link_spec.rb +424 -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 +576 -0
- data/spec/functional/resource/remote_directory_spec.rb +143 -37
- data/spec/functional/resource/remote_file_spec.rb +99 -13
- data/spec/functional/resource/template_spec.rb +180 -3
- data/spec/functional/resource/user_spec.rb +547 -0
- data/spec/functional/run_lock_spec.rb +243 -0
- data/spec/functional/shell_spec.rb +102 -0
- data/spec/functional/win32/registry_helper_spec.rb +632 -0
- data/spec/functional/win32/security_spec.rb +37 -0
- 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 +49 -13
- data/spec/stress/win32/security_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +33 -3
- data/spec/support/lib/chef/resource/cat.rb +3 -5
- data/spec/support/lib/chef/resource/one_two_three_four.rb +8 -10
- data/spec/support/lib/chef/resource/zen_master.rb +8 -10
- data/spec/support/platform_helpers.rb +46 -13
- data/spec/support/platforms/win32/spec_service.rb +59 -0
- data/spec/support/shared/functional/diff_disabled.rb +10 -0
- data/spec/support/shared/functional/directory_resource.rb +129 -38
- data/spec/support/shared/functional/file_resource.rb +837 -71
- data/spec/support/shared/functional/securable_resource.rb +189 -58
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +385 -0
- 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 +70 -0
- data/spec/support/shared/unit/platform_introspector.rb +162 -0
- 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/api_client/registration_spec.rb +172 -0
- data/spec/unit/api_client_spec.rb +78 -156
- data/spec/unit/application/apply.rb +84 -0
- data/spec/unit/application/client_spec.rb +16 -14
- data/spec/unit/application/knife_spec.rb +17 -0
- data/spec/unit/application/solo_spec.rb +1 -1
- data/spec/unit/application_spec.rb +113 -3
- data/spec/unit/checksum/storage/filesystem_spec.rb +1 -1
- data/spec/unit/chef_fs/diff_spec.rb +328 -0
- data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
- data/spec/unit/chef_fs/file_system_spec.rb +135 -0
- data/spec/unit/client_spec.rb +195 -23
- data/spec/unit/config_spec.rb +102 -51
- data/spec/unit/cookbook/syntax_check_spec.rb +75 -111
- data/spec/unit/cookbook_loader_spec.rb +154 -91
- data/spec/unit/cookbook_manifest_spec.rb +81 -81
- data/spec/unit/cookbook_spec.rb +3 -20
- data/spec/unit/cookbook_version_spec.rb +23 -122
- data/spec/unit/daemon_spec.rb +24 -19
- data/spec/unit/data_bag_spec.rb +13 -4
- data/spec/unit/deprecation_spec.rb +86 -0
- data/spec/unit/digester_spec.rb +50 -0
- data/spec/unit/dsl/data_query_spec.rb +66 -0
- data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
- data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +197 -157
- data/spec/unit/environment_spec.rb +94 -126
- data/spec/unit/exceptions_spec.rb +8 -4
- 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 +6 -5
- data/spec/unit/json_compat_spec.rb +8 -0
- data/spec/unit/knife/bootstrap_spec.rb +130 -29
- data/spec/unit/knife/configure_spec.rb +64 -45
- data/spec/unit/knife/cookbook_download_spec.rb +24 -3
- data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
- data/spec/unit/knife/cookbook_test_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +39 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +79 -62
- data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
- data/spec/unit/knife/core/ui_spec.rb +196 -124
- data/spec/unit/knife/data_bag_create_spec.rb +9 -0
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -4
- data/spec/unit/knife/data_bag_from_file_spec.rb +4 -6
- data/spec/unit/knife/data_bag_show_spec.rb +11 -4
- data/spec/unit/knife/index_rebuild_spec.rb +96 -33
- data/spec/unit/knife/knife_help.rb +7 -7
- data/spec/unit/knife/node_edit_spec.rb +6 -33
- data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
- data/spec/unit/knife/node_run_list_set_spec.rb +140 -0
- data/spec/unit/knife/ssh_spec.rb +12 -15
- data/spec/unit/knife/status_spec.rb +2 -2
- data/spec/unit/knife/user_create_spec.rb +86 -0
- data/spec/unit/knife/user_delete_spec.rb +39 -0
- data/spec/unit/knife/user_edit_spec.rb +42 -0
- data/spec/unit/knife/user_list_spec.rb +32 -0
- data/spec/unit/knife/user_reregister_spec.rb +53 -0
- data/spec/unit/knife/user_show_spec.rb +41 -0
- data/spec/unit/knife_spec.rb +74 -0
- data/spec/unit/lwrp_spec.rb +102 -60
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/deep_merge_spec.rb +130 -791
- data/spec/unit/mixin/deprecation_spec.rb +23 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +7 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -2
- data/spec/unit/mixin/securable_spec.rb +5 -3
- data/spec/unit/mixin/template_spec.rb +145 -14
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
- data/spec/unit/node/attribute_spec.rb +273 -173
- data/spec/unit/node/immutable_collections_spec.rb +139 -0
- data/spec/unit/node_spec.rb +418 -370
- data/spec/unit/platform_spec.rb +21 -8
- data/spec/unit/provider/breakpoint_spec.rb +8 -8
- data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
- data/spec/unit/provider/cookbook_file_spec.rb +26 -187
- 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 +99 -67
- data/spec/unit/provider/env_spec.rb +2 -2
- 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 -475
- data/spec/unit/provider/git_spec.rb +224 -28
- data/spec/unit/provider/group/dscl_spec.rb +0 -36
- data/spec/unit/provider/group/gpasswd_spec.rb +9 -16
- data/spec/unit/provider/group/groupadd_spec.rb +4 -3
- data/spec/unit/provider/group/groupmod_spec.rb +1 -0
- data/spec/unit/provider/group/pw_spec.rb +15 -12
- data/spec/unit/provider/group/usermod_spec.rb +9 -22
- data/spec/unit/provider/group/windows_spec.rb +8 -0
- data/spec/unit/provider/group_spec.rb +6 -28
- data/spec/unit/provider/http_request_spec.rb +28 -69
- data/spec/unit/provider/ifconfig/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/ohai_spec.rb +4 -4
- data/spec/unit/provider/package/apt_spec.rb +0 -1
- data/spec/unit/provider/package/ips_spec.rb +0 -1
- data/spec/unit/provider/package/rpm_spec.rb +0 -12
- data/spec/unit/provider/package/rubygems_spec.rb +1 -1
- data/spec/unit/provider/package/smartos_spec.rb +3 -2
- data/spec/unit/provider/package/zypper_spec.rb +84 -22
- data/spec/unit/provider/package_spec.rb +7 -9
- data/spec/unit/provider/powershell_spec.rb +38 -0
- data/spec/unit/provider/registry_key_spec.rb +269 -0
- data/spec/unit/provider/remote_directory_spec.rb +7 -7
- 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 -259
- data/spec/unit/provider/route_spec.rb +29 -12
- data/spec/unit/provider/ruby_block_spec.rb +8 -0
- data/spec/unit/provider/service/arch_service_spec.rb +5 -5
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/freebsd_service_spec.rb +5 -5
- data/spec/unit/provider/service/init_service_spec.rb +27 -4
- data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
- data/spec/unit/provider/service/invokercd_service_spec.rb +4 -4
- data/spec/unit/provider/service/macosx_spec.rb +176 -207
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/simple_service_spec.rb +3 -3
- data/spec/unit/provider/service/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 +11 -11
- data/spec/unit/provider/service_spec.rb +3 -3
- data/spec/unit/provider/subversion_spec.rb +1 -1
- data/spec/unit/provider/template/content_spec.rb +78 -0
- data/spec/unit/provider/template_spec.rb +52 -160
- data/spec/unit/provider/user/dscl_spec.rb +285 -681
- data/spec/unit/provider/user/solaris_spec.rb +39 -373
- data/spec/unit/provider/user/useradd_spec.rb +12 -379
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/recipe_spec.rb +10 -8
- data/spec/unit/registry_helper_spec.rb +376 -0
- 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 -11
- data/spec/unit/resource/powershell_spec.rb +48 -0
- data/spec/unit/resource/registry_key_spec.rb +171 -0
- data/spec/unit/resource/remote_file_spec.rb +63 -25
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/ruby_block_spec.rb +7 -3
- data/spec/unit/resource/script_spec.rb +13 -36
- data/spec/unit/resource/service_spec.rb +11 -0
- 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 +197 -5
- data/spec/unit/rest/auth_credentials_spec.rb +4 -21
- data/spec/unit/rest_spec.rb +134 -284
- data/spec/unit/run_context/cookbook_compiler_spec.rb +190 -0
- data/spec/unit/run_context_spec.rb +18 -4
- data/spec/unit/run_list_spec.rb +0 -209
- data/spec/unit/run_lock_spec.rb +37 -0
- data/spec/unit/runner_spec.rb +102 -3
- data/spec/unit/scan_access_control_spec.rb +8 -6
- data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
- data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
- data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +16 -58
- data/spec/unit/shell_out_spec.rb +18 -0
- data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
- data/spec/unit/user_spec.rb +255 -0
- 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 +493 -264
- data/README.rdoc +0 -177
- data/distro/common/html/knife-recipe.1.html +0 -92
- data/lib/chef/certificate.rb +0 -161
- data/lib/chef/checksum.rb +0 -167
- data/lib/chef/checksum_cache.rb +0 -190
- data/lib/chef/cookbook_version_selector.rb +0 -168
- data/lib/chef/couchdb.rb +0 -246
- data/lib/chef/index_queue/amqp_client.rb +0 -116
- data/lib/chef/index_queue/consumer.rb +0 -76
- data/lib/chef/index_queue/indexable.rb +0 -109
- data/lib/chef/knife/bootstrap/ubuntu12.10-gems.erb +0 -60
- data/lib/chef/monkey_patches/dir.rb +0 -36
- data/lib/chef/monkey_patches/moneta.rb +0 -50
- data/lib/chef/monkey_patches/uri.rb +0 -70
- data/lib/chef/openid_registration.rb +0 -187
- data/lib/chef/solr_query.rb +0 -187
- data/lib/chef/solr_query/lucene.treetop +0 -150
- data/lib/chef/solr_query/lucene_nodes.rb +0 -285
- data/lib/chef/solr_query/query_transform.rb +0 -65
- data/lib/chef/solr_query/solr_http_request.rb +0 -132
- data/lib/chef/webui_user.rb +0 -231
- data/spec/data/mac_users/10.7-8.plist.xml +0 -559
- data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
- data/spec/data/mac_users/10.7.plist.xml +0 -559
- data/spec/data/mac_users/10.7.shadow.xml +0 -11
- data/spec/data/mac_users/10.8.plist.xml +0 -559
- data/spec/data/mac_users/10.8.shadow.xml +0 -21
- data/spec/data/mac_users/10.9.plist.xml +0 -560
- data/spec/data/mac_users/10.9.shadow.xml +0 -21
- data/spec/functional/resource/base.rb +0 -40
- data/spec/functional/resource/group_spec.rb +0 -343
- data/spec/functional/resource/user/dscl_spec.rb +0 -199
- data/spec/unit/certificate_spec.rb +0 -76
- data/spec/unit/checksum_cache_spec.rb +0 -209
- data/spec/unit/checksum_spec.rb +0 -94
- data/spec/unit/couchdb_spec.rb +0 -274
- data/spec/unit/index_queue_spec.rb +0 -391
- data/spec/unit/mixin/language_spec.rb +0 -305
- data/spec/unit/openid_registration_spec.rb +0 -153
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +0 -47
- data/spec/unit/solr_query/query_transform_spec.rb +0 -454
- data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
- data/spec/unit/solr_query_spec.rb +0 -203
- data/spec/unit/webui_user_spec.rb +0 -238
data/lib/chef/log.rb
CHANGED
@@ -18,6 +18,7 @@
|
|
18
18
|
# limitations under the License.
|
19
19
|
|
20
20
|
require 'logger'
|
21
|
+
require 'chef/monologger'
|
21
22
|
require 'mixlib/log'
|
22
23
|
|
23
24
|
class Chef
|
@@ -25,8 +26,7 @@ class Chef
|
|
25
26
|
extend Mixlib::Log
|
26
27
|
|
27
28
|
# Force initialization of the primary log device (@logger)
|
28
|
-
init
|
29
|
-
|
29
|
+
init(MonoLogger.new(STDOUT))
|
30
30
|
|
31
31
|
class Formatter
|
32
32
|
def self.show_time=(*args)
|
data/lib/chef/mixin/checksum.rb
CHANGED
@@ -17,16 +17,16 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require 'digest/sha2'
|
20
|
-
require 'chef/
|
20
|
+
require 'chef/digester'
|
21
21
|
|
22
22
|
class Chef
|
23
23
|
module Mixin
|
24
24
|
module Checksum
|
25
25
|
|
26
26
|
def checksum(file)
|
27
|
-
Chef::
|
27
|
+
Chef::Digester.checksum_for_file(file)
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -8,9 +8,9 @@
|
|
8
8
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
9
|
# you may not use this file except in compliance with the License.
|
10
10
|
# You may obtain a copy of the License at
|
11
|
-
#
|
11
|
+
#
|
12
12
|
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
13
|
+
#
|
14
14
|
# Unless required by applicable law or agreed to in writing, software
|
15
15
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
16
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
@@ -26,20 +26,25 @@ class Chef
|
|
26
26
|
# deep_merge is available under the MIT license from
|
27
27
|
# http://trac.misuse.org/science/wiki/DeepMerge
|
28
28
|
module DeepMerge
|
29
|
-
extend self
|
30
29
|
|
31
|
-
|
32
|
-
first = Mash.new(first) unless first.kind_of?(Mash)
|
33
|
-
second = Mash.new(second) unless second.kind_of?(Mash)
|
30
|
+
class InvalidSubtractiveMerge < ArgumentError; end
|
34
31
|
|
35
|
-
DeepMerge.deep_merge(second, first, {:preserve_unmergeables => false})
|
36
|
-
end
|
37
32
|
|
38
|
-
|
33
|
+
OLD_KNOCKOUT_PREFIX = "!merge:".freeze
|
34
|
+
|
35
|
+
# Regex to match the "knockout prefix" that was used to indicate
|
36
|
+
# subtractive merging in Chef 10.x and previous. Subtractive merging is
|
37
|
+
# removed as of Chef 11, but we detect attempted use of it and raise an
|
38
|
+
# error (see: raise_if_knockout_used!)
|
39
|
+
OLD_KNOCKOUT_MATCH = %r[!merge].freeze
|
40
|
+
|
41
|
+
extend self
|
42
|
+
|
43
|
+
def merge(first, second)
|
39
44
|
first = Mash.new(first) unless first.kind_of?(Mash)
|
40
45
|
second = Mash.new(second) unless second.kind_of?(Mash)
|
41
46
|
|
42
|
-
DeepMerge.deep_merge(second, first
|
47
|
+
DeepMerge.deep_merge(second, first)
|
43
48
|
end
|
44
49
|
|
45
50
|
# Inherited roles use the knockout_prefix array subtraction functionality
|
@@ -48,7 +53,7 @@ class Chef
|
|
48
53
|
first = Mash.new(first) unless first.kind_of?(Mash)
|
49
54
|
second = Mash.new(second) unless second.kind_of?(Mash)
|
50
55
|
|
51
|
-
DeepMerge.deep_merge(second, first
|
56
|
+
DeepMerge.deep_merge(second, first)
|
52
57
|
end
|
53
58
|
|
54
59
|
class InvalidParameter < StandardError; end
|
@@ -67,217 +72,96 @@ class Chef
|
|
67
72
|
# Results: {:x => [1,2,3,4,5,'6'], :y => 2}
|
68
73
|
# By default, "deep_merge!" will overwrite any unmergeables and merge everything else.
|
69
74
|
# To avoid this, use "deep_merge" (no bang/exclamation mark)
|
70
|
-
|
71
|
-
# Options:
|
72
|
-
# Options are specified in the last parameter passed, which should be in hash format:
|
73
|
-
# hash.deep_merge!({:x => [1,2]}, {:knockout_prefix => '!merge'})
|
74
|
-
# :preserve_unmergeables DEFAULT: false
|
75
|
-
# Set to true to skip any unmergeable elements from source
|
76
|
-
# :knockout_prefix DEFAULT: nil
|
77
|
-
# Set to string value to signify prefix which deletes elements from existing element
|
78
|
-
# A colon is appended when indicating a specific value, eg:
|
79
|
-
# :knockout_prefix => "dontmerge", is referenced as "dontmerge:foobar" in an array
|
80
|
-
# :sort_merged_arrays DEFAULT: false
|
81
|
-
# Set to true to sort all arrays that are merged together
|
82
|
-
# :unpack_arrays DEFAULT: nil
|
83
|
-
# Set to string value to run "Array::join" then "String::split" against all arrays
|
84
|
-
# :merge_debug DEFAULT: false
|
85
|
-
# Set to true to get console output of merge process for debugging
|
86
|
-
#
|
87
|
-
# Selected Options Details:
|
88
|
-
# :knockout_prefix => The purpose of this is to provide a way to remove elements
|
89
|
-
# from existing Hash by specifying them in a special way in incoming hash
|
90
|
-
# source = {:x => ['!merge:1', '2']}
|
91
|
-
# dest = {:x => ['1', '3']}
|
92
|
-
# dest.ko_deep_merge!(source)
|
93
|
-
# Results: {:x => ['2','3']}
|
94
|
-
# Additionally, if the knockout_prefix is passed alone as a string, it will cause
|
95
|
-
# the entire element to be removed:
|
96
|
-
# source = {:x => '!merge'}
|
97
|
-
# dest = {:x => [1,2,3]}
|
98
|
-
# dest.ko_deep_merge!(source)
|
99
|
-
# Results: {:x => ""}
|
100
|
-
# :unpack_arrays => The purpose of this is to permit compound elements to be passed
|
101
|
-
# in as strings and to be converted into discrete array elements
|
102
|
-
# irsource = {:x => ['1,2,3', '4']}
|
103
|
-
# dest = {:x => ['5','6','7,8']}
|
104
|
-
# dest.deep_merge!(source, {:unpack_arrays => ','})
|
105
|
-
# Results: {:x => ['1','2','3','4','5','6','7','8'}
|
106
|
-
# Why: If receiving data from an HTML form, this makes it easy for a checkbox
|
107
|
-
# to pass multiple values from within a single HTML element
|
108
|
-
#
|
109
|
-
# There are many tests for this library - and you can learn more about the features
|
110
|
-
# and usages of deep_merge! by just browsing the test examples
|
111
|
-
def deep_merge!(source, dest, options = {})
|
112
|
-
# turn on this line for stdout debugging text
|
113
|
-
merge_debug = options[:merge_debug] || false
|
114
|
-
overwrite_unmergeable = !options[:preserve_unmergeables]
|
115
|
-
knockout_prefix = options[:knockout_prefix] || nil
|
116
|
-
raise InvalidParameter, "knockout_prefix cannot be an empty string in deep_merge!" if knockout_prefix == ""
|
117
|
-
raise InvalidParameter, "overwrite_unmergeable must be true if knockout_prefix is specified in deep_merge!" if knockout_prefix && !overwrite_unmergeable
|
118
|
-
# if present: we will split and join arrays on this char before merging
|
119
|
-
array_split_char = options[:unpack_arrays] || false
|
120
|
-
# request that we sort together any arrays when they are merged
|
121
|
-
sort_merged_arrays = options[:sort_merged_arrays] || false
|
122
|
-
di = options[:debug_indent] || ''
|
123
|
-
# do nothing if source is nil
|
124
|
-
return dest if source.nil?
|
75
|
+
def deep_merge!(source, dest)
|
125
76
|
# if dest doesn't exist, then simply copy source to it
|
126
|
-
if dest.nil?
|
77
|
+
if dest.nil?
|
127
78
|
dest = source; return dest
|
128
79
|
end
|
129
80
|
|
130
|
-
|
131
|
-
|
132
|
-
|
81
|
+
raise_if_knockout_used!(source)
|
82
|
+
raise_if_knockout_used!(dest)
|
83
|
+
case source
|
84
|
+
when nil
|
85
|
+
dest
|
86
|
+
when Hash
|
133
87
|
source.each do |src_key, src_value|
|
134
88
|
if dest.kind_of?(Hash)
|
135
|
-
puts "#{di} looping: #{src_key.inspect} => #{src_value.inspect} :: #{dest.inspect}" if merge_debug
|
136
89
|
if dest[src_key]
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
# NOTE: We are doing this via deep_merge! because the
|
142
|
-
# src_value can still contain merge directives such as
|
143
|
-
# knockout_prefix.
|
144
|
-
# Historically we have been dup'ing the src_value here
|
145
|
-
# and merging src_value with src_value.dup. This logic
|
146
|
-
# is not applicable anymore because it results in
|
147
|
-
# duplicates when merging two array values with
|
148
|
-
# :horizontal_precedence = true.
|
149
|
-
if src_value.nil?
|
150
|
-
# Nothing to compute with an extra deep_merge!
|
151
|
-
dest[src_key] = src_value
|
152
|
-
else
|
153
|
-
dest[src_key] = deep_merge!(src_value, { }, options.merge(:debug_indent => di + ' '))
|
154
|
-
end
|
155
|
-
end
|
156
|
-
else # dest isn't a hash, so we overwrite it completely (if permitted)
|
157
|
-
if overwrite_unmergeable
|
158
|
-
puts "#{di} overwriting dest: #{src_key.inspect} => #{src_value.inspect} -over-> #{dest.inspect}" if merge_debug
|
159
|
-
dest = overwrite_unmergeables(source, dest, options)
|
90
|
+
dest[src_key] = deep_merge!(src_value, dest[src_key])
|
91
|
+
else # dest[src_key] doesn't exist so we take whatever source has
|
92
|
+
raise_if_knockout_used!(src_value)
|
93
|
+
dest[src_key] = src_value
|
160
94
|
end
|
95
|
+
else # dest isn't a hash, so we overwrite it completely
|
96
|
+
dest = source
|
161
97
|
end
|
162
98
|
end
|
163
|
-
|
164
|
-
puts "#{di}Arrays: #{source.inspect} :: #{dest.inspect}" if merge_debug
|
165
|
-
# if we are instructed, join/split any source arrays before processing
|
166
|
-
if array_split_char
|
167
|
-
puts "#{di} split/join on source: #{source.inspect}" if merge_debug
|
168
|
-
source = source.join(array_split_char).split(array_split_char)
|
169
|
-
if dest.kind_of?(Array)
|
170
|
-
dest = dest.join(array_split_char).split(array_split_char)
|
171
|
-
end
|
172
|
-
end
|
173
|
-
# if there's a naked knockout_prefix in source, that means we are to truncate dest
|
174
|
-
ko_variants = [ knockout_prefix, "#{knockout_prefix}:" ]
|
175
|
-
ko_variants.each do |ko|
|
176
|
-
if source.index(ko)
|
177
|
-
dest = clear_or_nil(dest); source.delete(ko)
|
178
|
-
end
|
179
|
-
end
|
99
|
+
when Array
|
180
100
|
if dest.kind_of?(Array)
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
source.delete_if do |ko_item|
|
185
|
-
retval = false
|
186
|
-
item = ko_item.respond_to?(:gsub) ? ko_item.gsub(%r{^#{knockout_prefix}:}, "") : ko_item
|
187
|
-
if item != ko_item
|
188
|
-
print "#{ko_item} - " if merge_debug
|
189
|
-
dest.delete(item)
|
190
|
-
dest.delete(ko_item)
|
191
|
-
retval = true
|
192
|
-
end
|
193
|
-
retval
|
194
|
-
end
|
195
|
-
puts if merge_debug
|
196
|
-
end
|
197
|
-
puts "#{di} merging arrays: #{source.inspect} :: #{dest.inspect}" if merge_debug
|
198
|
-
# Behavior of merging arrays has changed with CHEF-4631.
|
199
|
-
# Old behavior was to deduplicate and merge the
|
200
|
-
# arrays. New behavior is to concatanate the arrays if the
|
201
|
-
# merge is happening on the same attribute precedence
|
202
|
-
# level and pick the value from the higher precedence
|
203
|
-
# level if merge is being done across the precedence
|
204
|
-
# levels.
|
205
|
-
# Old behavior can still be used by setting
|
206
|
-
# :deep_merge_array_concat to false in config.
|
207
|
-
if Chef::Config[:deep_merge_array_concat]
|
208
|
-
# If :horizontal_precedence is set, this means we are
|
209
|
-
# merging two arrays at the same precendence level so
|
210
|
-
# concatanate them. Otherwise this is a merge across
|
211
|
-
# precedence levels which means we will pick the one
|
212
|
-
# from higher precedence level.
|
213
|
-
if options[:horizontal_precedence]
|
214
|
-
dest += source
|
215
|
-
else
|
216
|
-
dest = source
|
217
|
-
end
|
218
|
-
else
|
219
|
-
# Pre CHEF-4631 behavior for array merging
|
220
|
-
dest = dest | source
|
221
|
-
end
|
222
|
-
dest.sort! if sort_merged_arrays
|
223
|
-
elsif overwrite_unmergeable
|
224
|
-
puts "#{di} overwriting dest: #{source.inspect} -over-> #{dest.inspect}" if merge_debug
|
225
|
-
dest = overwrite_unmergeables(source, dest, options)
|
101
|
+
dest = dest | source
|
102
|
+
else
|
103
|
+
dest = source
|
226
104
|
end
|
105
|
+
when String
|
106
|
+
dest = source
|
227
107
|
else # src_hash is not an array or hash, so we'll have to overwrite dest
|
228
|
-
|
229
|
-
dest = overwrite_unmergeables(source, dest, options)
|
108
|
+
dest = source
|
230
109
|
end
|
231
|
-
puts "#{di}Returning #{dest.inspect}" if merge_debug
|
232
110
|
dest
|
233
111
|
end # deep_merge!
|
234
112
|
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
elsif source.kind_of?(Array) # remove all knockout elements before overwriting dest
|
249
|
-
src_tmp = source.delete_if {|ko_item| ko_item.kind_of?(String) && ko_item.match(%r{^#{knockout_prefix}:}) }
|
250
|
-
else
|
251
|
-
src_tmp = source
|
252
|
-
end
|
253
|
-
if src_tmp == source # if we didn't find a knockout_prefix then we just overwrite dest
|
254
|
-
puts "#{di}#{src_tmp.inspect} -over-> #{dest.inspect}" if merge_debug
|
255
|
-
dest = src_tmp
|
256
|
-
else # if we do find a knockout_prefix, then we just delete dest
|
257
|
-
puts "#{di}\"\" -over-> #{dest.inspect}" if merge_debug
|
258
|
-
dest = ""
|
113
|
+
def hash_only_merge(merge_onto, merge_with)
|
114
|
+
hash_only_merge!(merge_onto.dup, merge_with.dup)
|
115
|
+
end
|
116
|
+
|
117
|
+
# Deep merge without Array merge.
|
118
|
+
# `merge_onto` is the object that will "lose" in case of conflict.
|
119
|
+
# `merge_with` is the object whose values will replace `merge_onto`s
|
120
|
+
# values when there is a conflict.
|
121
|
+
def hash_only_merge!(merge_onto, merge_with)
|
122
|
+
# If there are two Hashes, recursively merge.
|
123
|
+
if merge_onto.kind_of?(Hash) && merge_with.kind_of?(Hash)
|
124
|
+
merge_with.each do |key, merge_with_value|
|
125
|
+
merge_onto[key] = hash_only_merge!(merge_onto[key], merge_with_value)
|
259
126
|
end
|
260
|
-
|
261
|
-
|
127
|
+
merge_onto
|
128
|
+
|
129
|
+
# If merge_with is nil, don't replace merge_onto
|
130
|
+
elsif merge_with.nil?
|
131
|
+
merge_onto
|
132
|
+
|
133
|
+
# In all other cases, replace merge_onto with merge_with
|
134
|
+
else
|
135
|
+
merge_with
|
262
136
|
end
|
263
|
-
dest
|
264
137
|
end
|
265
138
|
|
266
|
-
|
267
|
-
|
139
|
+
# Checks for attempted use of subtractive merge, which was removed for
|
140
|
+
# Chef 11.0. If subtractive merge use is detected, will raise an
|
141
|
+
# InvalidSubtractiveMerge exception.
|
142
|
+
def raise_if_knockout_used!(obj)
|
143
|
+
if uses_knockout?(obj)
|
144
|
+
raise InvalidSubtractiveMerge, "subtractive merge with !merge is no longer supported"
|
145
|
+
end
|
268
146
|
end
|
269
147
|
|
270
|
-
|
271
|
-
|
272
|
-
|
148
|
+
# Checks for attempted use of subtractive merge in +obj+.
|
149
|
+
def uses_knockout?(obj)
|
150
|
+
case obj
|
151
|
+
when String
|
152
|
+
obj =~ OLD_KNOCKOUT_MATCH
|
153
|
+
when Array
|
154
|
+
obj.any? {|element| element.respond_to?(:gsub) && element =~ OLD_KNOCKOUT_MATCH }
|
273
155
|
else
|
274
|
-
|
156
|
+
false
|
275
157
|
end
|
276
|
-
obj
|
277
158
|
end
|
278
159
|
|
279
|
-
|
160
|
+
def deep_merge(source, dest)
|
161
|
+
deep_merge!(source.dup, dest.dup)
|
162
|
+
end
|
280
163
|
|
164
|
+
end
|
281
165
|
end
|
282
166
|
end
|
283
167
|
|
@@ -18,7 +18,42 @@
|
|
18
18
|
|
19
19
|
class Chef
|
20
20
|
module Mixin
|
21
|
+
|
22
|
+
|
23
|
+
def self.deprecated_constants
|
24
|
+
@deprecated_constants ||= {}
|
25
|
+
end
|
26
|
+
|
27
|
+
# Add a deprecated constant to the Chef::Mixin namespace.
|
28
|
+
# === Arguments
|
29
|
+
# * name: the constant name, as a relative symbol.
|
30
|
+
# * replacement: the constant to return instead.
|
31
|
+
# * message: A message telling the user what to do instead.
|
32
|
+
# === Example:
|
33
|
+
# deprecate_constant(:RecipeDefinitionDSLCore, Chef::DSL::Recipe, <<-EOM)
|
34
|
+
# Chef::Mixin::RecipeDefinitionDSLCore is deprecated, use Chef::DSL::Recipe instead.
|
35
|
+
# EOM
|
36
|
+
def self.deprecate_constant(name, replacement, message)
|
37
|
+
deprecated_constants[name] = {:replacement => replacement, :message => message}
|
38
|
+
end
|
39
|
+
|
40
|
+
# Const missing hook to look up deprecated constants defined with
|
41
|
+
# deprecate_constant. Emits a warning to the logger and returns the
|
42
|
+
# replacement constant. Will call super, most likely causing an exception
|
43
|
+
# for the missing constant, if +name+ is not found in the
|
44
|
+
# deprecated_constants collection.
|
45
|
+
def self.const_missing(name)
|
46
|
+
if new_const = deprecated_constants[name]
|
47
|
+
Chef::Log.warn(new_const[:message])
|
48
|
+
Chef::Log.warn("Called from: \n#{caller[0...3].map {|l| "\t#{l}"}.join("\n")}")
|
49
|
+
new_const[:replacement]
|
50
|
+
else
|
51
|
+
super
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
21
55
|
module Deprecation
|
56
|
+
|
22
57
|
class DeprecatedObjectProxyBase
|
23
58
|
KEEPERS = %w{__id__ __send__ instance_eval == equal? initialize object_id}
|
24
59
|
instance_methods.each { |method_name| undef_method(method_name) unless KEEPERS.include?(method_name.to_s)}
|
@@ -25,15 +25,6 @@ class Chef
|
|
25
25
|
def file_class
|
26
26
|
@host_os_file ||= if Chef::Platform.windows?
|
27
27
|
require 'chef/win32/file'
|
28
|
-
begin
|
29
|
-
Chef::ReservedNames::Win32::File.verify_links_supported!
|
30
|
-
rescue Chef::Exceptions::Win32APIFunctionNotImplemented => e
|
31
|
-
message = "Link resource is not supported on this version of Windows"
|
32
|
-
message << ": #{node[:kernel][:name]}" if node
|
33
|
-
message << " (#{node[:platform_version]})" if node
|
34
|
-
Chef::Log.fatal(message)
|
35
|
-
raise e
|
36
|
-
end
|
37
28
|
Chef::ReservedNames::Win32::File
|
38
29
|
else
|
39
30
|
::File
|
data/lib/chef/mixin/language.rb
CHANGED
@@ -16,234 +16,33 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require 'chef/
|
20
|
-
require 'chef/
|
21
|
-
require 'chef/
|
22
|
-
require 'chef/encrypted_data_bag_item'
|
19
|
+
require 'chef/dsl/platform_introspection'
|
20
|
+
require 'chef/dsl/data_query'
|
21
|
+
require 'chef/mixin/deprecation'
|
23
22
|
|
24
23
|
class Chef
|
25
24
|
module Mixin
|
26
|
-
module Language
|
27
25
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
# * multiple platforms can be grouped by using an Array as the key
|
43
|
-
# * values for platforms need to be Hashes of the form:
|
44
|
-
# {platform_version => value_for_that_version}
|
45
|
-
# * the exception to the above is the default value, which is given as
|
46
|
-
# :default => default_value
|
47
|
-
def initialize(platform_hash)
|
48
|
-
@values = {}
|
49
|
-
platform_hash.each { |platforms, value| set(platforms, value)}
|
50
|
-
end
|
51
|
-
|
52
|
-
def value_for_node(node)
|
53
|
-
platform, version = node[:platform].to_s, node[:platform_version].to_s
|
54
|
-
if @values.key?(platform) && @values[platform].key?(version)
|
55
|
-
@values[platform][version]
|
56
|
-
elsif @values.key?(platform) && @values[platform].key?("default")
|
57
|
-
@values[platform]["default"]
|
58
|
-
elsif @values.key?("default")
|
59
|
-
@values["default"]
|
60
|
-
else
|
61
|
-
nil
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
private
|
66
|
-
|
67
|
-
def set(platforms, value)
|
68
|
-
if platforms.to_s == 'default'
|
69
|
-
@values["default"] = value
|
70
|
-
else
|
71
|
-
assert_valid_platform_values!(platforms, value)
|
72
|
-
Array(platforms).each { |platform| @values[platform.to_s] = normalize_keys(value)}
|
73
|
-
value
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def normalize_keys(hash)
|
78
|
-
hash.inject({}) do |h, key_value|
|
79
|
-
keys, value = *key_value
|
80
|
-
Array(keys).each do |key|
|
81
|
-
h[key.to_s] = value
|
82
|
-
end
|
83
|
-
h
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def assert_valid_platform_values!(platforms, value)
|
88
|
-
unless value.kind_of?(Hash)
|
89
|
-
msg = "platform dependent values must be specified in the format :platform => {:version => value} "
|
90
|
-
msg << "you gave a value #{value.inspect} for platform(s) #{platforms}"
|
91
|
-
raise ArgumentError, msg
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
# Given a hash similar to the one we use for Platforms, select a value from the hash. Supports
|
99
|
-
# per platform defaults, along with a single base default. Arrays may be passed as hash keys and
|
100
|
-
# will be expanded.
|
101
|
-
#
|
102
|
-
# === Parameters
|
103
|
-
# platform_hash:: A platform-style hash.
|
104
|
-
#
|
105
|
-
# === Returns
|
106
|
-
# value:: Whatever the most specific value of the hash is.
|
107
|
-
def value_for_platform(platform_hash)
|
108
|
-
PlatformDependentValue.new(platform_hash).value_for_node(node)
|
109
|
-
end
|
110
|
-
|
111
|
-
# Given a list of platforms, returns true if the current recipe is being run on a node with
|
112
|
-
# that platform, false otherwise.
|
113
|
-
#
|
114
|
-
# === Parameters
|
115
|
-
# args:: A list of platforms. Each platform can be in string or symbol format.
|
116
|
-
#
|
117
|
-
# === Returns
|
118
|
-
# true:: If the current platform is in the list
|
119
|
-
# false:: If the current platform is not in the list
|
120
|
-
def platform?(*args)
|
121
|
-
has_platform = false
|
122
|
-
|
123
|
-
args.flatten.each do |platform|
|
124
|
-
has_platform = true if platform.to_s == node[:platform]
|
125
|
-
end
|
126
|
-
|
127
|
-
has_platform
|
128
|
-
end
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
# Implementation class for determining platform family dependent values
|
133
|
-
class PlatformFamilyDependentValue
|
134
|
-
|
135
|
-
# Create a platform family dependent value object.
|
136
|
-
# === Arguments
|
137
|
-
# platform_family_hash (Hash) a map of platform families to values.
|
138
|
-
# like this:
|
139
|
-
# {
|
140
|
-
# :rhel => "value for all EL variants"
|
141
|
-
# :fedora => "value for fedora variants fedora and amazon" ,
|
142
|
-
# [:fedora, :rhel] => "value for all known redhat variants"
|
143
|
-
# :debian => "value for debian variants including debian, ubuntu, mint" ,
|
144
|
-
# :default => "the default when nothing else matches"
|
145
|
-
# }
|
146
|
-
# * platform families can be specified as Symbols or Strings
|
147
|
-
# * multiple platform families can be grouped by using an Array as the key
|
148
|
-
# * values for platform families can be any object, with no restrictions. Some examples:
|
149
|
-
# - [:stop, :start]
|
150
|
-
# - "mysql-devel"
|
151
|
-
# - { :key => "value" }
|
152
|
-
def initialize(platform_family_hash)
|
153
|
-
@values = {}
|
154
|
-
@values["default"] = nil
|
155
|
-
platform_family_hash.each { |platform_families, value| set(platform_families, value)}
|
156
|
-
end
|
157
|
-
|
158
|
-
def value_for_node(node)
|
159
|
-
if node.key?(:platform_family)
|
160
|
-
platform_family = node[:platform_family].to_s
|
161
|
-
if @values.key?(platform_family)
|
162
|
-
@values[platform_family]
|
163
|
-
else
|
164
|
-
@values["default"]
|
165
|
-
end
|
166
|
-
else
|
167
|
-
@values["default"]
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
private
|
172
|
-
|
173
|
-
def set(platform_family, value)
|
174
|
-
if platform_family.to_s == 'default'
|
175
|
-
@values["default"] = value
|
176
|
-
else
|
177
|
-
Array(platform_family).each { |family| @values[family.to_s] = value }
|
178
|
-
value
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
|
184
|
-
# Given a hash mapping platform families to values, select a value from the hash. Supports a single
|
185
|
-
# base default if platform family is not in the map. Arrays may be passed as hash keys and will be
|
186
|
-
# expanded.
|
187
|
-
#
|
188
|
-
# === Parameters
|
189
|
-
# platform_family_hash:: A hash in the form { platform_family_name => value }
|
190
|
-
#
|
191
|
-
# === Returns
|
192
|
-
# value:: Whatever the most specific value of the hash is.
|
193
|
-
def value_for_platform_family(platform_family_hash)
|
194
|
-
PlatformFamilyDependentValue.new(platform_family_hash).value_for_node(node)
|
195
|
-
end
|
196
|
-
|
197
|
-
# Given a list of platform families, returns true if the current recipe is being run on a
|
198
|
-
# node within that platform family, false otherwise.
|
199
|
-
#
|
200
|
-
# === Parameters
|
201
|
-
# args:: A list of platform families. Each platform family can be in string or symbol format.
|
202
|
-
#
|
203
|
-
# === Returns
|
204
|
-
# true:: if the current node platform family is in the list.
|
205
|
-
# false:: if the current node platform family is not in the list.
|
206
|
-
def platform_family?(*args)
|
207
|
-
has_pf = false
|
208
|
-
args.flatten.each do |platform_family|
|
209
|
-
has_pf = true if platform_family.to_s == node[:platform_family]
|
210
|
-
end
|
211
|
-
has_pf
|
212
|
-
end
|
213
|
-
|
214
|
-
def search(*args, &block)
|
215
|
-
# If you pass a block, or have at least the start argument, do raw result parsing
|
216
|
-
#
|
217
|
-
# Otherwise, do the iteration for the end user
|
218
|
-
if Kernel.block_given? || args.length >= 4
|
219
|
-
Chef::Search::Query.new.search(*args, &block)
|
220
|
-
else
|
221
|
-
results = Array.new
|
222
|
-
Chef::Search::Query.new.search(*args) do |o|
|
223
|
-
results << o
|
224
|
-
end
|
225
|
-
results
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
def data_bag(bag)
|
230
|
-
DataBag.validate_name!(bag.to_s)
|
231
|
-
rbag = DataBag.load(bag)
|
232
|
-
rbag.keys
|
233
|
-
rescue Exception
|
234
|
-
Log.error("Failed to list data bag items in data bag: #{bag.inspect}")
|
235
|
-
raise
|
236
|
-
end
|
237
|
-
|
238
|
-
def data_bag_item(bag, item)
|
239
|
-
DataBag.validate_name!(bag.to_s)
|
240
|
-
DataBagItem.validate_id!(item)
|
241
|
-
DataBagItem.load(bag, item)
|
242
|
-
rescue Exception
|
243
|
-
Log.error("Failed to load data bag item: #{bag.inspect} #{item.inspect}")
|
244
|
-
raise
|
245
|
-
end
|
26
|
+
# == [DEPRECATED] Chef::Mixin::DeprecatedLanguageModule
|
27
|
+
# This module is a temporary replacement for the previous
|
28
|
+
# Chef::Mixin::Language. That module's functionality was split into two
|
29
|
+
# modules, Chef::DSL::PlatformIntrospection, and Chef::DSL::DataQuery.
|
30
|
+
#
|
31
|
+
# This module includes both PlatformIntrospection and DataQuery to provide
|
32
|
+
# the same interfaces and behavior as the prior Mixin::Language.
|
33
|
+
#
|
34
|
+
# This module is loaded via const_missing hook when Chef::Mixin::Language
|
35
|
+
# is accessed. See chef/mixin/deprecation for details.
|
36
|
+
module DeprecatedLanguageModule
|
37
|
+
|
38
|
+
include Chef::DSL::PlatformIntrospection
|
39
|
+
include Chef::DSL::DataQuery
|
246
40
|
|
247
41
|
end
|
42
|
+
|
43
|
+
deprecate_constant(:Language, DeprecatedLanguageModule, <<-EOM)
|
44
|
+
Chef::Mixin::Language is deprecated. Use either (or both)
|
45
|
+
Chef::DSL::PlatformIntrospection or Chef::DSL::DataQuery instead.
|
46
|
+
EOM
|
248
47
|
end
|
249
48
|
end
|