chef 13.12.14-universal-mingw32 → 14.0.190-universal-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 +4 -4
- data/CONTRIBUTING.md +151 -0
- data/Gemfile +12 -9
- data/README.md +34 -32
- data/Rakefile +22 -18
- data/VERSION +1 -0
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +33 -0
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +272 -0
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +57 -0
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +68 -0
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -0
- data/acceptance/Gemfile +19 -0
- data/acceptance/Gemfile.lock +266 -0
- data/acceptance/README.md +137 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/metadata.rb +3 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
- data/acceptance/basics/.kitchen.yml +4 -0
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +19 -0
- data/acceptance/basics/test/integration/chef-current-install/serverspec/spec_helper.rb +6 -0
- data/acceptance/basics/test/integration/helpers/serverspec/Gemfile +8 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/metadata.rb +3 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/destroy.rb +2 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/provision.rb +2 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/verify.rb +2 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/.gitignore +16 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/Berksfile +3 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/api.rb +101 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/apigemfile +3 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-both-mode.rb +4 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-client-mode.rb +4 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-no-endpoint.rb +2 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-solo-mode.rb +4 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/config.ru +2 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +7 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/recipes/default.rb +44 -0
- data/acceptance/data-collector/.kitchen.yml +9 -0
- data/acceptance/data-collector/Berksfile +3 -0
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +208 -0
- data/acceptance/data-collector/test/integration/helpers/serverspec/Gemfile +8 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/metadata.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/verify.rb +61 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/cookbook_kitchen.rb +43 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +41 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/metadata.rb +3 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
- data/acceptance/top-cookbooks/.gitignore +1 -0
- data/acceptance/top-cookbooks/.kitchen.chocolatey.yml +6 -0
- data/acceptance/top-cookbooks/.kitchen.iis.yml +4 -0
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-rhel.yml +7 -0
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-ubuntu.yml +7 -0
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-windows.yml +7 -0
- data/acceptance/top-cookbooks/.kitchen.powershell.yml +4 -0
- data/acceptance/top-cookbooks/.kitchen.sql_server.yml +5 -0
- data/acceptance/top-cookbooks/.kitchen.winbox.yml +8 -0
- data/acceptance/top-cookbooks/.kitchen.windows.yml +38 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
- data/acceptance/trivial/.kitchen.yml +7 -0
- data/acceptance/trivial/test/integration/chef-current-install/inspec/chef_client_spec.rb +5 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/metadata.rb +2 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
- data/acceptance/windows-service/.kitchen.yml +7 -0
- data/acceptance/windows-service/test/integration/chef-windows-service/inspec/chef_windows_service_spec.rb +58 -0
- data/chef-universal-mingw32.gemspec +2 -2
- data/chef.gemspec +10 -10
- data/distro/powershell/chef/Chef.PowerShell.dll +0 -0
- data/distro/powershell/chef/Newtonsoft.Json.dll +0 -0
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/api_client/registration.rb +10 -2
- data/lib/chef/api_client_v1.rb +7 -6
- data/lib/chef/application.rb +75 -46
- data/lib/chef/application/client.rb +17 -19
- data/lib/chef/application/solo.rb +13 -16
- data/lib/chef/application/windows_service.rb +5 -5
- data/lib/chef/audit/audit_event_proxy.rb +1 -1
- data/lib/chef/audit/audit_reporter.rb +12 -12
- data/lib/chef/audit/runner.rb +2 -2
- data/lib/chef/chef_fs/chef_fs_data_store.rb +17 -31
- data/lib/chef/chef_fs/command_line.rb +9 -9
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +2 -2
- data/lib/chef/chef_fs/file_system_cache.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +2 -2
- data/lib/chef/client.rb +61 -41
- data/lib/chef/config.rb +1 -2
- data/lib/chef/config_fetcher.rb +1 -1
- data/lib/chef/cookbook/chefignore.rb +2 -2
- data/lib/chef/cookbook/cookbook_collection.rb +2 -2
- data/lib/chef/cookbook/cookbook_version_loader.rb +0 -1
- data/lib/chef/cookbook/gem_installer.rb +4 -4
- data/lib/chef/cookbook/manifest_v2.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +2 -3
- data/lib/chef/cookbook/remote_file_vendor.rb +4 -4
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook/syntax_check.rb +4 -4
- data/lib/chef/cookbook_loader.rb +10 -2
- data/lib/chef/cookbook_site_streaming_uploader.rb +4 -4
- data/lib/chef/cookbook_uploader.rb +2 -3
- data/lib/chef/cookbook_version.rb +5 -11
- data/lib/chef/data_bag.rb +1 -3
- data/lib/chef/data_bag_item.rb +1 -7
- data/lib/chef/data_collector.rb +111 -35
- data/lib/chef/data_collector/messages.rb +2 -2
- data/lib/chef/data_collector/messages/helpers.rb +2 -4
- data/lib/chef/deprecated.rb +0 -4
- data/lib/chef/dsl/data_query.rb +1 -5
- data/lib/chef/dsl/include_attribute.rb +3 -7
- data/lib/chef/dsl/include_recipe.rb +1 -5
- data/lib/chef/dsl/platform_introspection.rb +9 -13
- data/lib/chef/dsl/reboot_pending.rb +1 -8
- data/lib/chef/dsl/recipe.rb +2 -12
- data/lib/chef/dsl/universal.rb +3 -3
- data/lib/chef/environment.rb +2 -4
- data/lib/chef/event_dispatch/dsl.rb +2 -2
- data/lib/chef/exceptions.rb +1 -1
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_content_management/content_base.rb +3 -1
- data/lib/chef/file_content_management/deploy/cp.rb +2 -2
- data/lib/chef/file_content_management/deploy/mv_unix.rb +4 -4
- data/lib/chef/file_content_management/deploy/mv_windows.rb +1 -1
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +3 -3
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +3 -1
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +2 -2
- data/lib/chef/handler.rb +1 -3
- data/lib/chef/handler/json_file.rb +1 -2
- data/lib/chef/http.rb +23 -11
- data/lib/chef/http/auth_credentials.rb +1 -1
- data/lib/chef/http/basic_client.rb +16 -17
- data/lib/chef/http/decompressor.rb +6 -6
- data/lib/chef/http/http_request.rb +5 -5
- data/lib/chef/http/json_output.rb +2 -2
- data/lib/chef/http/socketless_chef_zero_client.rb +2 -2
- data/lib/chef/http/validate_content_length.rb +5 -5
- data/lib/chef/knife.rb +1 -1
- data/lib/chef/knife/bootstrap.rb +12 -37
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +7 -1
- data/lib/chef/knife/client_reregister.rb +1 -1
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/cookbook_download.rb +2 -2
- data/lib/chef/knife/cookbook_metadata.rb +3 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/cookbook_site_share.rb +5 -5
- data/lib/chef/knife/cookbook_test.rb +2 -2
- data/lib/chef/knife/cookbook_upload.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +22 -17
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/deps.rb +1 -1
- data/lib/chef/knife/environment_compare.rb +4 -4
- data/lib/chef/knife/exec.rb +3 -3
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/node_policy_set.rb +79 -0
- data/lib/chef/knife/osc_user_reregister.rb +1 -1
- data/lib/chef/knife/ssh.rb +35 -22
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/ssl_fetch.rb +1 -1
- data/lib/chef/knife/user_reregister.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +2 -4
- data/lib/chef/mixin/create_path.rb +1 -1
- data/lib/chef/mixin/deprecation.rb +14 -14
- data/lib/chef/mixin/from_file.rb +5 -0
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/homebrew_user.rb +13 -2
- data/lib/chef/mixin/openssl_helper.rb +119 -0
- data/lib/chef/mixin/params_validate.rb +2 -8
- data/lib/chef/mixin/powershell_exec.rb +105 -0
- data/lib/chef/mixin/provides.rb +3 -2
- data/lib/chef/mixin/securable.rb +1 -5
- data/lib/chef/mixin/shell_out.rb +2 -2
- data/lib/chef/mixin/template.rb +1 -3
- data/lib/chef/mixin/user_context.rb +6 -3
- data/lib/chef/mixin/why_run.rb +6 -11
- data/lib/chef/monkey_patches/net_http.rb +7 -7
- data/lib/chef/monologger.rb +2 -86
- data/lib/chef/node.rb +30 -20
- data/lib/chef/node/attribute.rb +1 -6
- data/lib/chef/node/attribute_collections.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/immutablize_array.rb +110 -3
- data/lib/chef/node/mixin/immutablize_hash.rb +111 -5
- data/lib/chef/node_map.rb +5 -23
- data/lib/chef/platform/query_helpers.rb +0 -12
- data/lib/chef/policy_builder/dynamic.rb +1 -1
- data/lib/chef/policy_builder/expand_node_object.rb +1 -1
- data/lib/chef/policy_builder/policyfile.rb +17 -1
- data/lib/chef/powershell.rb +55 -0
- data/lib/chef/property.rb +12 -34
- data/lib/chef/provider.rb +16 -39
- data/lib/chef/provider/apt_preference.rb +3 -3
- data/lib/chef/provider/apt_repository.rb +116 -34
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/cookbook_file/content.rb +1 -1
- data/lib/chef/provider/cron.rb +10 -10
- data/lib/chef/provider/cron/unix.rb +3 -3
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +4 -4
- data/lib/chef/provider/dsc_script.rb +4 -4
- data/lib/chef/provider/execute.rb +9 -5
- data/lib/chef/provider/file.rb +12 -12
- data/lib/chef/provider/git.rb +14 -14
- data/lib/chef/provider/group.rb +6 -6
- data/lib/chef/provider/group/aix.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +4 -4
- data/lib/chef/provider/group/groupadd.rb +4 -4
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +4 -4
- data/lib/chef/provider/group/windows.rb +2 -2
- data/lib/chef/provider/http_request.rb +12 -12
- data/lib/chef/provider/ifconfig.rb +6 -6
- data/lib/chef/provider/ifconfig/aix.rb +1 -1
- data/lib/chef/provider/ifconfig/debian.rb +3 -5
- data/lib/chef/provider/launchd.rb +1 -1
- data/lib/chef/provider/link.rb +6 -6
- data/lib/chef/provider/log.rb +1 -1
- data/lib/chef/provider/lwrp_base.rb +2 -2
- data/lib/chef/provider/mdadm.rb +10 -10
- data/lib/chef/provider/mount.rb +12 -12
- data/lib/chef/provider/mount/aix.rb +20 -21
- data/lib/chef/provider/mount/mount.rb +20 -15
- data/lib/chef/provider/mount/solaris.rb +6 -6
- data/lib/chef/provider/mount/windows.rb +7 -7
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -1
- data/lib/chef/provider/osx_profile.rb +8 -8
- data/lib/chef/provider/package.rb +56 -42
- data/lib/chef/provider/package/apt.rb +24 -14
- data/lib/chef/provider/package/{aix.rb → bff.rb} +12 -12
- data/lib/chef/provider/package/cab.rb +3 -3
- data/lib/chef/provider/package/chocolatey.rb +1 -9
- data/lib/chef/provider/package/dnf/python_helper.rb +6 -6
- data/lib/chef/provider/package/dpkg.rb +9 -9
- data/lib/chef/provider/package/freebsd/base.rb +2 -2
- data/lib/chef/provider/package/freebsd/pkg.rb +2 -2
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/homebrew.rb +3 -3
- data/lib/chef/provider/package/ips.rb +2 -2
- data/lib/chef/provider/package/macports.rb +3 -3
- data/lib/chef/provider/package/msu.rb +2 -2
- data/lib/chef/provider/package/openbsd.rb +3 -3
- data/lib/chef/provider/package/pacman.rb +3 -3
- data/lib/chef/provider/package/paludis.rb +2 -2
- data/lib/chef/provider/package/portage.rb +27 -33
- data/lib/chef/provider/package/powershell.rb +24 -9
- data/lib/chef/provider/package/rpm.rb +5 -6
- data/lib/chef/provider/package/rubygems.rb +32 -28
- data/lib/chef/provider/package/smartos.rb +6 -6
- data/lib/chef/provider/package/solaris.rb +10 -10
- data/lib/chef/provider/package/windows.rb +6 -15
- data/lib/chef/provider/package/windows/exe.rb +6 -4
- data/lib/chef/provider/package/windows/msi.rb +8 -6
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -6
- data/lib/chef/provider/package/yum.rb +167 -398
- data/lib/chef/provider/package/yum/python_helper.rb +221 -0
- data/lib/chef/provider/package/yum/rpm_utils.rb +10 -1
- data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +79 -0
- data/lib/chef/provider/package/yum/simplejson/__init__.py +318 -0
- data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/decoder.py +354 -0
- data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/encoder.py +440 -0
- data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/scanner.py +65 -0
- data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/tool.py +37 -0
- data/lib/chef/provider/package/yum/version.rb +56 -0
- data/lib/chef/provider/package/yum/yum_cache.rb +33 -316
- data/lib/chef/provider/package/yum/yum_helper.py +198 -0
- data/lib/chef/provider/package/zypper.rb +9 -13
- data/lib/chef/provider/powershell_script.rb +3 -3
- data/lib/chef/provider/reboot.rb +3 -3
- data/lib/chef/provider/registry_key.rb +16 -4
- data/lib/chef/provider/remote_directory.rb +1 -3
- data/lib/chef/provider/remote_file/cache_control_data.rb +1 -1
- data/lib/chef/provider/remote_file/content.rb +4 -4
- data/lib/chef/provider/remote_file/http.rb +5 -3
- data/lib/chef/provider/remote_file/local_file.rb +1 -1
- data/lib/chef/provider/remote_file/network_file.rb +2 -2
- data/lib/chef/provider/route.rb +12 -11
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +14 -14
- data/lib/chef/provider/service/aix.rb +3 -3
- data/lib/chef/provider/service/aixinit.rb +2 -2
- data/lib/chef/provider/service/debian.rb +5 -5
- data/lib/chef/provider/service/freebsd.rb +3 -3
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +8 -8
- data/lib/chef/provider/service/openbsd.rb +1 -1
- data/lib/chef/provider/service/simple.rb +7 -7
- data/lib/chef/provider/service/systemd.rb +4 -4
- data/lib/chef/provider/service/upstart.rb +10 -9
- data/lib/chef/provider/service/windows.rb +245 -70
- data/lib/chef/provider/subversion.rb +8 -8
- data/lib/chef/provider/systemd_unit.rb +25 -6
- data/lib/chef/provider/user.rb +10 -10
- data/lib/chef/provider/user/aix.rb +3 -3
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/pw.rb +4 -4
- data/lib/chef/provider/user/solaris.rb +1 -1
- data/lib/chef/provider/user/useradd.rb +3 -3
- data/lib/chef/provider/user/windows.rb +4 -4
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/{env.rb → windows_env.rb} +55 -19
- data/lib/chef/provider/windows_task.rb +27 -27
- data/lib/chef/provider/zypper_repository.rb +7 -7
- data/lib/chef/provider_resolver.rb +4 -4
- data/lib/chef/providers.rb +2 -9
- data/lib/chef/resource.rb +19 -13
- data/lib/chef/resource/action_class.rb +2 -2
- data/lib/chef/resource/apt_package.rb +10 -4
- data/lib/chef/resource/apt_preference.rb +20 -7
- data/lib/chef/resource/apt_repository.rb +21 -12
- data/lib/chef/resource/apt_update.rb +3 -3
- data/lib/chef/resource/bash.rb +6 -4
- data/lib/chef/resource/batch.rb +8 -6
- data/lib/chef/resource/bff_package.rb +8 -5
- data/lib/chef/resource/breakpoint.rb +9 -6
- data/lib/chef/resource/build_essential.rb +139 -0
- data/lib/chef/resource/cab_package.rb +5 -4
- data/lib/chef/resource/chef_gem.rb +1 -1
- data/lib/chef/resource/chef_handler.rb +130 -0
- data/lib/chef/resource/chocolatey_package.rb +6 -6
- data/lib/chef/resource/cookbook_file.rb +12 -9
- data/lib/chef/resource/cron.rb +14 -75
- data/lib/chef/resource/csh.rb +6 -4
- data/lib/chef/resource/directory.rb +7 -4
- data/lib/chef/resource/dmg_package.rb +161 -0
- data/lib/chef/resource/dnf_package.rb +10 -7
- data/lib/chef/resource/dpkg_package.rb +5 -3
- data/lib/chef/resource/dsc_resource.rb +11 -28
- data/lib/chef/resource/dsc_script.rb +14 -37
- data/lib/chef/resource/execute.rb +15 -78
- data/lib/chef/resource/file.rb +6 -5
- data/lib/chef/resource/file/verification.rb +5 -1
- data/lib/chef/resource/freebsd_package.rb +2 -1
- data/lib/chef/resource/gem_package.rb +6 -3
- data/lib/chef/resource/git.rb +4 -15
- data/lib/chef/resource/group.rb +7 -46
- data/lib/chef/resource/homebrew_cask.rb +98 -0
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_tap.rb +86 -0
- data/lib/chef/resource/hostname.rb +249 -0
- data/lib/chef/resource/http_request.rb +8 -22
- data/lib/chef/resource/ifconfig.rb +3 -2
- data/lib/chef/resource/ips_package.rb +4 -3
- data/lib/chef/resource/ksh.rb +7 -6
- data/lib/chef/resource/launchd.rb +4 -4
- data/lib/chef/resource/link.rb +18 -56
- data/lib/chef/resource/log.rb +6 -8
- data/lib/chef/resource/lwrp_base.rb +4 -5
- data/lib/chef/resource/macos_userdefaults.rb +133 -0
- data/lib/chef/resource/macosx_service.rb +7 -23
- data/lib/chef/resource/macports_package.rb +2 -1
- data/lib/chef/resource/mdadm.rb +13 -84
- data/lib/chef/resource/mount.rb +21 -127
- data/lib/chef/resource/msu_package.rb +4 -4
- data/lib/chef/resource/ohai.rb +5 -3
- data/lib/chef/resource/ohai_hint.rb +93 -0
- data/lib/chef/resource/openbsd_package.rb +3 -3
- data/lib/chef/resource/openssl_dhparam.rb +80 -0
- data/lib/chef/resource/openssl_rsa_private_key.rb +93 -0
- data/lib/chef/resource/openssl_rsa_public_key.rb +73 -0
- data/lib/chef/resource/osx_profile.rb +9 -10
- data/lib/chef/resource/package.rb +8 -6
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +4 -4
- data/lib/chef/resource/perl.rb +6 -4
- data/lib/chef/resource/portage_package.rb +3 -6
- data/lib/chef/resource/powershell_package.rb +9 -13
- data/lib/chef/resource/powershell_script.rb +9 -8
- data/lib/chef/resource/python.rb +5 -4
- data/lib/chef/resource/reboot.rb +8 -9
- data/lib/chef/resource/registry_key.rb +9 -19
- data/lib/chef/resource/remote_directory.rb +5 -3
- data/lib/chef/resource/remote_file.rb +11 -50
- data/lib/chef/resource/resource_notification.rb +2 -2
- data/lib/chef/resource/rhsm_errata.rb +44 -0
- data/lib/chef/resource/rhsm_errata_level.rb +51 -0
- data/lib/chef/resource/rhsm_register.rb +162 -0
- data/lib/chef/resource/rhsm_repo.rb +62 -0
- data/lib/chef/resource/rhsm_subscription.rb +95 -0
- data/lib/chef/resource/route.rb +3 -1
- data/lib/chef/resource/rpm_package.rb +3 -3
- data/lib/chef/resource/ruby.rb +6 -4
- data/lib/chef/resource/ruby_block.rb +6 -17
- data/lib/chef/resource/scm.rb +14 -146
- data/lib/chef/resource/script.rb +7 -5
- data/lib/chef/resource/service.rb +2 -1
- data/lib/chef/resource/smartos_package.rb +4 -3
- data/lib/chef/resource/solaris_package.rb +3 -2
- data/lib/chef/resource/subversion.rb +20 -4
- data/lib/chef/resource/sudo.rb +231 -0
- data/lib/chef/resource/support/sudoer.erb +18 -0
- data/lib/chef/resource/swap_file.rb +209 -0
- data/lib/chef/resource/sysctl.rb +111 -0
- data/lib/chef/resource/systemd_unit.rb +6 -5
- data/lib/chef/resource/template.rb +6 -27
- data/lib/chef/resource/windows_ad_join.rb +92 -0
- data/lib/chef/resource/windows_auto_run.rb +87 -0
- data/lib/chef/resource/{env.rb → windows_env.rb} +11 -5
- data/lib/chef/resource/windows_feature.rb +95 -0
- data/lib/chef/resource/windows_feature_dism.rb +226 -0
- data/lib/chef/resource/windows_feature_powershell.rb +256 -0
- data/lib/chef/resource/windows_font.rb +127 -0
- data/lib/chef/resource/windows_package.rb +5 -3
- data/lib/chef/resource/windows_pagefile.rb +206 -0
- data/lib/chef/resource/windows_path.rb +3 -3
- data/lib/chef/resource/windows_printer.rb +148 -0
- data/lib/chef/resource/windows_printer_port.rb +136 -0
- data/lib/chef/resource/windows_service.rb +79 -38
- data/lib/chef/resource/windows_shortcut.rb +79 -0
- data/lib/chef/resource/windows_task.rb +5 -5
- data/lib/chef/resource/yum_package.rb +8 -2
- data/lib/chef/resource/yum_repository.rb +12 -5
- data/lib/chef/resource/zypper_package.rb +5 -3
- data/lib/chef/resource/zypper_repository.rb +17 -12
- data/lib/chef/resource_inspector.rb +89 -0
- data/lib/chef/resource_reporter.rb +5 -6
- data/lib/chef/resource_resolver.rb +4 -4
- data/lib/chef/resources.rb +31 -6
- data/lib/chef/role.rb +1 -3
- data/lib/chef/run_context.rb +21 -12
- data/lib/chef/run_context/cookbook_compiler.rb +18 -9
- data/lib/chef/search/query.rb +1 -2
- data/lib/chef/shell.rb +0 -1
- data/lib/chef/shell/model_wrapper.rb +1 -1
- data/lib/chef/shell/shell_session.rb +4 -3
- data/lib/chef/util/diff.rb +2 -2
- data/lib/chef/util/dsc/configuration_generator.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/dsc/local_configuration_manager.rb +4 -4
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/logon_session.rb +5 -2
- data/lib/chef/util/windows/net_user.rb +2 -2
- data/lib/chef/util/windows/volume.rb +0 -4
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/error.rb +2 -2
- data/lib/chef/win32/api/net.rb +1 -1
- data/lib/chef/win32/api/security.rb +11 -0
- data/lib/chef/win32/eventlog.rb +2 -2
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/registry.rb +17 -17
- data/lib/chef/win32/security.rb +34 -12
- data/lib/chef/win32/security/sid.rb +1 -2
- data/lib/chef/win32/version.rb +2 -15
- data/lib/chef/win32_service_constants.rb +143 -0
- data/spec/data/mixin/invalid_data.rb +3 -0
- data/spec/data/mixin/real_data.rb +2 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.aarch64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.i686.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64le.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.s390x.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.src.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.x86_64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.aarch64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.i686.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64le.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.s390x.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.src.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.x86_64.rpm +0 -0
- data/spec/functional/assets/yumrepo/repodata/4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/primary.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/repomd.xml +19 -53
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +2 -2
- data/spec/functional/http/simple_spec.rb +6 -6
- data/spec/functional/mixin/from_file_spec.rb +82 -0
- data/spec/functional/notifications_spec.rb +1 -1
- data/spec/functional/resource/{package_spec.rb → apt_package_spec.rb} +4 -4
- data/spec/functional/resource/dnf_package_spec.rb +115 -115
- data/spec/functional/resource/ifconfig_spec.rb +1 -2
- data/spec/functional/resource/link_spec.rb +9 -13
- data/spec/functional/resource/powershell_script_spec.rb +0 -2
- data/spec/functional/resource/registry_spec.rb +3 -3
- data/spec/functional/resource/remote_file_spec.rb +4 -4
- data/spec/functional/resource/user/windows_spec.rb +3 -1
- data/spec/functional/resource/windows_env_spec.rb +285 -0
- data/spec/functional/resource/windows_task_spec.rb +303 -2
- data/spec/functional/resource/yum_package_spec.rb +949 -0
- data/spec/functional/root_alias_spec.rb +1 -1
- data/spec/functional/win32/security_spec.rb +60 -7
- data/spec/functional/win32/versions_spec.rb +7 -9
- data/spec/integration/client/client_spec.rb +99 -7
- data/spec/integration/knife/chef_fs_data_store_spec.rb +23 -4
- data/spec/integration/recipes/recipe_dsl_spec.rb +26 -26
- data/spec/integration/recipes/resource_action_spec.rb +25 -120
- data/spec/spec_helper.rb +10 -2
- data/spec/support/lib/chef/resource/one_two_three_four.rb +0 -2
- data/spec/support/lib/chef/resource/zen_master.rb +1 -3
- data/spec/support/mock/constant.rb +1 -1
- data/spec/support/platform_helpers.rb +24 -7
- data/spec/support/shared/context/client.rb +13 -10
- data/spec/support/shared/examples/client.rb +50 -0
- data/spec/support/shared/functional/file_resource.rb +1 -1
- data/spec/support/shared/functional/securable_resource.rb +2 -2
- data/spec/support/shared/integration/knife_support.rb +5 -0
- data/spec/unit/application/client_spec.rb +39 -13
- data/spec/unit/application/solo_spec.rb +1 -8
- data/spec/unit/application_spec.rb +66 -2
- data/spec/unit/audit/audit_event_proxy_spec.rb +1 -1
- data/spec/unit/audit/audit_reporter_spec.rb +16 -16
- data/spec/unit/chef_fs/file_system_spec.rb +1 -1
- data/spec/unit/client_spec.rb +3 -4
- data/spec/unit/cookbook/metadata_spec.rb +1 -1
- data/spec/unit/cookbook_loader_spec.rb +6 -6
- data/spec/unit/cookbook_manifest_spec.rb +2 -2
- data/spec/unit/cookbook_version_file_specificity_spec.rb +5 -25
- data/spec/unit/data_collector/messages/helpers_spec.rb +9 -0
- data/spec/unit/data_collector/resource_report_spec.rb +3 -3
- data/spec/unit/data_collector_spec.rb +135 -1
- data/spec/unit/dsl/reboot_pending_spec.rb +0 -13
- data/spec/unit/dsl/recipe_spec.rb +0 -13
- data/spec/unit/environment_spec.rb +2 -2
- data/spec/unit/exceptions_spec.rb +1 -1
- data/spec/unit/http/validate_content_length_spec.rb +5 -5
- data/spec/unit/knife/bootstrap_spec.rb +11 -15
- data/spec/unit/knife/configure_spec.rb +1 -2
- data/spec/unit/knife/cookbook_test_spec.rb +2 -2
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +2 -2
- data/spec/unit/knife/core/node_editor_spec.rb +6 -6
- data/spec/unit/knife/environment_compare_spec.rb +3 -3
- data/spec/unit/knife/node_edit_spec.rb +3 -1
- data/spec/unit/knife/node_policy_set_spec.rb +122 -0
- data/spec/unit/knife/osc_user_reregister_spec.rb +1 -1
- data/spec/unit/knife/osc_user_show_spec.rb +1 -1
- data/spec/unit/knife/ssh_spec.rb +18 -0
- data/spec/unit/log/syslog_spec.rb +2 -4
- data/spec/unit/log/winevt_spec.rb +2 -3
- data/spec/unit/lwrp_spec.rb +4 -4
- data/spec/unit/mixin/homebrew_user_spec.rb +1 -5
- data/spec/unit/mixin/openssl_helper_spec.rb +252 -0
- data/spec/unit/mixin/powershell_exec_spec.rb +43 -0
- data/spec/unit/node/attribute_spec.rb +3 -3
- data/spec/unit/node/immutable_collections_spec.rb +11 -1
- data/spec/unit/node_map_spec.rb +2 -2
- data/spec/unit/node_spec.rb +11 -16
- data/spec/unit/platform/query_helpers_spec.rb +0 -13
- data/spec/unit/policy_builder/policyfile_spec.rb +79 -2
- data/spec/unit/property/validation_spec.rb +51 -4
- data/spec/unit/provider/apt_repository_spec.rb +97 -32
- data/spec/unit/provider/cookbook_file_spec.rb +2 -1
- data/spec/unit/provider/cron/unix_spec.rb +8 -3
- data/spec/unit/provider/cron_spec.rb +27 -32
- data/spec/unit/provider/file_spec.rb +2 -1
- data/spec/unit/provider/group/dscl_spec.rb +7 -8
- data/spec/unit/provider/group/gpasswd_spec.rb +5 -2
- data/spec/unit/provider/group/groupmod_spec.rb +6 -3
- data/spec/unit/provider/group/pw_spec.rb +5 -2
- data/spec/unit/provider/link_spec.rb +6 -4
- data/spec/unit/provider/log_spec.rb +18 -13
- data/spec/unit/provider/mount/aix_spec.rb +1 -9
- data/spec/unit/provider/mount/mount_spec.rb +22 -0
- data/spec/unit/provider/osx_profile_spec.rb +3 -3
- data/spec/unit/provider/package/apt_spec.rb +431 -411
- data/spec/unit/provider/package/{aix_spec.rb → bff_spec.rb} +7 -5
- data/spec/unit/provider/package/chocolatey_spec.rb +0 -13
- data/spec/unit/provider/package/homebrew_spec.rb +2 -1
- data/spec/unit/provider/package/portage_spec.rb +11 -147
- data/spec/unit/provider/package/powershell_spec.rb +208 -57
- data/spec/unit/provider/package/rubygems_spec.rb +11 -2
- data/spec/unit/provider/package/windows_spec.rb +0 -19
- data/spec/unit/provider/package/yum/python_helper_spec.rb +29 -0
- data/spec/unit/provider/package/yum/yum_cache_spec.rb +86 -4
- data/spec/unit/provider/package/zypper_spec.rb +8 -0
- data/spec/unit/provider/package_spec.rb +47 -20
- data/spec/unit/provider/registry_key_spec.rb +7 -1
- data/spec/unit/provider/remote_directory_spec.rb +1 -1
- data/spec/unit/provider/remote_file_spec.rb +2 -1
- data/spec/unit/provider/service/macosx_spec.rb +4 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +2 -10
- data/spec/unit/provider/service/windows_spec.rb +447 -30
- data/spec/unit/provider/systemd_unit_spec.rb +50 -13
- data/spec/unit/provider/template_spec.rb +2 -4
- data/spec/unit/provider/user/windows_spec.rb +3 -0
- data/spec/unit/provider/{env_spec.rb → windows_env_spec.rb} +102 -12
- data/spec/unit/provider/zypper_repository_spec.rb +4 -2
- data/spec/unit/provider_resolver_spec.rb +23 -38
- data/spec/unit/recipe_spec.rb +4 -4
- data/spec/unit/resource/apt_package_spec.rb +4 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -5
- data/spec/unit/resource/apt_repository_spec.rb +35 -10
- data/spec/unit/resource/apt_update_spec.rb +0 -5
- data/spec/unit/resource/bash_spec.rb +2 -3
- data/spec/unit/resource/batch_spec.rb +1 -4
- data/spec/unit/resource/{timestamped_deploy_spec.rb → build_essential_spec.rb} +10 -11
- data/spec/unit/resource/cab_package_spec.rb +1 -3
- data/{lib/chef/mixin/language_include_attribute.rb → spec/unit/resource/chef_handler_spec.rb} +13 -12
- data/spec/unit/resource/chocolatey_package_spec.rb +1 -3
- data/spec/unit/resource/cron_spec.rb +0 -5
- data/spec/unit/resource/csh_spec.rb +2 -3
- data/spec/unit/resource/directory_spec.rb +1 -6
- data/{lib/chef/resource/deploy_revision.rb → spec/unit/resource/dmg_package_spec.rb} +14 -10
- data/spec/unit/resource/dnf_package_spec.rb +20 -26
- data/spec/unit/resource/file_spec.rb +1 -1
- data/spec/unit/resource/freebsd_package_spec.rb +22 -23
- data/spec/unit/resource/gem_package_spec.rb +3 -5
- data/spec/unit/resource/git_spec.rb +1 -2
- data/spec/unit/resource/group_spec.rb +0 -5
- data/spec/unit/resource/homebrew_cask_spec.rb +35 -0
- data/spec/unit/resource/homebrew_package_spec.rb +4 -0
- data/spec/unit/resource/homebrew_tap_spec.rb +39 -0
- data/spec/unit/resource/hostname_spec.rb +43 -0
- data/spec/unit/resource/http_request_spec.rb +0 -5
- data/spec/unit/resource/ips_package_spec.rb +4 -0
- data/spec/unit/resource/ksh_spec.rb +2 -3
- data/spec/unit/resource/launchd_spec.rb +0 -5
- data/spec/unit/resource/link_spec.rb +1 -6
- data/spec/unit/resource/log_spec.rb +0 -5
- data/spec/unit/resource/macos_user_defaults_spec.rb +45 -0
- data/spec/unit/resource/mdadm_spec.rb +0 -5
- data/spec/unit/resource/mount_spec.rb +1 -6
- data/spec/unit/resource/msu_package_spec.rb +1 -3
- data/spec/unit/resource/ohai_hint_spec.rb +43 -0
- data/spec/unit/resource/ohai_spec.rb +0 -5
- data/spec/unit/resource/openbsd_package_spec.rb +8 -12
- data/spec/unit/resource/openssl_dhparam.rb +51 -0
- data/spec/unit/resource/openssl_rsa_private_key_spec.rb +59 -0
- data/spec/unit/resource/openssl_rsa_public_key_spec.rb +39 -0
- data/spec/unit/resource/osx_profile_spec.rb +0 -5
- data/spec/unit/resource/package_spec.rb +0 -5
- data/spec/unit/resource/perl_spec.rb +2 -3
- data/spec/unit/resource/portage_package_spec.rb +3 -7
- data/spec/unit/resource/powershell_package_spec.rb +11 -4
- data/spec/unit/resource/python_spec.rb +0 -5
- data/spec/unit/resource/reboot_spec.rb +0 -5
- data/spec/unit/resource/registry_key_spec.rb +5 -6
- data/spec/unit/resource/remote_directory_spec.rb +0 -5
- data/spec/unit/resource/remote_file_spec.rb +1 -5
- data/spec/unit/resource/rhsm_errata_level_spec.rb +46 -0
- data/{lib/chef/mixin/language_include_recipe.rb → spec/unit/resource/rhsm_errata_spec.rb} +14 -10
- data/spec/unit/resource/rhsm_register_spec.rb +199 -0
- data/spec/unit/resource/rhsm_repo_spec.rb +59 -0
- data/spec/unit/resource/rhsm_subscription_spec.rb +93 -0
- data/spec/unit/resource/route_spec.rb +1 -6
- data/spec/unit/resource/rpm_package_spec.rb +4 -0
- data/spec/unit/resource/ruby_block_spec.rb +0 -5
- data/spec/unit/resource/ruby_spec.rb +0 -5
- data/spec/unit/resource/scm_spec.rb +0 -15
- data/spec/unit/resource/service_spec.rb +0 -5
- data/spec/unit/resource/subversion_spec.rb +12 -0
- data/spec/unit/resource/sudo_spec.rb +92 -0
- data/spec/unit/resource/swap_file_spec.rb +40 -0
- data/spec/unit/resource/sysctl_spec.rb +56 -0
- data/spec/unit/resource/systemd_unit_spec.rb +5 -7
- data/spec/unit/resource/template_spec.rb +1 -3
- data/spec/unit/resource/user_spec.rb +0 -5
- data/spec/unit/resource/windows_ad_join.rb +45 -0
- data/spec/unit/resource/windows_auto_run_spec.rb +50 -0
- data/spec/unit/resource/{env_spec.rb → windows_env_spec.rb} +19 -21
- data/spec/unit/resource/windows_feature.rb +41 -0
- data/spec/unit/resource/windows_feature_dism.rb +51 -0
- data/spec/unit/resource/windows_feature_powershell.rb +51 -0
- data/spec/unit/resource/windows_font_spec.rb +44 -0
- data/spec/unit/resource/windows_package_spec.rb +2 -2
- data/spec/unit/resource/windows_pagefile_spec.rb +45 -0
- data/spec/unit/resource/windows_printer_port_spec.rb +45 -0
- data/spec/unit/resource/windows_printer_spec.rb +45 -0
- data/spec/unit/resource/windows_service_spec.rb +25 -4
- data/spec/unit/resource/windows_shortcut_spec.rb +39 -0
- data/spec/unit/resource/windows_task_spec.rb +0 -5
- data/spec/unit/resource/yum_repository_spec.rb +4 -0
- data/spec/unit/resource/zypper_repository_spec.rb +4 -0
- data/spec/unit/resource_inspector_spec.rb +60 -0
- data/spec/unit/resource_reporter_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +0 -5
- data/spec/unit/shell/shell_session_spec.rb +0 -1
- data/spec/unit/user_spec.rb +1 -1
- data/spec/unit/util/windows/logon_session_spec.rb +2 -1
- data/spec/unit/win32/security_spec.rb +44 -1
- data/spec/unit/windows_service_spec.rb +4 -2
- data/tasks/announce.rb +1 -1
- data/tasks/cbgb.rb +84 -0
- data/tasks/dependencies.rb +38 -2
- data/tasks/maintainers.rb +7 -7
- data/tasks/rspec.rb +2 -2
- data/tasks/templates/prerelease.md.erb +2 -11
- data/tasks/templates/release.md.erb +1 -9
- metadata +225 -96
- data/lib/chef/knife/help.rb +0 -101
- data/lib/chef/knife/help_topics.rb +0 -4
- data/lib/chef/knife/index_rebuild.rb +0 -133
- data/lib/chef/mixin/language.rb +0 -48
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +0 -35
- data/lib/chef/provider/deploy.rb +0 -470
- data/lib/chef/provider/deploy/revision.rb +0 -107
- data/lib/chef/provider/deploy/timestamped.rb +0 -34
- data/lib/chef/provider/env/windows.rb +0 -76
- data/lib/chef/provider/erl_call.rb +0 -76
- data/lib/chef/provider/package/yum/yum-dump.py +0 -307
- data/lib/chef/resource/deploy.rb +0 -449
- data/lib/chef/resource/erl_call.rb +0 -90
- data/lib/chef/resource/timestamped_deploy.rb +0 -26
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.i686.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.src.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.x86_64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.i686.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.src.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.x86_64.rpm +0 -0
- data/spec/functional/assets/yumrepo/repodata/313329137b55fd333b2dc66394a6661a2befa6cc535d8460d92a4a78a9c581f0-primary.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/31ac4db5d5ac593728fcc26aef82b7b93c4cc4dbec843786b1845b939b658553-other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/4ac40fa3c6728c1401318e2e20a997436624e83dcf7a5f952b851ef422637773-filelists.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/66391e53f0510b98b3f0b79f40ba1048026d9a1ef20905d9c40ba6f5411f3243-primary.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/8b34697595fcc87928e12d24644dda9462c3857bd932861e28bc77ae1f31be16-filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/b97cca3fe14bcf06c52be4449b6108f7731239ff221111dcce8aada5467f60dc-other.sqlite.bz2 +0 -0
- data/spec/functional/resource/deploy_revision_spec.rb +0 -881
- data/spec/functional/resource/env_spec.rb +0 -192
- data/spec/unit/knife/index_rebuild_spec.rb +0 -125
- data/spec/unit/knife/knife_help.rb +0 -92
- data/spec/unit/provider/deploy/revision_spec.rb +0 -110
- data/spec/unit/provider/deploy/timestamped_spec.rb +0 -40
- data/spec/unit/provider/deploy_spec.rb +0 -641
- data/spec/unit/provider/env/windows_spec.rb +0 -103
- data/spec/unit/provider/erl_call_spec.rb +0 -77
- data/spec/unit/provider/package/yum_spec.rb +0 -2294
- data/spec/unit/resource/deploy_revision_spec.rb +0 -42
- data/spec/unit/resource/deploy_spec.rb +0 -283
- data/spec/unit/resource/erl_call_spec.rb +0 -81
data/lib/chef/knife/help.rb
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Daniel DeLeo (<dan@chef.io>)
|
3
|
-
# Copyright:: Copyright 2011-2016, Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
class Chef
|
20
|
-
class Knife
|
21
|
-
class Help < Chef::Knife
|
22
|
-
|
23
|
-
banner "knife help [list|TOPIC]"
|
24
|
-
|
25
|
-
def run
|
26
|
-
if name_args.empty?
|
27
|
-
ui.info "Usage: knife SUBCOMMAND (options)"
|
28
|
-
ui.msg ""
|
29
|
-
# This command is atypical, the user is likely not interested in usage of
|
30
|
-
# this command, but knife in general. So hack the banner.
|
31
|
-
opt_parser.banner = "General Knife Options:"
|
32
|
-
ui.msg opt_parser.to_s
|
33
|
-
ui.msg ""
|
34
|
-
ui.info "For further help:"
|
35
|
-
ui.info(<<-MOAR_HELP)
|
36
|
-
knife help list list help topics
|
37
|
-
knife help knife show general knife help
|
38
|
-
knife help TOPIC display the manual for TOPIC
|
39
|
-
knife SUBCOMMAND --help show the options for a command
|
40
|
-
MOAR_HELP
|
41
|
-
exit 1
|
42
|
-
else
|
43
|
-
@query = name_args.join("-")
|
44
|
-
end
|
45
|
-
|
46
|
-
case @query
|
47
|
-
when "topics", "list"
|
48
|
-
print_help_topics
|
49
|
-
exit 1
|
50
|
-
when "intro", "knife"
|
51
|
-
@topic = "knife"
|
52
|
-
else
|
53
|
-
@topic = find_manpages_for_query(@query)
|
54
|
-
end
|
55
|
-
|
56
|
-
manpage_path = find_manpage_path(@topic)
|
57
|
-
exec "man #{manpage_path}"
|
58
|
-
end
|
59
|
-
|
60
|
-
def help_topics
|
61
|
-
# The list of help topics is generated by a rake task from the available man pages
|
62
|
-
# This constant is provided in help_topics.rb which is automatically required/loaded by the knife subcommand loader.
|
63
|
-
HELP_TOPICS
|
64
|
-
end
|
65
|
-
|
66
|
-
def print_help_topics
|
67
|
-
ui.info "Available help topics are: "
|
68
|
-
help_topics.collect { |t| t.gsub(/knife-/, "") }.sort.each do |topic|
|
69
|
-
ui.msg " #{topic}"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def find_manpages_for_query(query)
|
74
|
-
possibilities = help_topics.select do |manpage|
|
75
|
-
::File.fnmatch("knife-#{query}*", manpage) || ::File.fnmatch("#{query}*", manpage)
|
76
|
-
end
|
77
|
-
if possibilities.empty?
|
78
|
-
ui.error "No help found for '#{query}'"
|
79
|
-
ui.msg ""
|
80
|
-
print_help_topics
|
81
|
-
exit 1
|
82
|
-
elsif possibilities.size == 1
|
83
|
-
possibilities.first
|
84
|
-
else
|
85
|
-
ui.info "Multiple help topics match your query. Pick one:"
|
86
|
-
ui.highline.choose(*possibilities)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def find_manpage_path(topic)
|
91
|
-
if ::File.exists?(::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT))
|
92
|
-
# If we've provided the man page in the gem, give that
|
93
|
-
::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT)
|
94
|
-
else
|
95
|
-
# Otherwise, we'll just be using MANPATH
|
96
|
-
topic
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
@@ -1,4 +0,0 @@
|
|
1
|
-
# Do not edit this file by hand
|
2
|
-
# This file is autogenerated by the docs:list rake task from the available manpages
|
3
|
-
|
4
|
-
HELP_TOPICS = ["chef-shell", "knife-bootstrap", "knife-client", "knife-configure", "knife-cookbook-site", "knife-cookbook", "knife-data-bag", "knife-delete", "knife-deps", "knife-diff", "knife-download", "knife-edit", "knife-environment", "knife-exec", "knife-index-rebuild", "knife-list", "knife-node", "knife-raw", "knife-recipe-list", "knife-role", "knife-search", "knife-show", "knife-ssh", "knife-status", "knife-tag", "knife-upload", "knife-user", "knife-xargs", "knife"]
|
@@ -1,133 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Daniel DeLeo (<dan@kallistec.com>)
|
3
|
-
# Copyright:: Copyright 2009-2016, Daniel DeLeo
|
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/knife"
|
20
|
-
|
21
|
-
class Chef
|
22
|
-
class Knife
|
23
|
-
class IndexRebuild < Knife
|
24
|
-
|
25
|
-
banner "knife index rebuild (options)"
|
26
|
-
option :yes,
|
27
|
-
:short => "-y",
|
28
|
-
:long => "--yes",
|
29
|
-
:boolean => true,
|
30
|
-
:description => "don't bother to ask if I'm sure"
|
31
|
-
|
32
|
-
def run
|
33
|
-
api_info = grab_api_info
|
34
|
-
|
35
|
-
if unsupported_version?(api_info)
|
36
|
-
unsupported_server_message(api_info)
|
37
|
-
exit 1
|
38
|
-
else
|
39
|
-
deprecated_server_message
|
40
|
-
nag
|
41
|
-
output rest.post("/search/reindex", {})
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def grab_api_info
|
46
|
-
# Since we don't yet have any endpoints that implement an
|
47
|
-
# OPTIONS handler, we need to get our version header
|
48
|
-
# information in a more roundabout way. We'll try to query
|
49
|
-
# for a node we know won't exist; the 404 response that comes
|
50
|
-
# back will give us what we want
|
51
|
-
dummy_node = "knife_index_rebuild_test_#{rand(1000000)}"
|
52
|
-
rest.get("/nodes/#{dummy_node}")
|
53
|
-
rescue Net::HTTPServerException => exception
|
54
|
-
r = exception.response
|
55
|
-
parse_api_info(r)
|
56
|
-
end
|
57
|
-
|
58
|
-
# Only Chef 11+ servers will have version information in their
|
59
|
-
# headers, and only those servers will lack an API endpoint for
|
60
|
-
# index rebuilding.
|
61
|
-
def unsupported_version?(api_info)
|
62
|
-
!!api_info["version"]
|
63
|
-
end
|
64
|
-
|
65
|
-
def unsupported_server_message(api_info)
|
66
|
-
ui.error("Rebuilding the index is not available via knife for #{server_type(api_info)}s version 11.0.0 and above.")
|
67
|
-
ui.info("Instead, run the '#{ctl_command(api_info)} reindex' command on the server itself.")
|
68
|
-
end
|
69
|
-
|
70
|
-
def deprecated_server_message
|
71
|
-
ui.warn("'knife index rebuild' has been removed for Chef 11+ servers. It will continue to work for prior versions, however.")
|
72
|
-
end
|
73
|
-
|
74
|
-
def nag
|
75
|
-
ui.info("This operation is destructive. Rebuilding the index may take some time.")
|
76
|
-
ui.confirm("Continue")
|
77
|
-
end
|
78
|
-
|
79
|
-
# Chef 11 (and above) servers return various pieces of
|
80
|
-
# information about the server in an +x-ops-api-info+ header.
|
81
|
-
# This is a +;+ delimited string of key / value pairs, separated
|
82
|
-
# by +=+.
|
83
|
-
#
|
84
|
-
# Given a Net::HTTPResponse object, this method extracts this
|
85
|
-
# information (if present), and returns it as a hash. If no
|
86
|
-
# such header is found, an empty hash is returned.
|
87
|
-
def parse_api_info(response)
|
88
|
-
value = response["x-ops-api-info"]
|
89
|
-
if value
|
90
|
-
kv = value.split(";")
|
91
|
-
kv.inject({}) do |acc, pair|
|
92
|
-
k, v = pair.split("=")
|
93
|
-
acc[k] = v
|
94
|
-
acc
|
95
|
-
end
|
96
|
-
else
|
97
|
-
{}
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
# Given an API info hash (see +#parse_api_info(response)+),
|
102
|
-
# return a string describing the kind of server we're
|
103
|
-
# interacting with (based on the +flavor+ field)
|
104
|
-
def server_type(api_info)
|
105
|
-
case api_info["flavor"]
|
106
|
-
when "osc"
|
107
|
-
"Open Source Chef Server"
|
108
|
-
when "opc"
|
109
|
-
"Private Chef Server"
|
110
|
-
else
|
111
|
-
# Generic fallback
|
112
|
-
"Chef Server"
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
# Given an API info hash (see +#parse_api_info(response)+),
|
117
|
-
# return the name of the "server-ctl" command for the kind of
|
118
|
-
# server we're interacting with (based on the +flavor+ field)
|
119
|
-
def ctl_command(api_info)
|
120
|
-
case api_info["flavor"]
|
121
|
-
when "osc"
|
122
|
-
"chef-server-ctl"
|
123
|
-
when "opc"
|
124
|
-
"private-chef-ctl"
|
125
|
-
else
|
126
|
-
# Generic fallback
|
127
|
-
"chef-server-ctl"
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
data/lib/chef/mixin/language.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Copyright:: Copyright 2008-2016, Chef Software 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/dsl/platform_introspection"
|
20
|
-
require "chef/dsl/data_query"
|
21
|
-
require "chef/mixin/deprecation"
|
22
|
-
|
23
|
-
class Chef
|
24
|
-
module Mixin
|
25
|
-
|
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
|
40
|
-
|
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
|
47
|
-
end
|
48
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Author:: Christopher Walters (<cw@chef.io>)
|
4
|
-
# Copyright:: Copyright 2008-2016, Chef Software Inc.
|
5
|
-
# License:: Apache License, Version 2.0
|
6
|
-
#
|
7
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
-
# you may not use this file except in compliance with the License.
|
9
|
-
# You may obtain a copy of the License at
|
10
|
-
#
|
11
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
-
#
|
13
|
-
# Unless required by applicable law or agreed to in writing, software
|
14
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
-
# See the License for the specific language governing permissions and
|
17
|
-
# limitations under the License.
|
18
|
-
#
|
19
|
-
|
20
|
-
###
|
21
|
-
# NOTE: This file and constant are here only for backwards compatibility.
|
22
|
-
# New code should use Chef::DSL::Recipe instead.
|
23
|
-
#
|
24
|
-
# This constant (module name) will eventually be deprecated and then removed.
|
25
|
-
###
|
26
|
-
|
27
|
-
require "chef/mixin/deprecation"
|
28
|
-
|
29
|
-
class Chef
|
30
|
-
module Mixin
|
31
|
-
deprecate_constant(:RecipeDefinitionDSLCore, Chef::DSL::Recipe, <<-EOM)
|
32
|
-
Chef::Mixin::RecipeDefinitionDSLCore is deprecated. Use Chef::DSL::Recipe instead.
|
33
|
-
EOM
|
34
|
-
end
|
35
|
-
end
|
data/lib/chef/provider/deploy.rb
DELETED
@@ -1,470 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Daniel DeLeo (<dan@kallistec.com>)
|
3
|
-
# Copyright:: Copyright 2008-2017, Chef Software 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/mixin/from_file"
|
20
|
-
require "chef/provider/git"
|
21
|
-
require "chef/provider/subversion"
|
22
|
-
require "chef/dsl/recipe"
|
23
|
-
require "chef/util/path_helper"
|
24
|
-
|
25
|
-
class Chef
|
26
|
-
class Provider
|
27
|
-
class Deploy < Chef::Provider
|
28
|
-
|
29
|
-
include Chef::DSL::Recipe
|
30
|
-
include Chef::Mixin::FromFile
|
31
|
-
|
32
|
-
attr_reader :scm_provider, :release_path, :shared_path, :previous_release_path
|
33
|
-
|
34
|
-
def initialize(new_resource, run_context)
|
35
|
-
super(new_resource, run_context)
|
36
|
-
|
37
|
-
# will resolve to either git or svn based on resource attributes,
|
38
|
-
# and will create a resource corresponding to that provider
|
39
|
-
@scm_provider = new_resource.scm_provider.new(new_resource, run_context)
|
40
|
-
|
41
|
-
# @configuration is not used by Deploy, it is only for backwards compat with
|
42
|
-
# chef-deploy or capistrano hooks that might use it to get environment information
|
43
|
-
@configuration = new_resource.to_hash
|
44
|
-
@configuration[:environment] = @configuration[:environment] && @configuration[:environment]["RAILS_ENV"]
|
45
|
-
end
|
46
|
-
|
47
|
-
def load_current_resource
|
48
|
-
@scm_provider.load_current_resource
|
49
|
-
@release_path = new_resource.deploy_to + "/releases/#{release_slug}"
|
50
|
-
@shared_path = new_resource.shared_path
|
51
|
-
end
|
52
|
-
|
53
|
-
def sudo(command, &block)
|
54
|
-
execute(command, &block)
|
55
|
-
end
|
56
|
-
|
57
|
-
def run(command, &block)
|
58
|
-
exec = execute(command, &block)
|
59
|
-
exec.user(new_resource.user) if new_resource.user
|
60
|
-
exec.group(new_resource.group) if new_resource.group
|
61
|
-
exec.cwd(release_path) unless exec.cwd
|
62
|
-
exec.environment(new_resource.environment) unless exec.environment
|
63
|
-
converge_by("execute #{command}") do
|
64
|
-
exec
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def define_resource_requirements
|
69
|
-
requirements.assert(:rollback) do |a|
|
70
|
-
a.assertion { all_releases[-2] }
|
71
|
-
a.failure_message(RuntimeError, "There is no release to rollback to!")
|
72
|
-
#There is no reason to assume 2 deployments in a single chef run, hence fails in whyrun.
|
73
|
-
end
|
74
|
-
|
75
|
-
[ new_resource.before_migrate, new_resource.before_symlink,
|
76
|
-
new_resource.before_restart, new_resource.after_restart ].each do |script|
|
77
|
-
requirements.assert(:deploy, :force_deploy) do |a|
|
78
|
-
callback_file = "#{release_path}/#{script}"
|
79
|
-
a.assertion do
|
80
|
-
if script && script.class == String
|
81
|
-
::File.exist?(callback_file)
|
82
|
-
else
|
83
|
-
true
|
84
|
-
end
|
85
|
-
end
|
86
|
-
a.failure_message(RuntimeError, "Can't find your callback file #{callback_file}")
|
87
|
-
a.whyrun("Would assume callback file #{callback_file} included in release")
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def action_deploy
|
93
|
-
save_release_state
|
94
|
-
if deployed?(release_path )
|
95
|
-
if current_release?(release_path )
|
96
|
-
Chef::Log.debug("#{new_resource} is the latest version")
|
97
|
-
else
|
98
|
-
rollback_to release_path
|
99
|
-
end
|
100
|
-
else
|
101
|
-
|
102
|
-
with_rollback_on_error do
|
103
|
-
deploy
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def action_force_deploy
|
109
|
-
if deployed?(release_path)
|
110
|
-
converge_by("delete deployed app at #{release_path} prior to force-deploy") do
|
111
|
-
Chef::Log.info("Already deployed app at #{release_path}, forcing.")
|
112
|
-
FileUtils.rm_rf(release_path)
|
113
|
-
Chef::Log.info("#{new_resource} forcing deploy of already deployed app at #{release_path}")
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
# Alternatives:
|
118
|
-
# * Move release_path directory before deploy and move it back when error occurs
|
119
|
-
# * Rollback to previous commit
|
120
|
-
# * Do nothing - because deploy is force, it will be retried in short time
|
121
|
-
# Because last is simplest, keep it
|
122
|
-
deploy
|
123
|
-
end
|
124
|
-
|
125
|
-
def action_rollback
|
126
|
-
rollback_to all_releases[-2]
|
127
|
-
end
|
128
|
-
|
129
|
-
def rollback_to(target_release_path)
|
130
|
-
@release_path = target_release_path
|
131
|
-
|
132
|
-
rp_index = all_releases.index(release_path)
|
133
|
-
releases_to_nuke = all_releases[(rp_index + 1)..-1]
|
134
|
-
|
135
|
-
rollback
|
136
|
-
|
137
|
-
releases_to_nuke.each do |i|
|
138
|
-
converge_by("roll back by removing release #{i}") do
|
139
|
-
Chef::Log.info "#{new_resource} removing release: #{i}"
|
140
|
-
FileUtils.rm_rf i
|
141
|
-
end
|
142
|
-
release_deleted(i)
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
def deploy
|
147
|
-
verify_directories_exist
|
148
|
-
update_cached_repo # no converge-by - scm provider will dothis
|
149
|
-
enforce_ownership
|
150
|
-
copy_cached_repo
|
151
|
-
install_gems
|
152
|
-
enforce_ownership
|
153
|
-
callback(:before_migrate, new_resource.before_migrate)
|
154
|
-
migrate
|
155
|
-
callback(:before_symlink, new_resource.before_symlink)
|
156
|
-
symlink
|
157
|
-
callback(:before_restart, new_resource.before_restart)
|
158
|
-
restart
|
159
|
-
callback(:after_restart, new_resource.after_restart)
|
160
|
-
cleanup!
|
161
|
-
Chef::Log.info "#{new_resource} deployed to #{new_resource.deploy_to}"
|
162
|
-
end
|
163
|
-
|
164
|
-
def rollback
|
165
|
-
Chef::Log.info "#{new_resource} rolling back to previous release #{release_path}"
|
166
|
-
symlink
|
167
|
-
Chef::Log.info "#{new_resource} restarting with previous release"
|
168
|
-
restart
|
169
|
-
end
|
170
|
-
|
171
|
-
def callback(what, callback_code = nil)
|
172
|
-
@collection = Chef::ResourceCollection.new
|
173
|
-
case callback_code
|
174
|
-
when Proc
|
175
|
-
Chef::Log.info "#{new_resource} running callback #{what}"
|
176
|
-
recipe_eval(&callback_code)
|
177
|
-
when String
|
178
|
-
run_callback_from_file("#{release_path}/#{callback_code}")
|
179
|
-
when nil
|
180
|
-
run_callback_from_file("#{release_path}/deploy/#{what}.rb")
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
def migrate
|
185
|
-
run_symlinks_before_migrate
|
186
|
-
|
187
|
-
if new_resource.migrate
|
188
|
-
enforce_ownership
|
189
|
-
|
190
|
-
environment = new_resource.environment
|
191
|
-
env_info = environment && environment.map do |key_and_val|
|
192
|
-
"#{key_and_val.first}='#{key_and_val.last}'"
|
193
|
-
end.join(" ")
|
194
|
-
|
195
|
-
converge_by("execute migration command #{new_resource.migration_command}") do
|
196
|
-
Chef::Log.info "#{new_resource} migrating #{new_resource.user} with environment #{env_info}"
|
197
|
-
shell_out!(new_resource.migration_command, run_options(:cwd => release_path, :log_level => :info))
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
def symlink
|
203
|
-
purge_tempfiles_from_current_release
|
204
|
-
link_tempfiles_to_current_release
|
205
|
-
link_current_release_to_production
|
206
|
-
Chef::Log.info "#{new_resource} updated symlinks"
|
207
|
-
end
|
208
|
-
|
209
|
-
def restart
|
210
|
-
if restart_cmd = new_resource.restart_command
|
211
|
-
if restart_cmd.kind_of?(Proc)
|
212
|
-
Chef::Log.info("#{new_resource} restarting app with embedded recipe")
|
213
|
-
recipe_eval(&restart_cmd)
|
214
|
-
else
|
215
|
-
converge_by("restart app using command #{new_resource.restart_command}") do
|
216
|
-
Chef::Log.info("#{new_resource} restarting app")
|
217
|
-
shell_out!(new_resource.restart_command, run_options(:cwd => new_resource.current_path))
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
def cleanup!
|
224
|
-
converge_by("update release history data") do
|
225
|
-
release_created(release_path)
|
226
|
-
end
|
227
|
-
|
228
|
-
chop = -1 - new_resource.keep_releases
|
229
|
-
all_releases[0..chop].each do |old_release|
|
230
|
-
converge_by("remove old release #{old_release}") do
|
231
|
-
Chef::Log.info "#{new_resource} removing old release #{old_release}"
|
232
|
-
FileUtils.rm_rf(old_release)
|
233
|
-
end
|
234
|
-
release_deleted(old_release)
|
235
|
-
end
|
236
|
-
end
|
237
|
-
|
238
|
-
def all_releases
|
239
|
-
Dir.glob(Chef::Util::PathHelper.escape_glob_dir(new_resource.deploy_to) + "/releases/*").sort
|
240
|
-
end
|
241
|
-
|
242
|
-
def update_cached_repo
|
243
|
-
if new_resource.svn_force_export
|
244
|
-
# TODO assertion, non-recoverable - @scm_provider must be svn if force_export?
|
245
|
-
svn_force_export
|
246
|
-
else
|
247
|
-
run_scm_sync
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
def run_scm_sync
|
252
|
-
@scm_provider.run_action(:sync)
|
253
|
-
end
|
254
|
-
|
255
|
-
def svn_force_export
|
256
|
-
Chef::Log.info "#{new_resource} exporting source repository"
|
257
|
-
@scm_provider.run_action(:force_export)
|
258
|
-
end
|
259
|
-
|
260
|
-
def copy_cached_repo
|
261
|
-
target_dir_path = new_resource.deploy_to + "/releases"
|
262
|
-
converge_by("deploy from repo to #{target_dir_path} ") do
|
263
|
-
FileUtils.rm_rf(release_path) if ::File.exist?(release_path)
|
264
|
-
FileUtils.mkdir_p(target_dir_path)
|
265
|
-
FileUtils.cp_r(::File.join(new_resource.destination, "."), release_path, :preserve => true)
|
266
|
-
Chef::Log.info "#{new_resource} copied the cached checkout to #{release_path}"
|
267
|
-
end
|
268
|
-
end
|
269
|
-
|
270
|
-
def enforce_ownership
|
271
|
-
converge_by("force ownership of #{new_resource.deploy_to} to #{new_resource.group}:#{new_resource.user}") do
|
272
|
-
FileUtils.chown_R(new_resource.user, new_resource.group, new_resource.deploy_to, :force => true)
|
273
|
-
Chef::Log.info("#{new_resource} set user to #{new_resource.user}") if new_resource.user
|
274
|
-
Chef::Log.info("#{new_resource} set group to #{new_resource.group}") if new_resource.group
|
275
|
-
end
|
276
|
-
end
|
277
|
-
|
278
|
-
def verify_directories_exist
|
279
|
-
create_dir_unless_exists(new_resource.deploy_to)
|
280
|
-
create_dir_unless_exists(new_resource.shared_path)
|
281
|
-
end
|
282
|
-
|
283
|
-
def link_current_release_to_production
|
284
|
-
converge_by(["remove existing link at #{new_resource.current_path}",
|
285
|
-
"link release #{release_path} into production at #{new_resource.current_path}"]) do
|
286
|
-
FileUtils.rm_f(new_resource.current_path)
|
287
|
-
begin
|
288
|
-
FileUtils.ln_sf(release_path, new_resource.current_path)
|
289
|
-
rescue => e
|
290
|
-
raise Chef::Exceptions::FileNotFound.new("Cannot symlink current release to production: #{e.message}")
|
291
|
-
end
|
292
|
-
Chef::Log.info "#{new_resource} linked release #{release_path} into production at #{new_resource.current_path}"
|
293
|
-
end
|
294
|
-
enforce_ownership
|
295
|
-
end
|
296
|
-
|
297
|
-
def run_symlinks_before_migrate
|
298
|
-
links_info = new_resource.symlink_before_migrate.map { |src, dst| "#{src} => #{dst}" }.join(", ")
|
299
|
-
converge_by("make pre-migration symlinks: #{links_info}") do
|
300
|
-
new_resource.symlink_before_migrate.each do |src, dest|
|
301
|
-
begin
|
302
|
-
FileUtils.ln_sf(new_resource.shared_path + "/#{src}", release_path + "/#{dest}")
|
303
|
-
rescue => e
|
304
|
-
raise Chef::Exceptions::FileNotFound.new("Cannot symlink #{new_resource.shared_path}/#{src} to #{release_path}/#{dest} before migrate: #{e.message}")
|
305
|
-
end
|
306
|
-
end
|
307
|
-
Chef::Log.info "#{new_resource} made pre-migration symlinks"
|
308
|
-
end
|
309
|
-
end
|
310
|
-
|
311
|
-
def link_tempfiles_to_current_release
|
312
|
-
dirs_info = new_resource.create_dirs_before_symlink.join(",")
|
313
|
-
new_resource.create_dirs_before_symlink.each do |dir|
|
314
|
-
create_dir_unless_exists(release_path + "/#{dir}")
|
315
|
-
end
|
316
|
-
Chef::Log.info("#{new_resource} created directories before symlinking: #{dirs_info}")
|
317
|
-
|
318
|
-
links_info = new_resource.symlinks.map { |src, dst| "#{src} => #{dst}" }.join(", ")
|
319
|
-
converge_by("link shared paths into current release: #{links_info}") do
|
320
|
-
new_resource.symlinks.each do |src, dest|
|
321
|
-
begin
|
322
|
-
FileUtils.ln_sf(::File.join(new_resource.shared_path, src), ::File.join(release_path, dest))
|
323
|
-
rescue => e
|
324
|
-
raise Chef::Exceptions::FileNotFound.new("Cannot symlink shared data #{::File.join(new_resource.shared_path, src)} to #{::File.join(release_path, dest)}: #{e.message}")
|
325
|
-
end
|
326
|
-
end
|
327
|
-
Chef::Log.info("#{new_resource} linked shared paths into current release: #{links_info}")
|
328
|
-
end
|
329
|
-
run_symlinks_before_migrate
|
330
|
-
enforce_ownership
|
331
|
-
end
|
332
|
-
|
333
|
-
def create_dirs_before_symlink
|
334
|
-
end
|
335
|
-
|
336
|
-
def purge_tempfiles_from_current_release
|
337
|
-
log_info = new_resource.purge_before_symlink.join(", ")
|
338
|
-
converge_by("purge directories in checkout #{log_info}") do
|
339
|
-
new_resource.purge_before_symlink.each { |dir| FileUtils.rm_rf(release_path + "/#{dir}") }
|
340
|
-
Chef::Log.info("#{new_resource} purged directories in checkout #{log_info}")
|
341
|
-
end
|
342
|
-
end
|
343
|
-
|
344
|
-
protected
|
345
|
-
|
346
|
-
# Internal callback, called after copy_cached_repo.
|
347
|
-
# Override if you need to keep state externally.
|
348
|
-
# Note that YOU are responsible for implementing whyrun-friendly behavior
|
349
|
-
# in any actions you take in this callback.
|
350
|
-
def release_created(release_path)
|
351
|
-
end
|
352
|
-
|
353
|
-
# Note that YOU are responsible for using appropriate whyrun nomenclature
|
354
|
-
# Override if you need to keep state externally.
|
355
|
-
# Note that YOU are responsible for implementing whyrun-friendly behavior
|
356
|
-
# in any actions you take in this callback.
|
357
|
-
def release_deleted(release_path)
|
358
|
-
end
|
359
|
-
|
360
|
-
def release_slug
|
361
|
-
raise Chef::Exceptions::Override, "You must override release_slug in #{self}"
|
362
|
-
end
|
363
|
-
|
364
|
-
def install_gems
|
365
|
-
gem_resource_collection_runner.converge
|
366
|
-
end
|
367
|
-
|
368
|
-
def gem_resource_collection_runner
|
369
|
-
child_context = run_context.create_child
|
370
|
-
gem_packages.each { |rbgem| child_context.resource_collection.insert(rbgem) }
|
371
|
-
Chef::Runner.new(child_context)
|
372
|
-
end
|
373
|
-
|
374
|
-
def gem_packages
|
375
|
-
return [] unless ::File.exist?("#{release_path}/gems.yml")
|
376
|
-
gems = YAML.load(IO.read("#{release_path}/gems.yml"))
|
377
|
-
|
378
|
-
gems.map do |g|
|
379
|
-
r = Chef::Resource::GemPackage.new(g[:name], run_context)
|
380
|
-
r.version g[:version]
|
381
|
-
r.action :install
|
382
|
-
r.source "http://gems.github.com"
|
383
|
-
r
|
384
|
-
end
|
385
|
-
end
|
386
|
-
|
387
|
-
def run_options(run_opts = {})
|
388
|
-
run_opts[:user] = new_resource.user if new_resource.user
|
389
|
-
run_opts[:group] = new_resource.group if new_resource.group
|
390
|
-
run_opts[:environment] = new_resource.environment if new_resource.environment
|
391
|
-
run_opts[:log_tag] = new_resource.to_s
|
392
|
-
run_opts[:log_level] ||= :debug
|
393
|
-
if run_opts[:log_level] == :info
|
394
|
-
if STDOUT.tty? && !Chef::Config[:daemon] && Chef::Log.info?
|
395
|
-
run_opts[:live_stream] = STDOUT
|
396
|
-
end
|
397
|
-
end
|
398
|
-
run_opts
|
399
|
-
end
|
400
|
-
|
401
|
-
def run_callback_from_file(callback_file)
|
402
|
-
Chef::Log.info "#{new_resource} queueing checkdeploy hook #{callback_file}"
|
403
|
-
recipe_eval do
|
404
|
-
Dir.chdir(release_path) do
|
405
|
-
from_file(callback_file) if ::File.exist?(callback_file)
|
406
|
-
end
|
407
|
-
end
|
408
|
-
end
|
409
|
-
|
410
|
-
def create_dir_unless_exists(dir)
|
411
|
-
if ::File.directory?(dir)
|
412
|
-
Chef::Log.debug "#{new_resource} not creating #{dir} because it already exists"
|
413
|
-
return false
|
414
|
-
end
|
415
|
-
converge_by("create new directory #{dir}") do
|
416
|
-
begin
|
417
|
-
FileUtils.mkdir_p(dir)
|
418
|
-
Chef::Log.debug "#{new_resource} created directory #{dir}"
|
419
|
-
if new_resource.user
|
420
|
-
FileUtils.chown(new_resource.user, nil, dir)
|
421
|
-
Chef::Log.debug("#{new_resource} set user to #{new_resource.user} for #{dir}")
|
422
|
-
end
|
423
|
-
if new_resource.group
|
424
|
-
FileUtils.chown(nil, new_resource.group, dir)
|
425
|
-
Chef::Log.debug("#{new_resource} set group to #{new_resource.group} for #{dir}")
|
426
|
-
end
|
427
|
-
rescue => e
|
428
|
-
raise Chef::Exceptions::FileNotFound.new("Cannot create directory #{dir}: #{e.message}")
|
429
|
-
end
|
430
|
-
end
|
431
|
-
end
|
432
|
-
|
433
|
-
def with_rollback_on_error
|
434
|
-
yield
|
435
|
-
rescue ::Exception => e
|
436
|
-
if new_resource.rollback_on_error
|
437
|
-
Chef::Log.warn "Error on deploying #{release_path}: #{e.message}"
|
438
|
-
failed_release = release_path
|
439
|
-
|
440
|
-
if previous_release_path
|
441
|
-
@release_path = previous_release_path
|
442
|
-
rollback
|
443
|
-
end
|
444
|
-
converge_by("remove failed deploy #{failed_release}") do
|
445
|
-
Chef::Log.info "Removing failed deploy #{failed_release}"
|
446
|
-
FileUtils.rm_rf failed_release
|
447
|
-
end
|
448
|
-
release_deleted(failed_release)
|
449
|
-
end
|
450
|
-
|
451
|
-
raise
|
452
|
-
end
|
453
|
-
|
454
|
-
def save_release_state
|
455
|
-
if ::File.exists?(new_resource.current_path)
|
456
|
-
release = ::File.readlink(new_resource.current_path)
|
457
|
-
@previous_release_path = release if ::File.exists?(release)
|
458
|
-
end
|
459
|
-
end
|
460
|
-
|
461
|
-
def deployed?(release)
|
462
|
-
all_releases.include?(release)
|
463
|
-
end
|
464
|
-
|
465
|
-
def current_release?(release)
|
466
|
-
@previous_release_path == release
|
467
|
-
end
|
468
|
-
end
|
469
|
-
end
|
470
|
-
end
|