chef 12.0.0.alpha.2-x86-mingw32 → 12.0.0.rc.0-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.
- data/CONTRIBUTING.md +9 -0
- data/README.md +1 -1
- data/Rakefile +12 -0
- data/bin/chef-service-manager +1 -1
- data/bin/chef-windows-service +35 -0
- data/distro/common/html/_sources/ctl_chef_server.txt +307 -10
- data/distro/common/html/ctl_chef_client.html +3 -7
- data/distro/common/html/ctl_chef_server.html +609 -41
- data/distro/common/html/ctl_chef_shell.html +2 -2
- data/distro/common/html/ctl_chef_solo.html +1 -1
- data/distro/common/html/index.html +13 -13
- data/distro/common/html/knife.html +10 -10
- data/distro/common/html/knife_bootstrap.html +8 -8
- data/distro/common/html/knife_client.html +12 -12
- data/distro/common/html/knife_common_options.html +7 -7
- data/distro/common/html/knife_configure.html +3 -3
- data/distro/common/html/knife_cookbook.html +19 -19
- data/distro/common/html/knife_cookbook_site.html +28 -28
- data/distro/common/html/knife_data_bag.html +28 -13
- data/distro/common/html/knife_delete.html +2 -2
- data/distro/common/html/knife_deps.html +3 -3
- data/distro/common/html/knife_diff.html +4 -4
- data/distro/common/html/knife_download.html +3 -3
- data/distro/common/html/knife_edit.html +2 -2
- data/distro/common/html/knife_environment.html +14 -14
- data/distro/common/html/knife_exec.html +11 -11
- data/distro/common/html/knife_index_rebuild.html +2 -2
- data/distro/common/html/knife_list.html +3 -3
- data/distro/common/html/knife_node.html +23 -23
- data/distro/common/html/knife_raw.html +4 -4
- data/distro/common/html/knife_recipe_list.html +3 -3
- data/distro/common/html/knife_role.html +11 -11
- data/distro/common/html/knife_search.html +4 -4
- data/distro/common/html/knife_serve.html +3 -3
- data/distro/common/html/knife_show.html +3 -3
- data/distro/common/html/knife_ssh.html +7 -7
- data/distro/common/html/knife_ssl_check.html +7 -7
- data/distro/common/html/knife_ssl_fetch.html +9 -9
- data/distro/common/html/knife_status.html +3 -3
- data/distro/common/html/knife_tag.html +9 -9
- data/distro/common/html/knife_upload.html +3 -3
- data/distro/common/html/knife_user.html +9 -9
- data/distro/common/html/knife_using.html +11 -11
- data/distro/common/html/knife_xargs.html +14 -5
- data/distro/common/html/search.html +2 -2
- data/distro/common/html/searchindex.js +1 -1
- data/distro/common/man/man1/chef-shell.1 +2 -2
- data/distro/common/man/man1/knife-bootstrap.1 +7 -7
- data/distro/common/man/man1/knife-client.1 +10 -10
- data/distro/common/man/man1/knife-configure.1 +5 -5
- data/distro/common/man/man1/knife-cookbook-site.1 +24 -24
- data/distro/common/man/man1/knife-cookbook.1 +12 -12
- data/distro/common/man/man1/knife-data-bag.1 +34 -10
- data/distro/common/man/man1/knife-delete.1 +5 -5
- data/distro/common/man/man1/knife-deps.1 +5 -5
- data/distro/common/man/man1/knife-diff.1 +7 -7
- data/distro/common/man/man1/knife-download.1 +5 -5
- data/distro/common/man/man1/knife-edit.1 +5 -5
- data/distro/common/man/man1/knife-environment.1 +11 -11
- data/distro/common/man/man1/knife-exec.1 +11 -11
- data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
- data/distro/common/man/man1/knife-list.1 +5 -5
- data/distro/common/man/man1/knife-node.1 +16 -16
- data/distro/common/man/man1/knife-raw.1 +6 -6
- data/distro/common/man/man1/knife-recipe-list.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +7 -7
- data/distro/common/man/man1/knife-search.1 +6 -6
- data/distro/common/man/man1/knife-serve.1 +6 -6
- data/distro/common/man/man1/knife-show.1 +5 -5
- data/distro/common/man/man1/knife-ssh.1 +9 -9
- data/distro/common/man/man1/knife-ssl-check.1 +7 -7
- data/distro/common/man/man1/knife-ssl-fetch.1 +9 -9
- data/distro/common/man/man1/knife-status.1 +5 -5
- data/distro/common/man/man1/knife-tag.1 +8 -8
- data/distro/common/man/man1/knife-upload.1 +5 -5
- data/distro/common/man/man1/knife-user.1 +8 -8
- data/distro/common/man/man1/knife-xargs.1 +36 -10
- data/distro/common/man/man1/knife.1 +14 -14
- data/distro/common/man/man8/chef-client.8 +3 -10
- data/distro/common/man/man8/chef-solo.8 +1 -1
- data/ext/win32-eventlog/Rakefile +50 -0
- data/ext/win32-eventlog/chef-log.man +26 -0
- data/lib/chef/application.rb +313 -241
- data/lib/chef/application/apply.rb +10 -8
- data/lib/chef/application/client.rb +58 -33
- data/lib/chef/application/solo.rb +33 -12
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/command_line.rb +1 -1
- data/lib/chef/chef_fs/file_system/organization_invites_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +2 -1
- data/lib/chef/client.rb +18 -48
- data/lib/chef/config.rb +43 -11
- data/lib/chef/cookbook/cookbook_version_loader.rb +14 -7
- data/lib/chef/cookbook/metadata.rb +81 -38
- data/lib/chef/cookbook/syntax_check.rb +18 -52
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_version.rb +58 -39
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/deprecation/provider/file.rb +2 -1
- data/lib/chef/dsl/data_query.rb +2 -29
- data/lib/chef/dsl/recipe.rb +8 -22
- data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -0
- data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +1 -1
- data/lib/chef/event_loggers/base.rb +62 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +104 -0
- data/lib/chef/exceptions.rb +18 -1
- data/lib/chef/file_cache.rb +3 -2
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +15 -6
- data/lib/chef/http.rb +20 -13
- data/lib/chef/http/ssl_policies.rb +2 -1
- data/lib/chef/json_compat.rb +9 -3
- data/lib/chef/knife.rb +2 -1
- data/lib/chef/knife/bootstrap.rb +12 -18
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
- data/lib/chef/knife/cookbook_create.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +43 -8
- data/lib/chef/knife/core/bootstrap_context.rb +6 -11
- data/lib/chef/knife/core/object_loader.rb +5 -5
- data/lib/chef/knife/core/status_presenter.rb +156 -0
- data/lib/chef/knife/core/subcommand_loader.rb +6 -5
- data/lib/chef/knife/core/ui.rb +4 -4
- data/lib/chef/knife/data_bag_create.rb +7 -32
- data/lib/chef/knife/data_bag_edit.rb +24 -43
- data/lib/chef/knife/data_bag_from_file.rb +6 -31
- data/lib/chef/knife/data_bag_secret_options.rb +142 -0
- data/lib/chef/knife/data_bag_show.rb +19 -33
- data/lib/chef/knife/node_from_file.rb +9 -8
- data/lib/chef/knife/ssh.rb +0 -7
- data/lib/chef/knife/ssl_check.rb +70 -6
- data/lib/chef/knife/status.rb +11 -58
- data/lib/chef/mixin/command/unix.rb +2 -2
- data/lib/chef/mixin/convert_to_class_name.rb +54 -0
- data/lib/chef/mixin/descendants_tracker.rb +82 -0
- data/lib/chef/mixin/homebrew_user.rb +68 -0
- data/lib/chef/mixin/shell_out.rb +0 -4
- data/lib/chef/mixin/windows_architecture_helper.rb +16 -0
- data/lib/chef/mixin/windows_env_helper.rb +56 -0
- data/lib/chef/node.rb +2 -2
- data/lib/chef/node_map.rb +146 -0
- data/lib/chef/platform/provider_mapping.rb +11 -39
- data/lib/chef/platform/provider_priority_map.rb +80 -0
- data/lib/chef/platform/query_helpers.rb +5 -1
- data/lib/chef/platform/service_helpers.rb +113 -0
- data/lib/chef/provider.rb +24 -0
- data/lib/chef/provider/breakpoint.rb +2 -0
- data/lib/chef/provider/cookbook_file.rb +2 -0
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +13 -9
- data/lib/chef/provider/deploy.rb +3 -2
- data/lib/chef/provider/deploy/revision.rb +4 -2
- data/lib/chef/provider/deploy/timestamped.rb +2 -0
- data/lib/chef/provider/directory.rb +2 -0
- data/lib/chef/provider/dsc_script.rb +179 -0
- data/lib/chef/provider/env.rb +25 -10
- data/lib/chef/provider/env/windows.rb +9 -16
- data/lib/chef/provider/erl_call.rb +2 -0
- data/lib/chef/provider/execute.rb +5 -2
- data/lib/chef/provider/file.rb +2 -0
- data/lib/chef/provider/git.rb +51 -23
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/pw.rb +9 -13
- data/lib/chef/provider/http_request.rb +2 -0
- data/lib/chef/provider/link.rb +3 -0
- data/lib/chef/provider/log.rb +2 -0
- data/lib/chef/provider/lwrp_base.rb +11 -9
- data/lib/chef/provider/mount/mount.rb +1 -1
- data/lib/chef/provider/package/aix.rb +2 -0
- data/lib/chef/provider/package/apt.rb +2 -0
- data/lib/chef/provider/package/dpkg.rb +2 -0
- data/lib/chef/provider/package/easy_install.rb +2 -0
- data/lib/chef/provider/package/freebsd/pkg.rb +2 -1
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/freebsd/port.rb +1 -9
- data/lib/chef/provider/package/homebrew.rb +127 -0
- data/lib/chef/provider/package/ips.rb +2 -0
- data/lib/chef/provider/package/macports.rb +3 -0
- data/lib/chef/provider/package/pacman.rb +5 -4
- data/lib/chef/provider/package/paludis.rb +4 -2
- data/lib/chef/provider/package/portage.rb +4 -1
- data/lib/chef/provider/package/rpm.rb +2 -0
- data/lib/chef/provider/package/rubygems.rb +4 -0
- data/lib/chef/provider/package/smartos.rb +2 -0
- data/lib/chef/provider/package/solaris.rb +2 -0
- data/lib/chef/provider/package/windows.rb +5 -2
- data/lib/chef/provider/package/yum.rb +2 -0
- data/lib/chef/provider/powershell_script.rb +3 -1
- data/lib/chef/provider/remote_directory.rb +25 -10
- data/lib/chef/provider/route.rb +2 -0
- data/lib/chef/provider/ruby_block.rb +2 -0
- data/lib/chef/provider/script.rb +6 -0
- data/lib/chef/provider/service/aix.rb +128 -0
- data/lib/chef/provider/service/aixinit.rb +117 -0
- data/lib/chef/provider/service/arch.rb +6 -0
- data/lib/chef/provider/service/debian.rb +35 -29
- data/lib/chef/provider/service/freebsd.rb +7 -1
- data/lib/chef/provider/service/gentoo.rb +5 -1
- data/lib/chef/provider/service/init.rb +2 -0
- data/lib/chef/provider/service/insserv.rb +15 -8
- data/lib/chef/provider/service/invokercd.rb +6 -0
- data/lib/chef/provider/service/macosx.rb +4 -1
- data/lib/chef/provider/service/redhat.rb +9 -3
- data/lib/chef/provider/service/simple.rb +2 -0
- data/lib/chef/provider/service/solaris.rb +2 -0
- data/lib/chef/provider/service/systemd.rb +7 -0
- data/lib/chef/provider/service/upstart.rb +7 -0
- data/lib/chef/provider/service/windows.rb +5 -0
- data/lib/chef/provider/subversion.rb +2 -0
- data/lib/chef/provider/template.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +3 -2
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +2 -0
- data/lib/chef/provider_resolver.rb +103 -0
- data/lib/chef/providers.rb +6 -2
- data/lib/chef/recipe.rb +2 -0
- data/lib/chef/resource.rb +69 -78
- data/lib/chef/resource/apt_package.rb +3 -1
- data/lib/chef/resource/bash.rb +1 -0
- data/lib/chef/resource/bff_package.rb +0 -1
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/chef_gem.rb +1 -2
- data/lib/chef/resource/conditional.rb +26 -6
- data/lib/chef/resource/cookbook_file.rb +2 -3
- data/lib/chef/resource/csh.rb +1 -0
- data/lib/chef/resource/deploy.rb +0 -1
- data/lib/chef/resource/deploy_revision.rb +6 -1
- data/lib/chef/resource/directory.rb +1 -2
- data/lib/chef/resource/dpkg_package.rb +2 -1
- data/lib/chef/resource/dsc_script.rb +125 -0
- data/lib/chef/resource/easy_install_package.rb +2 -1
- data/lib/chef/resource/erl_call.rb +1 -0
- data/lib/chef/resource/execute.rb +26 -9
- data/lib/chef/resource/file.rb +1 -3
- data/lib/chef/resource/freebsd_package.rb +10 -23
- data/lib/chef/resource/gem_package.rb +2 -1
- data/lib/chef/resource/git.rb +2 -1
- data/lib/chef/resource/homebrew_package.rb +46 -0
- data/lib/chef/resource/http_request.rb +1 -0
- data/lib/chef/resource/ips_package.rb +3 -1
- data/lib/chef/resource/link.rb +1 -2
- data/lib/chef/resource/log.rb +4 -0
- data/lib/chef/resource/lwrp_base.rb +24 -15
- data/lib/chef/resource/macports_package.rb +3 -1
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +3 -1
- data/lib/chef/resource/perl.rb +1 -0
- data/lib/chef/resource/powershell_script.rb +0 -2
- data/lib/chef/resource/python.rb +1 -1
- data/lib/chef/resource/remote_directory.rb +1 -2
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rpm_package.rb +2 -1
- data/lib/chef/resource/ruby.rb +1 -0
- data/lib/chef/resource/ruby_block.rb +3 -0
- data/lib/chef/resource/script.rb +2 -25
- data/lib/chef/resource/service.rb +0 -4
- data/lib/chef/resource/smartos_package.rb +3 -4
- data/lib/chef/resource/solaris_package.rb +7 -1
- data/lib/chef/resource/subversion.rb +0 -1
- data/lib/chef/resource/template.rb +2 -3
- data/lib/chef/resource/timestamped_deploy.rb +1 -2
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
- data/lib/chef/resource/windows_package.rb +3 -4
- data/lib/chef/resource/windows_script.rb +3 -0
- data/lib/chef/resource/windows_service.rb +2 -2
- data/lib/chef/resource/yum_package.rb +3 -1
- data/lib/chef/resource_collection.rb +50 -227
- data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -0
- data/lib/chef/resource_collection/resource_list.rb +89 -0
- data/lib/chef/resource_collection/resource_set.rb +170 -0
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_context.rb +5 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/backup.rb +3 -2
- data/lib/chef/util/dsc/configuration_generator.rb +115 -0
- data/lib/chef/util/dsc/lcm_output_parser.rb +133 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +141 -0
- data/lib/chef/util/dsc/resource_info.rb +26 -0
- data/lib/chef/util/path_helper.rb +12 -0
- data/lib/chef/util/powershell/cmdlet.rb +136 -0
- data/lib/chef/util/powershell/cmdlet_result.rb +46 -0
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/system.rb +9 -0
- data/lib/chef/win32/version.rb +2 -0
- data/spec/.DS_Store +0 -0
- data/spec/data/.DS_Store +0 -0
- data/spec/data/bootstrap/test-hints.erb +1 -1
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
- data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
- data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -0
- data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -0
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -0
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -0
- data/spec/data/lwrp/.DS_Store +0 -0
- data/spec/data/lwrp/providers/.DS_Store +0 -0
- data/spec/data/lwrp/providers/buck_passer.rb +9 -2
- data/spec/data/lwrp/resources/.DS_Store +0 -0
- data/spec/data/lwrp/resources/foo.rb +3 -2
- data/spec/data/lwrp_override/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -10
- data/spec/data/lwrp_override/resources/.DS_Store +0 -0
- data/spec/data/lwrp_override/resources/foo.rb +4 -3
- data/spec/functional/assets/chefinittest +34 -0
- data/spec/functional/assets/testchefsubsys +11 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +19 -16
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +82 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
- data/spec/functional/knife/exec_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +136 -0
- data/spec/functional/resource/aixinit_service_spec.rb +211 -0
- data/spec/functional/resource/base.rb +1 -0
- data/spec/functional/resource/batch_spec.rb +4 -11
- data/spec/functional/resource/cron_spec.rb +7 -1
- data/spec/functional/resource/dsc_script_spec.rb +382 -0
- data/spec/functional/resource/env_spec.rb +54 -0
- data/spec/functional/resource/execute_spec.rb +113 -0
- data/spec/functional/resource/file_spec.rb +2 -0
- data/spec/functional/resource/group_spec.rb +7 -4
- data/spec/functional/resource/powershell_spec.rb +198 -185
- data/spec/functional/resource/rpm_spec.rb +5 -4
- data/spec/functional/resource/user/dscl_spec.rb +2 -1
- data/spec/functional/util/path_helper_spec.rb +37 -0
- data/spec/functional/util/powershell/cmdlet_spec.rb +114 -0
- data/spec/integration/client/client_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/chef_fs_data_store_spec.rb +1 -1
- data/spec/integration/knife/chef_repo_path_spec.rb +1 -1
- data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
- data/spec/integration/knife/chefignore_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +1 -1
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
- data/spec/integration/knife/delete_spec.rb +1 -1
- data/spec/integration/knife/deps_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +1 -1
- data/spec/integration/knife/download_spec.rb +1 -1
- data/spec/integration/knife/list_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +1 -1
- data/spec/integration/knife/redirection_spec.rb +1 -1
- data/spec/integration/knife/serve_spec.rb +1 -1
- data/spec/integration/knife/show_spec.rb +1 -1
- data/spec/integration/knife/upload_spec.rb +4 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/spec_helper.rb +15 -0
- data/spec/support/chef_helpers.rb +1 -0
- data/spec/support/lib/chef/provider/snakeoil.rb +1 -0
- data/spec/support/lib/chef/resource/zen_follower.rb +1 -7
- data/spec/support/platform_helpers.rb +28 -0
- data/spec/support/shared/functional/file_resource.rb +6 -0
- data/spec/support/shared/functional/windows_script.rb +118 -0
- data/spec/support/shared/integration/integration_helper.rb +5 -2
- data/spec/support/shared/matchers/exit_with_code.rb +28 -0
- data/spec/support/shared/matchers/match_environment_variable.rb +17 -0
- data/spec/support/shared/shared_examples.rb +14 -0
- data/spec/support/shared/unit/execute_resource.rb +0 -7
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +71 -0
- data/spec/support/shared/unit/script_resource.rb +1 -1
- data/spec/support/shared/unit/windows_script_resource.rb +35 -2
- data/spec/tiny_server.rb +1 -2
- data/spec/unit/api_client_spec.rb +5 -1
- data/spec/unit/application/{apply.rb → apply_spec.rb} +13 -5
- data/spec/unit/application/client_spec.rb +106 -13
- data/spec/unit/application/solo_spec.rb +25 -1
- data/spec/unit/client_spec.rb +1 -26
- data/spec/unit/config_fetcher_spec.rb +2 -1
- data/spec/unit/config_spec.rb +91 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +8 -0
- data/spec/unit/cookbook/metadata_spec.rb +43 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
- data/spec/unit/cookbook_loader_spec.rb +4 -2
- data/spec/unit/cookbook_version_spec.rb +83 -2
- data/spec/unit/data_bag_item_spec.rb +5 -1
- data/spec/unit/data_bag_spec.rb +6 -1
- data/spec/unit/dsl/data_query_spec.rb +8 -110
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +16 -23
- data/spec/unit/environment_spec.rb +6 -2
- data/spec/unit/exceptions_spec.rb +6 -0
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +16 -15
- data/spec/unit/json_compat_spec.rb +12 -2
- data/spec/unit/knife/bootstrap_spec.rb +16 -63
- data/spec/unit/knife/cookbook_site_share_spec.rb +59 -6
- data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -37
- data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +28 -0
- data/spec/unit/knife/data_bag_create_spec.rb +63 -71
- data/spec/unit/knife/data_bag_edit_spec.rb +83 -49
- data/spec/unit/knife/data_bag_from_file_spec.rb +104 -126
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -0
- data/spec/unit/knife/data_bag_show_spec.rb +74 -72
- data/spec/unit/knife/environment_from_file_spec.rb +3 -2
- data/spec/unit/knife/ssl_check_spec.rb +46 -1
- data/spec/unit/knife/status_spec.rb +1 -2
- data/spec/unit/knife_spec.rb +18 -1
- data/spec/unit/lwrp_spec.rb +29 -8
- data/spec/unit/mixin/homebrew_user_spec.rb +100 -0
- data/spec/unit/node_map_spec.rb +155 -0
- data/spec/unit/node_spec.rb +11 -0
- data/spec/unit/platform/query_helpers_spec.rb +23 -0
- data/spec/unit/platform_spec.rb +23 -0
- data/spec/unit/provider/breakpoint_spec.rb +9 -9
- data/spec/unit/provider/cookbook_file/content_spec.rb +3 -3
- data/spec/unit/provider/cookbook_file_spec.rb +1 -1
- data/spec/unit/provider/cron/unix_spec.rb +78 -60
- data/spec/unit/provider/cron_spec.rb +175 -175
- data/spec/unit/provider/deploy/revision_spec.rb +22 -21
- data/spec/unit/provider/deploy/timestamped_spec.rb +3 -3
- data/spec/unit/provider/deploy_spec.rb +231 -230
- data/spec/unit/provider/directory_spec.rb +55 -55
- data/spec/unit/provider/dsc_script_spec.rb +174 -0
- data/spec/unit/provider/env/windows_spec.rb +70 -34
- data/spec/unit/provider/env_spec.rb +95 -49
- data/spec/unit/provider/erl_call_spec.rb +9 -9
- data/spec/unit/provider/execute_spec.rb +43 -27
- data/spec/unit/provider/file/content_spec.rb +9 -9
- data/spec/unit/provider/file_spec.rb +1 -1
- data/spec/unit/provider/git_spec.rb +221 -159
- data/spec/unit/provider/group/dscl_spec.rb +64 -63
- data/spec/unit/provider/group/gpasswd_spec.rb +14 -14
- data/spec/unit/provider/group/groupadd_spec.rb +33 -33
- data/spec/unit/provider/group/groupmod_spec.rb +23 -23
- data/spec/unit/provider/group/pw_spec.rb +21 -21
- data/spec/unit/provider/group/usermod_spec.rb +20 -20
- data/spec/unit/provider/group/windows_spec.rb +15 -15
- data/spec/unit/provider/group_spec.rb +76 -76
- data/spec/unit/provider/http_request_spec.rb +30 -30
- data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
- data/spec/unit/provider/ifconfig/debian_spec.rb +25 -9
- data/spec/unit/provider/ifconfig/redhat_spec.rb +13 -13
- data/spec/unit/provider/ifconfig_spec.rb +43 -43
- data/spec/unit/provider/link_spec.rb +60 -60
- data/spec/unit/provider/log_spec.rb +0 -4
- data/spec/unit/provider/mdadm_spec.rb +23 -23
- data/spec/unit/provider/mount/aix_spec.rb +17 -17
- data/spec/unit/provider/mount/mount_spec.rb +115 -119
- data/spec/unit/provider/mount/solaris_spec.rb +72 -72
- data/spec/unit/provider/mount/windows_spec.rb +24 -24
- data/spec/unit/provider/ohai_spec.rb +11 -11
- data/spec/unit/provider/package/aix_spec.rb +34 -34
- data/spec/unit/provider/package/apt_spec.rb +36 -36
- data/spec/unit/provider/package/dpkg_spec.rb +27 -27
- data/spec/unit/provider/package/easy_install_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +53 -53
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +24 -24
- data/spec/unit/provider/package/freebsd/port_spec.rb +45 -35
- data/spec/unit/provider/package/homebrew_spec.rb +266 -0
- data/spec/unit/provider/package/ips_spec.rb +34 -34
- data/spec/unit/provider/package/macports_spec.rb +49 -49
- data/spec/unit/provider/package/pacman_spec.rb +35 -39
- data/spec/unit/provider/package/paludis_spec.rb +20 -20
- data/spec/unit/provider/package/portage_spec.rb +38 -38
- data/spec/unit/provider/package/rpm_spec.rb +29 -29
- data/spec/unit/provider/package/rubygems_spec.rb +284 -270
- data/spec/unit/provider/package/smartos_spec.rb +15 -15
- data/spec/unit/provider/package/solaris_spec.rb +35 -35
- data/spec/unit/provider/package/windows/msi_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +6 -6
- data/spec/unit/provider/package/yum_spec.rb +416 -416
- data/spec/unit/provider/package/zypper_spec.rb +47 -47
- data/spec/unit/provider/package_spec.rb +107 -107
- data/spec/unit/provider/powershell_spec.rb +1 -1
- data/spec/unit/provider/registry_key_spec.rb +61 -61
- data/spec/unit/provider/remote_directory_spec.rb +36 -36
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +24 -24
- data/spec/unit/provider/remote_file/content_spec.rb +45 -45
- data/spec/unit/provider/remote_file/fetcher_spec.rb +9 -9
- data/spec/unit/provider/remote_file/ftp_spec.rb +32 -32
- data/spec/unit/provider/remote_file/http_spec.rb +44 -44
- data/spec/unit/provider/remote_file/local_file_spec.rb +9 -9
- data/spec/unit/provider/remote_file_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +63 -63
- data/spec/unit/provider/ruby_block_spec.rb +4 -4
- data/spec/unit/provider/script_spec.rb +12 -12
- data/spec/unit/provider/service/aix_service_spec.rb +181 -0
- data/spec/unit/provider/service/aixinit_service_spec.rb +269 -0
- data/spec/unit/provider/service/arch_service_spec.rb +48 -48
- data/spec/unit/provider/service/debian_service_spec.rb +40 -40
- data/spec/unit/provider/service/gentoo_service_spec.rb +28 -28
- data/spec/unit/provider/service/init_service_spec.rb +39 -39
- data/spec/unit/provider/service/insserv_service_spec.rb +8 -8
- data/spec/unit/provider/service/invokercd_service_spec.rb +35 -35
- data/spec/unit/provider/service/macosx_spec.rb +49 -49
- data/spec/unit/provider/service/redhat_spec.rb +27 -27
- data/spec/unit/provider/service/simple_service_spec.rb +28 -28
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +43 -46
- data/spec/unit/provider/service/systemd_service_spec.rb +63 -63
- data/spec/unit/provider/service/upstart_service_spec.rb +78 -78
- data/spec/unit/provider/service/windows_spec.rb +92 -92
- data/spec/unit/provider/service_spec.rb +40 -40
- data/spec/unit/provider/subversion_spec.rb +80 -80
- data/spec/unit/provider/template/content_spec.rb +9 -9
- data/spec/unit/provider/template_spec.rb +6 -6
- data/spec/unit/provider/user/dscl_spec.rb +170 -167
- data/spec/unit/provider/user/pw_spec.rb +48 -48
- data/spec/unit/provider/user/solaris_spec.rb +8 -8
- data/spec/unit/provider/user/useradd_spec.rb +1 -1
- data/spec/unit/provider/user/windows_spec.rb +26 -26
- data/spec/unit/provider/user_spec.rb +72 -72
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +4 -4
- data/spec/unit/provider_resolver_spec.rb +387 -0
- data/spec/unit/recipe_spec.rb +33 -12
- data/spec/unit/resource/apt_package_spec.rb +10 -13
- data/spec/unit/resource/bash_spec.rb +4 -4
- data/spec/unit/resource/batch_spec.rb +1 -1
- data/spec/unit/resource/breakpoint_spec.rb +11 -7
- data/spec/unit/resource/chef_gem_spec.rb +8 -15
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
- data/spec/unit/resource/conditional_spec.rb +35 -16
- data/spec/unit/resource/cookbook_file_spec.rb +13 -13
- data/spec/unit/resource/cron_spec.rb +37 -37
- data/spec/unit/resource/csh_spec.rb +4 -4
- data/spec/unit/resource/deploy_revision_spec.rb +13 -18
- data/spec/unit/resource/deploy_spec.rb +60 -55
- data/spec/unit/resource/directory_spec.rb +18 -18
- data/spec/unit/resource/dpkg_package_spec.rb +8 -14
- data/spec/unit/resource/dsc_script_spec.rb +98 -0
- data/spec/unit/resource/easy_install_package_spec.rb +9 -18
- data/spec/unit/resource/env_spec.rb +12 -12
- data/spec/unit/resource/erl_call_spec.rb +11 -11
- data/spec/unit/resource/execute_spec.rb +5 -0
- data/spec/unit/resource/file_spec.rb +29 -29
- data/spec/unit/resource/freebsd_package_spec.rb +11 -12
- data/spec/unit/resource/gem_package_spec.rb +8 -15
- data/spec/unit/resource/git_spec.rb +12 -8
- data/spec/unit/resource/group_spec.rb +27 -27
- data/spec/unit/resource/homebrew_package_spec.rb +50 -0
- data/spec/unit/resource/http_request_spec.rb +6 -6
- data/spec/unit/resource/ifconfig_spec.rb +8 -8
- data/spec/unit/resource/ips_package_spec.rb +10 -13
- data/spec/unit/resource/link_spec.rb +25 -25
- data/spec/unit/resource/log_spec.rb +9 -9
- data/spec/unit/resource/macports_package_spec.rb +8 -13
- data/spec/unit/resource/mdadm_spec.rb +18 -18
- data/spec/unit/resource/mount_spec.rb +45 -45
- data/spec/unit/resource/ohai_spec.rb +7 -7
- data/spec/unit/resource/package_spec.rb +12 -12
- data/spec/unit/resource/pacman_package_spec.rb +8 -14
- data/spec/unit/resource/perl_spec.rb +4 -4
- data/spec/unit/resource/portage_package_spec.rb +3 -3
- data/spec/unit/resource/powershell_spec.rb +7 -7
- data/spec/unit/resource/python_spec.rb +4 -4
- data/spec/unit/resource/registry_key_spec.rb +32 -32
- data/spec/unit/resource/remote_directory_spec.rb +17 -17
- data/spec/unit/resource/remote_file_spec.rb +41 -41
- data/spec/unit/resource/route_spec.rb +19 -19
- data/spec/unit/resource/rpm_package_spec.rb +9 -13
- data/spec/unit/resource/ruby_block_spec.rb +8 -8
- data/spec/unit/resource/ruby_spec.rb +4 -4
- data/spec/unit/resource/scm_spec.rb +40 -40
- data/spec/unit/resource/script_spec.rb +2 -2
- data/spec/unit/resource/service_spec.rb +37 -47
- data/spec/unit/resource/smartos_package_spec.rb +10 -15
- data/spec/unit/resource/solaris_package_spec.rb +13 -28
- data/spec/unit/resource/subversion_spec.rb +16 -12
- data/spec/unit/resource/template_spec.rb +35 -35
- data/spec/unit/resource/timestamped_deploy_spec.rb +30 -4
- data/spec/unit/resource/user_spec.rb +23 -23
- data/spec/unit/resource/windows_package_spec.rb +17 -10
- data/spec/unit/resource/windows_service_spec.rb +9 -6
- data/spec/unit/resource/yum_package_spec.rb +16 -21
- data/spec/unit/resource_collection/resource_list_spec.rb +137 -0
- data/spec/unit/resource_collection/resource_set_spec.rb +199 -0
- data/spec/unit/resource_collection_spec.rb +73 -92
- data/spec/unit/resource_definition_spec.rb +38 -40
- data/spec/unit/resource_reporter_spec.rb +3 -3
- data/spec/unit/resource_spec.rb +68 -33
- data/spec/unit/rest_spec.rb +83 -76
- data/spec/unit/role_spec.rb +5 -0
- data/spec/unit/run_list_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +245 -238
- data/spec/unit/shell/shell_ext_spec.rb +1 -1
- data/spec/unit/user_spec.rb +5 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +171 -0
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +169 -0
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +139 -0
- data/spec/unit/util/path_helper_spec.rb +23 -1
- data/spec/unit/util/powershell/cmdlet_spec.rb +106 -0
- data/spec/unit/workstation_config_loader_spec.rb +1 -1
- metadata +303 -196
- checksums.yaml +0 -7
- data/distro/README +0 -2
- data/distro/arch/etc/conf.d/chef-client.conf +0 -5
- data/distro/arch/etc/conf.d/chef-expander.conf +0 -8
- data/distro/arch/etc/conf.d/chef-server-webui.conf +0 -10
- data/distro/arch/etc/conf.d/chef-server.conf +0 -10
- data/distro/arch/etc/conf.d/chef-solr.conf +0 -8
- data/distro/arch/etc/rc.d/chef-client +0 -90
- data/distro/arch/etc/rc.d/chef-expander +0 -78
- data/distro/arch/etc/rc.d/chef-server +0 -78
- data/distro/arch/etc/rc.d/chef-server-webui +0 -78
- data/distro/arch/etc/rc.d/chef-solr +0 -78
- data/distro/debian/etc/default/chef-client +0 -4
- data/distro/debian/etc/default/chef-expander +0 -8
- data/distro/debian/etc/default/chef-server +0 -9
- data/distro/debian/etc/default/chef-server-webui +0 -9
- data/distro/debian/etc/default/chef-solr +0 -8
- data/distro/debian/etc/init.d/chef-client +0 -212
- data/distro/debian/etc/init.d/chef-expander +0 -176
- data/distro/debian/etc/init.d/chef-server +0 -122
- data/distro/debian/etc/init.d/chef-server-webui +0 -123
- data/distro/debian/etc/init.d/chef-solr +0 -176
- data/distro/debian/etc/init/chef-client.conf +0 -17
- data/distro/debian/etc/init/chef-expander.conf +0 -17
- data/distro/debian/etc/init/chef-server-webui.conf +0 -17
- data/distro/debian/etc/init/chef-server.conf +0 -17
- data/distro/debian/etc/init/chef-solr.conf +0 -17
- data/distro/redhat/etc/init.d/chef-client +0 -121
- data/distro/redhat/etc/init.d/chef-expander +0 -104
- data/distro/redhat/etc/init.d/chef-server +0 -112
- data/distro/redhat/etc/init.d/chef-server-webui +0 -112
- data/distro/redhat/etc/init.d/chef-solr +0 -104
- data/distro/redhat/etc/logrotate.d/chef-client +0 -8
- data/distro/redhat/etc/logrotate.d/chef-expander +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server-webui +0 -8
- data/distro/redhat/etc/logrotate.d/chef-solr +0 -8
- data/distro/redhat/etc/sysconfig/chef-client +0 -15
- data/distro/redhat/etc/sysconfig/chef-expander +0 -7
- data/distro/redhat/etc/sysconfig/chef-server +0 -14
- data/distro/redhat/etc/sysconfig/chef-server-webui +0 -14
- data/distro/redhat/etc/sysconfig/chef-solr +0 -8
- data/distro/windows/service_manager.rb +0 -20
- data/lib/chef/resource_platform_map.rb +0 -151
- data/spec/support/shared/matchers.rb +0 -17
- data/spec/unit/resource_platform_map_spec.rb +0 -164
data/lib/chef/cookbook_loader.rb
CHANGED
@@ -161,7 +161,7 @@ class Chef
|
|
161
161
|
@all_files_in_repo_paths ||=
|
162
162
|
begin
|
163
163
|
@repo_paths.inject([]) do |all_children, repo_path|
|
164
|
-
all_children += Dir[File.join(repo_path, "*")]
|
164
|
+
all_children += Dir[File.join(Chef::Util::PathHelper.escape_glob(repo_path), "*")]
|
165
165
|
end
|
166
166
|
end
|
167
167
|
end
|
@@ -315,13 +315,20 @@ class Chef
|
|
315
315
|
else
|
316
316
|
if segment == :files || segment == :templates
|
317
317
|
error_message = "Cookbook '#{name}' (#{version}) does not contain a file at any of these locations:\n"
|
318
|
-
error_locations =
|
319
|
-
" #{segment}
|
320
|
-
|
321
|
-
|
322
|
-
|
318
|
+
error_locations = if filename.is_a?(Array)
|
319
|
+
filename.map{|name| " #{File.join(segment.to_s, name)}"}
|
320
|
+
else
|
321
|
+
[
|
322
|
+
" #{segment}/#{node[:platform]}-#{node[:platform_version]}/#{filename}",
|
323
|
+
" #{segment}/#{node[:platform]}/#{filename}",
|
324
|
+
" #{segment}/default/#{filename}",
|
325
|
+
" #{segment}/#{filename}",
|
326
|
+
]
|
327
|
+
end
|
323
328
|
error_message << error_locations.join("\n")
|
324
329
|
existing_files = segment_filenames(segment)
|
330
|
+
# Strip the root_dir prefix off all files for readability
|
331
|
+
existing_files.map!{|path| path[root_dir.length+1..-1]} if root_dir
|
325
332
|
# Show the files that the cookbook does have. If the user made a typo,
|
326
333
|
# hopefully they'll see it here.
|
327
334
|
unless existing_files.empty?
|
@@ -421,38 +428,44 @@ class Chef
|
|
421
428
|
def preferences_for_path(node, segment, path)
|
422
429
|
# only files and templates can be platform-specific
|
423
430
|
if segment.to_sym == :files || segment.to_sym == :templates
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
version
|
431
|
-
|
432
|
-
|
431
|
+
relative_search_path = if path.is_a?(Array)
|
432
|
+
path
|
433
|
+
else
|
434
|
+
begin
|
435
|
+
platform, version = Chef::Platform.find_platform_and_version(node)
|
436
|
+
rescue ArgumentError => e
|
437
|
+
# Skip platform/version if they were not found by find_platform_and_version
|
438
|
+
if e.message =~ /Cannot find a (?:platform|version)/
|
439
|
+
platform = "/unknown_platform/"
|
440
|
+
version = "/unknown_platform_version/"
|
441
|
+
else
|
442
|
+
raise
|
443
|
+
end
|
433
444
|
end
|
434
|
-
end
|
435
445
|
|
436
|
-
|
446
|
+
fqdn = node[:fqdn]
|
437
447
|
|
438
|
-
|
439
|
-
|
440
|
-
|
448
|
+
# Break version into components, eg: "5.7.1" => [ "5.7.1", "5.7", "5" ]
|
449
|
+
search_versions = []
|
450
|
+
parts = version.to_s.split('.')
|
441
451
|
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
452
|
+
parts.size.times do
|
453
|
+
search_versions << parts.join('.')
|
454
|
+
parts.pop
|
455
|
+
end
|
446
456
|
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
457
|
+
# Most specific to least specific places to find the path
|
458
|
+
search_path = [ File.join("host-#{fqdn}", path) ]
|
459
|
+
search_versions.each do |v|
|
460
|
+
search_path << File.join("#{platform}-#{v}", path)
|
461
|
+
end
|
462
|
+
search_path << File.join(platform.to_s, path)
|
463
|
+
search_path << File.join("default", path)
|
464
|
+
search_path << path
|
454
465
|
|
455
|
-
|
466
|
+
search_path
|
467
|
+
end
|
468
|
+
relative_search_path.map {|relative_path| File.join(segment.to_s, relative_path)}
|
456
469
|
else
|
457
470
|
[File.join(segment, path)]
|
458
471
|
end
|
@@ -479,7 +492,7 @@ class Chef
|
|
479
492
|
cookbook_version.manifest = o
|
480
493
|
|
481
494
|
# We don't need the following step when we decide to stop supporting deprecated operators in the metadata (e.g. <<, >>)
|
482
|
-
cookbook_version.manifest["metadata"] = Chef::JSONCompat.from_json(cookbook_version.metadata
|
495
|
+
cookbook_version.manifest["metadata"] = Chef::JSONCompat.from_json(Chef::JSONCompat.to_json(cookbook_version.metadata))
|
483
496
|
|
484
497
|
cookbook_version.freeze_version if o["frozen?"]
|
485
498
|
cookbook_version
|
@@ -552,6 +565,11 @@ class Chef
|
|
552
565
|
chef_server_rest.get_rest('cookbooks')
|
553
566
|
end
|
554
567
|
|
568
|
+
# Alias latest_cookbooks as list
|
569
|
+
class << self
|
570
|
+
alias :latest_cookbooks :list
|
571
|
+
end
|
572
|
+
|
555
573
|
def self.list_all_versions
|
556
574
|
chef_server_rest.get_rest('cookbooks?num_versions=all')
|
557
575
|
end
|
@@ -575,11 +593,6 @@ class Chef
|
|
575
593
|
end
|
576
594
|
end
|
577
595
|
|
578
|
-
# Get the newest version of all cookbooks
|
579
|
-
def self.latest_cookbooks
|
580
|
-
chef_server_rest.get_rest('cookbooks/_latest')
|
581
|
-
end
|
582
|
-
|
583
596
|
def <=>(o)
|
584
597
|
raise Chef::Exceptions::CookbookVersionNameMismatch if self.name != o.name
|
585
598
|
# FIXME: can we change the interface to the Metadata class such
|
@@ -660,13 +673,19 @@ class Chef
|
|
660
673
|
|
661
674
|
def parse_segment_file_from_root_paths(segment, segment_file)
|
662
675
|
root_paths.each do |root_path|
|
663
|
-
pathname =
|
676
|
+
pathname = Chef::Util::PathHelper.relative_path_from(root_path, segment_file)
|
664
677
|
|
665
678
|
parts = pathname.each_filename.take(2)
|
666
679
|
# Check if path is actually under root_path
|
667
680
|
next if parts[0] == '..'
|
668
681
|
if segment == :templates || segment == :files
|
669
|
-
|
682
|
+
# Check if pathname looks like files/foo or templates/foo (unscoped)
|
683
|
+
if pathname.each_filename.to_a.length == 2
|
684
|
+
# Use root_default in case the same path exists at root_default and default
|
685
|
+
return [ pathname.to_s, 'root_default' ]
|
686
|
+
else
|
687
|
+
return [ pathname.to_s, parts[1] ]
|
688
|
+
end
|
670
689
|
else
|
671
690
|
return [ pathname.to_s, 'default' ]
|
672
691
|
end
|
data/lib/chef/data_bag.rb
CHANGED
@@ -90,7 +90,7 @@ class Chef
|
|
90
90
|
raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}' is invalid"
|
91
91
|
end
|
92
92
|
|
93
|
-
names += Dir.glob(File.join(path, "*")).map{|f|File.basename(f)}.sort
|
93
|
+
names += Dir.glob(File.join(Chef::Util::PathHelper.escape_glob(path), "*")).map{|f|File.basename(f)}.sort
|
94
94
|
end
|
95
95
|
names.inject({}) {|h, n| h[n] = n; h}
|
96
96
|
else
|
@@ -116,7 +116,7 @@ class Chef
|
|
116
116
|
raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}' is invalid"
|
117
117
|
end
|
118
118
|
|
119
|
-
Dir.glob(File.join(path, name.to_s, "*.json")).inject({}) do |bag, f|
|
119
|
+
Dir.glob(File.join(Chef::Util::PathHelper.escape_glob(path, name.to_s), "*.json")).inject({}) do |bag, f|
|
120
120
|
item = Chef::JSONCompat.from_json(IO.read(f))
|
121
121
|
|
122
122
|
# Check if we have multiple items with similar names (ids) and raise if their content differs
|
@@ -16,6 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
+
require 'chef/util/path_helper'
|
19
20
|
|
20
21
|
class Chef
|
21
22
|
module Deprecation
|
@@ -180,7 +181,7 @@ class Chef
|
|
180
181
|
|
181
182
|
# Clean up after the number of backups
|
182
183
|
slice_number = @new_resource.backup
|
183
|
-
backup_files = Dir[::
|
184
|
+
backup_files = Dir[Chef::Util::PathHelper.escape_glob(prefix, ".#{@new_resource.path}") + ".chef-*"].sort { |a,b| b <=> a }
|
184
185
|
if backup_files.length >= @new_resource.backup
|
185
186
|
remainder = backup_files.slice(slice_number..-1)
|
186
187
|
remainder.each do |backup_to_delete|
|
data/lib/chef/dsl/data_query.rb
CHANGED
@@ -20,6 +20,7 @@ require 'chef/search/query'
|
|
20
20
|
require 'chef/data_bag'
|
21
21
|
require 'chef/data_bag_item'
|
22
22
|
require 'chef/encrypted_data_bag_item'
|
23
|
+
require 'chef/encrypted_data_bag_item/check_encrypted'
|
23
24
|
|
24
25
|
class Chef
|
25
26
|
module DSL
|
@@ -28,6 +29,7 @@ class Chef
|
|
28
29
|
# Provides DSL for querying data from the chef-server via search or data
|
29
30
|
# bag.
|
30
31
|
module DataQuery
|
32
|
+
include Chef::EncryptedDataBagItem::CheckEncrypted
|
31
33
|
|
32
34
|
def search(*args, &block)
|
33
35
|
# If you pass a block, or have at least the start argument, do raw result parsing
|
@@ -78,35 +80,6 @@ class Chef
|
|
78
80
|
raise
|
79
81
|
end
|
80
82
|
|
81
|
-
private
|
82
|
-
|
83
|
-
# Tries to autodetect if the item's raw hash appears to be encrypted.
|
84
|
-
def encrypted?(raw_data)
|
85
|
-
data = raw_data.reject { |k, _| k == "id" } # Remove the "id" key.
|
86
|
-
# Assume hashes containing only the "id" key are not encrypted.
|
87
|
-
# Otherwise, remove the keys that don't appear to be encrypted and compare
|
88
|
-
# the result with the hash. If some entry has been removed, then some entry
|
89
|
-
# doesn't appear to be encrypted and we assume the entire hash is not encrypted.
|
90
|
-
data.empty? ? false : data.reject { |_, v| !looks_like_encrypted?(v) } == data
|
91
|
-
end
|
92
|
-
|
93
|
-
# Checks if data looks like it has been encrypted by
|
94
|
-
# Chef::EncryptedDataBagItem::Encryptor::VersionXEncryptor. Returns
|
95
|
-
# true only when there is an exact match between the VersionXEncryptor
|
96
|
-
# keys and the hash's keys.
|
97
|
-
def looks_like_encrypted?(data)
|
98
|
-
return false unless data.is_a?(Hash) && data.has_key?("version")
|
99
|
-
case data["version"]
|
100
|
-
when 1
|
101
|
-
Chef::EncryptedDataBagItem::Encryptor::Version1Encryptor.encryptor_keys.sort == data.keys.sort
|
102
|
-
when 2
|
103
|
-
Chef::EncryptedDataBagItem::Encryptor::Version2Encryptor.encryptor_keys.sort == data.keys.sort
|
104
|
-
when 3
|
105
|
-
Chef::EncryptedDataBagItem::Encryptor::Version3Encryptor.encryptor_keys.sort == data.keys.sort
|
106
|
-
else
|
107
|
-
false # version means something else... assume not encrypted.
|
108
|
-
end
|
109
|
-
end
|
110
83
|
end
|
111
84
|
end
|
112
85
|
end
|
data/lib/chef/dsl/recipe.rb
CHANGED
@@ -17,8 +17,8 @@
|
|
17
17
|
# limitations under the License.
|
18
18
|
#
|
19
19
|
|
20
|
-
require 'chef/resource_platform_map'
|
21
20
|
require 'chef/mixin/convert_to_class_name'
|
21
|
+
require 'chef/exceptions'
|
22
22
|
|
23
23
|
class Chef
|
24
24
|
module DSL
|
@@ -52,9 +52,7 @@ class Chef
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def has_resource_definition?(name)
|
55
|
-
|
56
|
-
|
57
|
-
yes_or_no
|
55
|
+
run_context.definitions.has_key?(name)
|
58
56
|
end
|
59
57
|
|
60
58
|
# Processes the arguments and block as a resource definition.
|
@@ -68,12 +66,10 @@ class Chef
|
|
68
66
|
# This sets up the parameter overrides
|
69
67
|
new_def.instance_eval(&block) if block
|
70
68
|
|
71
|
-
|
72
69
|
new_recipe = Chef::Recipe.new(cookbook_name, recipe_name, run_context)
|
73
70
|
new_recipe.params = new_def.params
|
74
71
|
new_recipe.params[:name] = args[0]
|
75
72
|
new_recipe.instance_eval(&new_def.recipe)
|
76
|
-
new_recipe
|
77
73
|
end
|
78
74
|
|
79
75
|
# Instantiates a resource (via #build_resource), then adds it to the
|
@@ -85,21 +81,7 @@ class Chef
|
|
85
81
|
|
86
82
|
resource = build_resource(type, name, created_at, &resource_attrs_block)
|
87
83
|
|
88
|
-
|
89
|
-
# (package || freebsd_package).
|
90
|
-
# https://github.com/opscode/chef/issues/1773
|
91
|
-
# For these resources we want to make sure
|
92
|
-
# their key in resource collection is same as the name they are declared
|
93
|
-
# as. Since this might be a breaking change for resources that define
|
94
|
-
# customer to_s methods, we are working around the issue by letting
|
95
|
-
# resources know of their created_as_type until this issue is fixed in
|
96
|
-
# Chef 12:
|
97
|
-
# https://github.com/opscode/chef/issues/1817
|
98
|
-
if resource.respond_to?(:created_as_type=)
|
99
|
-
resource.created_as_type = type
|
100
|
-
end
|
101
|
-
|
102
|
-
run_context.resource_collection.insert(resource)
|
84
|
+
run_context.resource_collection.insert(resource, resource_type:type, instance_name:name)
|
103
85
|
resource
|
104
86
|
end
|
105
87
|
|
@@ -123,7 +105,7 @@ class Chef
|
|
123
105
|
# This behavior is very counter-intuitive and should be removed.
|
124
106
|
# See CHEF-3694, https://tickets.opscode.com/browse/CHEF-3694
|
125
107
|
# Moved to this location to resolve CHEF-5052, https://tickets.opscode.com/browse/CHEF-5052
|
126
|
-
resource.load_prior_resource
|
108
|
+
resource.load_prior_resource(type, name)
|
127
109
|
resource.cookbook_name = cookbook_name
|
128
110
|
resource.recipe_name = recipe_name
|
129
111
|
# Determine whether this resource is being created in the context of an enclosing Provider
|
@@ -162,6 +144,10 @@ class Chef
|
|
162
144
|
end
|
163
145
|
end
|
164
146
|
|
147
|
+
def exec(args)
|
148
|
+
raise Chef::Exceptions::ResourceNotFound, "exec was called, but you probably meant to use an execute resource. If not, please call Kernel#exec explicitly. The exec block called was \"#{args}\""
|
149
|
+
end
|
150
|
+
|
165
151
|
end
|
166
152
|
end
|
167
153
|
end
|
@@ -45,7 +45,7 @@ class Chef::EncryptedDataBagItem
|
|
45
45
|
|
46
46
|
def assert_aead_requirements_met!(algorithm)
|
47
47
|
unless OpenSSL::Cipher.method_defined?(:auth_data=)
|
48
|
-
raise EncryptedDataBagRequirementsFailure, "The used Encrypted Data Bags version requires Ruby >=
|
48
|
+
raise EncryptedDataBagRequirementsFailure, "The used Encrypted Data Bags version requires Ruby >= 2.0"
|
49
49
|
end
|
50
50
|
unless OpenSSL::Cipher.ciphers.include?(algorithm)
|
51
51
|
raise EncryptedDataBagRequirementsFailure, "The used Encrypted Data Bags version requires an OpenSSL version with \"#{algorithm}\" algorithm support"
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Tyler Ball (<tball@getchef.com>)
|
3
|
+
# Copyright:: Copyright (c) 2010-2014 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/encrypted_data_bag_item/encryptor'
|
20
|
+
|
21
|
+
class Chef::EncryptedDataBagItem
|
22
|
+
# Common code for checking if a data bag appears encrypted
|
23
|
+
module CheckEncrypted
|
24
|
+
|
25
|
+
# Tries to autodetect if the item's raw hash appears to be encrypted.
|
26
|
+
def encrypted?(raw_data)
|
27
|
+
data = raw_data.reject { |k, _| k == "id" } # Remove the "id" key.
|
28
|
+
# Assume hashes containing only the "id" key are not encrypted.
|
29
|
+
# Otherwise, remove the keys that don't appear to be encrypted and compare
|
30
|
+
# the result with the hash. If some entry has been removed, then some entry
|
31
|
+
# doesn't appear to be encrypted and we assume the entire hash is not encrypted.
|
32
|
+
data.empty? ? false : data.reject { |_, v| !looks_like_encrypted?(v) } == data
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
# Checks if data looks like it has been encrypted by
|
38
|
+
# Chef::EncryptedDataBagItem::Encryptor::VersionXEncryptor. Returns
|
39
|
+
# true only when there is an exact match between the VersionXEncryptor
|
40
|
+
# keys and the hash's keys.
|
41
|
+
def looks_like_encrypted?(data)
|
42
|
+
return false unless data.is_a?(Hash) && data.has_key?("version")
|
43
|
+
case data["version"]
|
44
|
+
when 1
|
45
|
+
Chef::EncryptedDataBagItem::Encryptor::Version1Encryptor.encryptor_keys.sort == data.keys.sort
|
46
|
+
when 2
|
47
|
+
Chef::EncryptedDataBagItem::Encryptor::Version2Encryptor.encryptor_keys.sort == data.keys.sort
|
48
|
+
when 3
|
49
|
+
Chef::EncryptedDataBagItem::Encryptor::Version3Encryptor.encryptor_keys.sort == data.keys.sort
|
50
|
+
else
|
51
|
+
false # version means something else... assume not encrypted.
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -25,7 +25,7 @@ class Chef::EncryptedDataBagItem
|
|
25
25
|
|
26
26
|
def assert_requirements_met!
|
27
27
|
unless OpenSSL::Cipher.method_defined?(:auth_data=)
|
28
|
-
raise EncryptedDataBagRequirementsFailure, "The used Encrypted Data Bags version requires Ruby >=
|
28
|
+
raise EncryptedDataBagRequirementsFailure, "The used Encrypted Data Bags version requires Ruby >= 2.0"
|
29
29
|
end
|
30
30
|
unless OpenSSL::Cipher.ciphers.include?(algorithm)
|
31
31
|
raise EncryptedDataBagRequirementsFailure, "The used Encrypted Data Bags version requires an OpenSSL version with \"#{algorithm}\" algorithm support"
|
@@ -0,0 +1,62 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Jay Mundrawala (<jdm@getchef.com>)
|
3
|
+
#
|
4
|
+
# Copyright:: 2014, Chef Software, Inc.
|
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/event_dispatch/base'
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
module EventLoggers
|
23
|
+
class UnknownEventLogger < StandardError; end
|
24
|
+
class UnavailableEventLogger < StandardError; end
|
25
|
+
|
26
|
+
def self.event_loggers_by_name
|
27
|
+
@event_loggers_by_name ||= {}
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.register(name, logger)
|
31
|
+
event_loggers_by_name[name.to_s] = logger
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.by_name(name)
|
35
|
+
event_loggers_by_name[name]
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.available_event_loggers
|
39
|
+
event_loggers_by_name.select do |key, val|
|
40
|
+
val.available?
|
41
|
+
end.keys
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.new(name)
|
45
|
+
event_logger_class = by_name(name.to_s) or
|
46
|
+
raise UnknownEventLogger, "No event logger found for #{name} (available: #{available_event_loggers.join(', ')})"
|
47
|
+
raise UnavailableEventLogger unless available_event_loggers.include? name.to_s
|
48
|
+
event_logger_class.new
|
49
|
+
end
|
50
|
+
|
51
|
+
class Base < EventDispatch::Base
|
52
|
+
def self.short_name(name)
|
53
|
+
Chef::EventLoggers.register(name, self)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Returns true if this implementation of EventLoggers can be used
|
57
|
+
def self.available?
|
58
|
+
false
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|