chef 12.18.31 → 13.0.118
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/Gemfile +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
data/lib/chef/provider/deploy.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Daniel DeLeo (<dan@kallistec.com>)
|
|
3
|
-
# Copyright:: Copyright 2008-
|
|
3
|
+
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
|
|
19
|
-
require "chef/mixin/command"
|
|
20
19
|
require "chef/mixin/from_file"
|
|
21
20
|
require "chef/provider/git"
|
|
22
21
|
require "chef/provider/subversion"
|
|
@@ -29,7 +28,6 @@ class Chef
|
|
|
29
28
|
|
|
30
29
|
include Chef::DSL::Recipe
|
|
31
30
|
include Chef::Mixin::FromFile
|
|
32
|
-
include Chef::Mixin::Command
|
|
33
31
|
|
|
34
32
|
attr_reader :scm_provider, :release_path, :shared_path, :previous_release_path
|
|
35
33
|
|
|
@@ -42,18 +40,14 @@ class Chef
|
|
|
42
40
|
|
|
43
41
|
# @configuration is not used by Deploy, it is only for backwards compat with
|
|
44
42
|
# chef-deploy or capistrano hooks that might use it to get environment information
|
|
45
|
-
@configuration =
|
|
43
|
+
@configuration = new_resource.to_hash
|
|
46
44
|
@configuration[:environment] = @configuration[:environment] && @configuration[:environment]["RAILS_ENV"]
|
|
47
45
|
end
|
|
48
46
|
|
|
49
|
-
def whyrun_supported?
|
|
50
|
-
true
|
|
51
|
-
end
|
|
52
|
-
|
|
53
47
|
def load_current_resource
|
|
54
48
|
@scm_provider.load_current_resource
|
|
55
|
-
@release_path =
|
|
56
|
-
@shared_path =
|
|
49
|
+
@release_path = new_resource.deploy_to + "/releases/#{release_slug}"
|
|
50
|
+
@shared_path = new_resource.shared_path
|
|
57
51
|
end
|
|
58
52
|
|
|
59
53
|
def sudo(command, &block)
|
|
@@ -62,10 +56,10 @@ class Chef
|
|
|
62
56
|
|
|
63
57
|
def run(command, &block)
|
|
64
58
|
exec = execute(command, &block)
|
|
65
|
-
exec.user(
|
|
66
|
-
exec.group(
|
|
59
|
+
exec.user(new_resource.user) if new_resource.user
|
|
60
|
+
exec.group(new_resource.group) if new_resource.group
|
|
67
61
|
exec.cwd(release_path) unless exec.cwd
|
|
68
|
-
exec.environment(
|
|
62
|
+
exec.environment(new_resource.environment) unless exec.environment
|
|
69
63
|
converge_by("execute #{command}") do
|
|
70
64
|
exec
|
|
71
65
|
end
|
|
@@ -78,8 +72,8 @@ class Chef
|
|
|
78
72
|
#There is no reason to assume 2 deployments in a single chef run, hence fails in whyrun.
|
|
79
73
|
end
|
|
80
74
|
|
|
81
|
-
[
|
|
82
|
-
|
|
75
|
+
[ new_resource.before_migrate, new_resource.before_symlink,
|
|
76
|
+
new_resource.before_restart, new_resource.after_restart ].each do |script|
|
|
83
77
|
requirements.assert(:deploy, :force_deploy) do |a|
|
|
84
78
|
callback_file = "#{release_path}/#{script}"
|
|
85
79
|
a.assertion do
|
|
@@ -99,7 +93,7 @@ class Chef
|
|
|
99
93
|
save_release_state
|
|
100
94
|
if deployed?(release_path )
|
|
101
95
|
if current_release?(release_path )
|
|
102
|
-
Chef::Log.debug("#{
|
|
96
|
+
Chef::Log.debug("#{new_resource} is the latest version")
|
|
103
97
|
else
|
|
104
98
|
rollback_to release_path
|
|
105
99
|
end
|
|
@@ -116,7 +110,7 @@ class Chef
|
|
|
116
110
|
converge_by("delete deployed app at #{release_path} prior to force-deploy") do
|
|
117
111
|
Chef::Log.info("Already deployed app at #{release_path}, forcing.")
|
|
118
112
|
FileUtils.rm_rf(release_path)
|
|
119
|
-
Chef::Log.info("#{
|
|
113
|
+
Chef::Log.info("#{new_resource} forcing deploy of already deployed app at #{release_path}")
|
|
120
114
|
end
|
|
121
115
|
end
|
|
122
116
|
|
|
@@ -142,7 +136,7 @@ class Chef
|
|
|
142
136
|
|
|
143
137
|
releases_to_nuke.each do |i|
|
|
144
138
|
converge_by("roll back by removing release #{i}") do
|
|
145
|
-
Chef::Log.info "#{
|
|
139
|
+
Chef::Log.info "#{new_resource} removing release: #{i}"
|
|
146
140
|
FileUtils.rm_rf i
|
|
147
141
|
end
|
|
148
142
|
release_deleted(i)
|
|
@@ -156,21 +150,21 @@ class Chef
|
|
|
156
150
|
copy_cached_repo
|
|
157
151
|
install_gems
|
|
158
152
|
enforce_ownership
|
|
159
|
-
callback(:before_migrate,
|
|
153
|
+
callback(:before_migrate, new_resource.before_migrate)
|
|
160
154
|
migrate
|
|
161
|
-
callback(:before_symlink,
|
|
155
|
+
callback(:before_symlink, new_resource.before_symlink)
|
|
162
156
|
symlink
|
|
163
|
-
callback(:before_restart,
|
|
157
|
+
callback(:before_restart, new_resource.before_restart)
|
|
164
158
|
restart
|
|
165
|
-
callback(:after_restart,
|
|
159
|
+
callback(:after_restart, new_resource.after_restart)
|
|
166
160
|
cleanup!
|
|
167
|
-
Chef::Log.info "#{
|
|
161
|
+
Chef::Log.info "#{new_resource} deployed to #{new_resource.deploy_to}"
|
|
168
162
|
end
|
|
169
163
|
|
|
170
164
|
def rollback
|
|
171
|
-
Chef::Log.info "#{
|
|
165
|
+
Chef::Log.info "#{new_resource} rolling back to previous release #{release_path}"
|
|
172
166
|
symlink
|
|
173
|
-
Chef::Log.info "#{
|
|
167
|
+
Chef::Log.info "#{new_resource} restarting with previous release"
|
|
174
168
|
restart
|
|
175
169
|
end
|
|
176
170
|
|
|
@@ -178,7 +172,7 @@ class Chef
|
|
|
178
172
|
@collection = Chef::ResourceCollection.new
|
|
179
173
|
case callback_code
|
|
180
174
|
when Proc
|
|
181
|
-
Chef::Log.info "#{
|
|
175
|
+
Chef::Log.info "#{new_resource} running callback #{what}"
|
|
182
176
|
recipe_eval(&callback_code)
|
|
183
177
|
when String
|
|
184
178
|
run_callback_from_file("#{release_path}/#{callback_code}")
|
|
@@ -190,17 +184,17 @@ class Chef
|
|
|
190
184
|
def migrate
|
|
191
185
|
run_symlinks_before_migrate
|
|
192
186
|
|
|
193
|
-
if
|
|
187
|
+
if new_resource.migrate
|
|
194
188
|
enforce_ownership
|
|
195
189
|
|
|
196
|
-
environment =
|
|
190
|
+
environment = new_resource.environment
|
|
197
191
|
env_info = environment && environment.map do |key_and_val|
|
|
198
192
|
"#{key_and_val.first}='#{key_and_val.last}'"
|
|
199
193
|
end.join(" ")
|
|
200
194
|
|
|
201
|
-
converge_by("execute migration command #{
|
|
202
|
-
Chef::Log.info "#{
|
|
203
|
-
shell_out!(
|
|
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))
|
|
204
198
|
end
|
|
205
199
|
end
|
|
206
200
|
end
|
|
@@ -209,18 +203,18 @@ class Chef
|
|
|
209
203
|
purge_tempfiles_from_current_release
|
|
210
204
|
link_tempfiles_to_current_release
|
|
211
205
|
link_current_release_to_production
|
|
212
|
-
Chef::Log.info "#{
|
|
206
|
+
Chef::Log.info "#{new_resource} updated symlinks"
|
|
213
207
|
end
|
|
214
208
|
|
|
215
209
|
def restart
|
|
216
|
-
if restart_cmd =
|
|
210
|
+
if restart_cmd = new_resource.restart_command
|
|
217
211
|
if restart_cmd.kind_of?(Proc)
|
|
218
|
-
Chef::Log.info("#{
|
|
212
|
+
Chef::Log.info("#{new_resource} restarting app with embedded recipe")
|
|
219
213
|
recipe_eval(&restart_cmd)
|
|
220
214
|
else
|
|
221
|
-
converge_by("restart app using command #{
|
|
222
|
-
Chef::Log.info("#{
|
|
223
|
-
shell_out!(
|
|
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))
|
|
224
218
|
end
|
|
225
219
|
end
|
|
226
220
|
end
|
|
@@ -231,10 +225,10 @@ class Chef
|
|
|
231
225
|
release_created(release_path)
|
|
232
226
|
end
|
|
233
227
|
|
|
234
|
-
chop = -1 -
|
|
228
|
+
chop = -1 - new_resource.keep_releases
|
|
235
229
|
all_releases[0..chop].each do |old_release|
|
|
236
230
|
converge_by("remove old release #{old_release}") do
|
|
237
|
-
Chef::Log.info "#{
|
|
231
|
+
Chef::Log.info "#{new_resource} removing old release #{old_release}"
|
|
238
232
|
FileUtils.rm_rf(old_release)
|
|
239
233
|
end
|
|
240
234
|
release_deleted(old_release)
|
|
@@ -242,11 +236,11 @@ class Chef
|
|
|
242
236
|
end
|
|
243
237
|
|
|
244
238
|
def all_releases
|
|
245
|
-
Dir.glob(Chef::Util::PathHelper.escape_glob_dir(
|
|
239
|
+
Dir.glob(Chef::Util::PathHelper.escape_glob_dir(new_resource.deploy_to) + "/releases/*").sort
|
|
246
240
|
end
|
|
247
241
|
|
|
248
242
|
def update_cached_repo
|
|
249
|
-
if
|
|
243
|
+
if new_resource.svn_force_export
|
|
250
244
|
# TODO assertion, non-recoverable - @scm_provider must be svn if force_export?
|
|
251
245
|
svn_force_export
|
|
252
246
|
else
|
|
@@ -259,78 +253,78 @@ class Chef
|
|
|
259
253
|
end
|
|
260
254
|
|
|
261
255
|
def svn_force_export
|
|
262
|
-
Chef::Log.info "#{
|
|
256
|
+
Chef::Log.info "#{new_resource} exporting source repository"
|
|
263
257
|
@scm_provider.run_action(:force_export)
|
|
264
258
|
end
|
|
265
259
|
|
|
266
260
|
def copy_cached_repo
|
|
267
|
-
target_dir_path =
|
|
261
|
+
target_dir_path = new_resource.deploy_to + "/releases"
|
|
268
262
|
converge_by("deploy from repo to #{target_dir_path} ") do
|
|
269
263
|
FileUtils.rm_rf(release_path) if ::File.exist?(release_path)
|
|
270
264
|
FileUtils.mkdir_p(target_dir_path)
|
|
271
|
-
FileUtils.cp_r(::File.join(
|
|
272
|
-
Chef::Log.info "#{
|
|
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}"
|
|
273
267
|
end
|
|
274
268
|
end
|
|
275
269
|
|
|
276
270
|
def enforce_ownership
|
|
277
|
-
converge_by("force ownership of #{
|
|
278
|
-
FileUtils.chown_R(
|
|
279
|
-
Chef::Log.info("#{
|
|
280
|
-
Chef::Log.info("#{
|
|
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
|
|
281
275
|
end
|
|
282
276
|
end
|
|
283
277
|
|
|
284
278
|
def verify_directories_exist
|
|
285
|
-
create_dir_unless_exists(
|
|
286
|
-
create_dir_unless_exists(
|
|
279
|
+
create_dir_unless_exists(new_resource.deploy_to)
|
|
280
|
+
create_dir_unless_exists(new_resource.shared_path)
|
|
287
281
|
end
|
|
288
282
|
|
|
289
283
|
def link_current_release_to_production
|
|
290
|
-
converge_by(["remove existing link at #{
|
|
291
|
-
"link release #{release_path} into production at #{
|
|
292
|
-
FileUtils.rm_f(
|
|
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)
|
|
293
287
|
begin
|
|
294
|
-
FileUtils.ln_sf(release_path,
|
|
288
|
+
FileUtils.ln_sf(release_path, new_resource.current_path)
|
|
295
289
|
rescue => e
|
|
296
290
|
raise Chef::Exceptions::FileNotFound.new("Cannot symlink current release to production: #{e.message}")
|
|
297
291
|
end
|
|
298
|
-
Chef::Log.info "#{
|
|
292
|
+
Chef::Log.info "#{new_resource} linked release #{release_path} into production at #{new_resource.current_path}"
|
|
299
293
|
end
|
|
300
294
|
enforce_ownership
|
|
301
295
|
end
|
|
302
296
|
|
|
303
297
|
def run_symlinks_before_migrate
|
|
304
|
-
links_info =
|
|
298
|
+
links_info = new_resource.symlink_before_migrate.map { |src, dst| "#{src} => #{dst}" }.join(", ")
|
|
305
299
|
converge_by("make pre-migration symlinks: #{links_info}") do
|
|
306
|
-
|
|
300
|
+
new_resource.symlink_before_migrate.each do |src, dest|
|
|
307
301
|
begin
|
|
308
|
-
FileUtils.ln_sf(
|
|
302
|
+
FileUtils.ln_sf(new_resource.shared_path + "/#{src}", release_path + "/#{dest}")
|
|
309
303
|
rescue => e
|
|
310
|
-
raise Chef::Exceptions::FileNotFound.new("Cannot symlink #{
|
|
304
|
+
raise Chef::Exceptions::FileNotFound.new("Cannot symlink #{new_resource.shared_path}/#{src} to #{release_path}/#{dest} before migrate: #{e.message}")
|
|
311
305
|
end
|
|
312
306
|
end
|
|
313
|
-
Chef::Log.info "#{
|
|
307
|
+
Chef::Log.info "#{new_resource} made pre-migration symlinks"
|
|
314
308
|
end
|
|
315
309
|
end
|
|
316
310
|
|
|
317
311
|
def link_tempfiles_to_current_release
|
|
318
|
-
dirs_info =
|
|
319
|
-
|
|
312
|
+
dirs_info = new_resource.create_dirs_before_symlink.join(",")
|
|
313
|
+
new_resource.create_dirs_before_symlink.each do |dir|
|
|
320
314
|
create_dir_unless_exists(release_path + "/#{dir}")
|
|
321
315
|
end
|
|
322
|
-
Chef::Log.info("#{
|
|
316
|
+
Chef::Log.info("#{new_resource} created directories before symlinking: #{dirs_info}")
|
|
323
317
|
|
|
324
|
-
links_info =
|
|
318
|
+
links_info = new_resource.symlinks.map { |src, dst| "#{src} => #{dst}" }.join(", ")
|
|
325
319
|
converge_by("link shared paths into current release: #{links_info}") do
|
|
326
|
-
|
|
320
|
+
new_resource.symlinks.each do |src, dest|
|
|
327
321
|
begin
|
|
328
|
-
FileUtils.ln_sf(::File.join(
|
|
322
|
+
FileUtils.ln_sf(::File.join(new_resource.shared_path, src), ::File.join(release_path, dest))
|
|
329
323
|
rescue => e
|
|
330
|
-
raise Chef::Exceptions::FileNotFound.new("Cannot symlink shared data #{::File.join(
|
|
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}")
|
|
331
325
|
end
|
|
332
326
|
end
|
|
333
|
-
Chef::Log.info("#{
|
|
327
|
+
Chef::Log.info("#{new_resource} linked shared paths into current release: #{links_info}")
|
|
334
328
|
end
|
|
335
329
|
run_symlinks_before_migrate
|
|
336
330
|
enforce_ownership
|
|
@@ -340,10 +334,10 @@ class Chef
|
|
|
340
334
|
end
|
|
341
335
|
|
|
342
336
|
def purge_tempfiles_from_current_release
|
|
343
|
-
log_info =
|
|
337
|
+
log_info = new_resource.purge_before_symlink.join(", ")
|
|
344
338
|
converge_by("purge directories in checkout #{log_info}") do
|
|
345
|
-
|
|
346
|
-
Chef::Log.info("#{
|
|
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}")
|
|
347
341
|
end
|
|
348
342
|
end
|
|
349
343
|
|
|
@@ -391,10 +385,10 @@ class Chef
|
|
|
391
385
|
end
|
|
392
386
|
|
|
393
387
|
def run_options(run_opts = {})
|
|
394
|
-
run_opts[:user] =
|
|
395
|
-
run_opts[:group] =
|
|
396
|
-
run_opts[:environment] =
|
|
397
|
-
run_opts[:log_tag] =
|
|
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
|
|
398
392
|
run_opts[:log_level] ||= :debug
|
|
399
393
|
if run_opts[:log_level] == :info
|
|
400
394
|
if STDOUT.tty? && !Chef::Config[:daemon] && Chef::Log.info?
|
|
@@ -405,7 +399,7 @@ class Chef
|
|
|
405
399
|
end
|
|
406
400
|
|
|
407
401
|
def run_callback_from_file(callback_file)
|
|
408
|
-
Chef::Log.info "#{
|
|
402
|
+
Chef::Log.info "#{new_resource} queueing checkdeploy hook #{callback_file}"
|
|
409
403
|
recipe_eval do
|
|
410
404
|
Dir.chdir(release_path) do
|
|
411
405
|
from_file(callback_file) if ::File.exist?(callback_file)
|
|
@@ -415,20 +409,20 @@ class Chef
|
|
|
415
409
|
|
|
416
410
|
def create_dir_unless_exists(dir)
|
|
417
411
|
if ::File.directory?(dir)
|
|
418
|
-
Chef::Log.debug "#{
|
|
412
|
+
Chef::Log.debug "#{new_resource} not creating #{dir} because it already exists"
|
|
419
413
|
return false
|
|
420
414
|
end
|
|
421
415
|
converge_by("create new directory #{dir}") do
|
|
422
416
|
begin
|
|
423
417
|
FileUtils.mkdir_p(dir)
|
|
424
|
-
Chef::Log.debug "#{
|
|
425
|
-
if
|
|
426
|
-
FileUtils.chown(
|
|
427
|
-
Chef::Log.debug("#{
|
|
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}")
|
|
428
422
|
end
|
|
429
|
-
if
|
|
430
|
-
FileUtils.chown(nil,
|
|
431
|
-
Chef::Log.debug("#{
|
|
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}")
|
|
432
426
|
end
|
|
433
427
|
rescue => e
|
|
434
428
|
raise Chef::Exceptions::FileNotFound.new("Cannot create directory #{dir}: #{e.message}")
|
|
@@ -439,7 +433,7 @@ class Chef
|
|
|
439
433
|
def with_rollback_on_error
|
|
440
434
|
yield
|
|
441
435
|
rescue ::Exception => e
|
|
442
|
-
if
|
|
436
|
+
if new_resource.rollback_on_error
|
|
443
437
|
Chef::Log.warn "Error on deploying #{release_path}: #{e.message}"
|
|
444
438
|
failed_release = release_path
|
|
445
439
|
|
|
@@ -458,8 +452,8 @@ class Chef
|
|
|
458
452
|
end
|
|
459
453
|
|
|
460
454
|
def save_release_state
|
|
461
|
-
if ::File.exists?(
|
|
462
|
-
release = ::File.readlink(
|
|
455
|
+
if ::File.exists?(new_resource.current_path)
|
|
456
|
+
release = ::File.readlink(new_resource.current_path)
|
|
463
457
|
@previous_release_path = release if ::File.exists?(release)
|
|
464
458
|
end
|
|
465
459
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2008-
|
|
3
|
+
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -29,17 +29,13 @@ class Chef
|
|
|
29
29
|
|
|
30
30
|
provides :directory
|
|
31
31
|
|
|
32
|
-
def whyrun_supported?
|
|
33
|
-
true
|
|
34
|
-
end
|
|
35
|
-
|
|
36
32
|
def load_current_resource
|
|
37
|
-
@current_resource = Chef::Resource::Directory.new(
|
|
38
|
-
|
|
39
|
-
if ::File.exists?(
|
|
40
|
-
load_resource_attributes_from_file(
|
|
33
|
+
@current_resource = Chef::Resource::Directory.new(new_resource.name)
|
|
34
|
+
current_resource.path(new_resource.path)
|
|
35
|
+
if ::File.exists?(current_resource.path) && @action != :create_if_missing
|
|
36
|
+
load_resource_attributes_from_file(current_resource)
|
|
41
37
|
end
|
|
42
|
-
|
|
38
|
+
current_resource
|
|
43
39
|
end
|
|
44
40
|
|
|
45
41
|
def define_resource_requirements
|
|
@@ -49,9 +45,9 @@ class Chef
|
|
|
49
45
|
requirements.assert(:create) do |a|
|
|
50
46
|
# Make sure the parent dir exists, or else fail.
|
|
51
47
|
# for why run, print a message explaining the potential error.
|
|
52
|
-
parent_directory = ::File.dirname(
|
|
48
|
+
parent_directory = ::File.dirname(new_resource.path)
|
|
53
49
|
a.assertion do
|
|
54
|
-
if
|
|
50
|
+
if new_resource.recursive
|
|
55
51
|
does_parent_exist = lambda do |base_dir|
|
|
56
52
|
base_dir = ::File.dirname(base_dir)
|
|
57
53
|
if ::File.exist?(base_dir)
|
|
@@ -60,20 +56,20 @@ class Chef
|
|
|
60
56
|
does_parent_exist.call(base_dir)
|
|
61
57
|
end
|
|
62
58
|
end
|
|
63
|
-
does_parent_exist.call(
|
|
59
|
+
does_parent_exist.call(new_resource.path)
|
|
64
60
|
else
|
|
65
61
|
::File.directory?(parent_directory)
|
|
66
62
|
end
|
|
67
63
|
end
|
|
68
|
-
a.failure_message(Chef::Exceptions::EnclosingDirectoryDoesNotExist, "Parent directory #{parent_directory} does not exist, cannot create #{
|
|
64
|
+
a.failure_message(Chef::Exceptions::EnclosingDirectoryDoesNotExist, "Parent directory #{parent_directory} does not exist, cannot create #{new_resource.path}")
|
|
69
65
|
a.whyrun("Assuming directory #{parent_directory} would have been created")
|
|
70
66
|
end
|
|
71
67
|
|
|
72
68
|
requirements.assert(:create) do |a|
|
|
73
|
-
parent_directory = ::File.dirname(
|
|
69
|
+
parent_directory = ::File.dirname(new_resource.path)
|
|
74
70
|
a.assertion do
|
|
75
|
-
if
|
|
76
|
-
# find the lowest-level directory in
|
|
71
|
+
if new_resource.recursive
|
|
72
|
+
# find the lowest-level directory in new_resource.path that already exists
|
|
77
73
|
# make sure we have write permissions to that directory
|
|
78
74
|
is_parent_writable = lambda do |base_dir|
|
|
79
75
|
base_dir = ::File.dirname(base_dir)
|
|
@@ -89,7 +85,7 @@ class Chef
|
|
|
89
85
|
is_parent_writable.call(base_dir)
|
|
90
86
|
end
|
|
91
87
|
end
|
|
92
|
-
is_parent_writable.call(
|
|
88
|
+
is_parent_writable.call(new_resource.path)
|
|
93
89
|
else
|
|
94
90
|
# in why run mode & parent directory does not exist no permissions check is required
|
|
95
91
|
# If not in why run, permissions must be valid and we rely on prior assertion that dir exists
|
|
@@ -97,7 +93,7 @@ class Chef
|
|
|
97
93
|
if Chef::FileAccessControl.writable?(parent_directory)
|
|
98
94
|
true
|
|
99
95
|
elsif Chef::Util::PathHelper.is_sip_path?(parent_directory, node)
|
|
100
|
-
Chef::Util::PathHelper.writable_sip_path?(
|
|
96
|
+
Chef::Util::PathHelper.writable_sip_path?(new_resource.path)
|
|
101
97
|
else
|
|
102
98
|
false
|
|
103
99
|
end
|
|
@@ -107,18 +103,18 @@ class Chef
|
|
|
107
103
|
end
|
|
108
104
|
end
|
|
109
105
|
a.failure_message(Chef::Exceptions::InsufficientPermissions,
|
|
110
|
-
"Cannot create #{
|
|
106
|
+
"Cannot create #{new_resource} at #{new_resource.path} due to insufficient permissions")
|
|
111
107
|
end
|
|
112
108
|
|
|
113
109
|
requirements.assert(:delete) do |a|
|
|
114
110
|
a.assertion do
|
|
115
|
-
if ::File.exists?(
|
|
116
|
-
::File.directory?(
|
|
111
|
+
if ::File.exists?(new_resource.path)
|
|
112
|
+
::File.directory?(new_resource.path) && Chef::FileAccessControl.writable?(new_resource.path)
|
|
117
113
|
else
|
|
118
114
|
true
|
|
119
115
|
end
|
|
120
116
|
end
|
|
121
|
-
a.failure_message(RuntimeError, "Cannot delete #{
|
|
117
|
+
a.failure_message(RuntimeError, "Cannot delete #{new_resource} at #{new_resource.path}!")
|
|
122
118
|
# No why-run handling here:
|
|
123
119
|
# * if we don't have permissions, this is unlikely to be changed earlier in the run
|
|
124
120
|
# * if the target is a file (not a dir), there's no reasonable path by which this would have been changed
|
|
@@ -126,32 +122,32 @@ class Chef
|
|
|
126
122
|
end
|
|
127
123
|
|
|
128
124
|
def action_create
|
|
129
|
-
unless ::File.exists?(
|
|
130
|
-
converge_by("create new directory #{
|
|
131
|
-
if
|
|
132
|
-
::FileUtils.mkdir_p(
|
|
125
|
+
unless ::File.exists?(new_resource.path)
|
|
126
|
+
converge_by("create new directory #{new_resource.path}") do
|
|
127
|
+
if new_resource.recursive == true
|
|
128
|
+
::FileUtils.mkdir_p(new_resource.path)
|
|
133
129
|
else
|
|
134
|
-
::Dir.mkdir(
|
|
130
|
+
::Dir.mkdir(new_resource.path)
|
|
135
131
|
end
|
|
136
|
-
Chef::Log.info("#{
|
|
132
|
+
Chef::Log.info("#{new_resource} created directory #{new_resource.path}")
|
|
137
133
|
end
|
|
138
134
|
end
|
|
139
135
|
do_acl_changes
|
|
140
136
|
do_selinux(true)
|
|
141
|
-
load_resource_attributes_from_file(
|
|
137
|
+
load_resource_attributes_from_file(new_resource) unless Chef::Config[:why_run]
|
|
142
138
|
end
|
|
143
139
|
|
|
144
140
|
def action_delete
|
|
145
|
-
if ::File.exists?(
|
|
146
|
-
converge_by("delete existing directory #{
|
|
147
|
-
if
|
|
141
|
+
if ::File.exists?(new_resource.path)
|
|
142
|
+
converge_by("delete existing directory #{new_resource.path}") do
|
|
143
|
+
if new_resource.recursive == true
|
|
148
144
|
# we don't use rm_rf here because it masks all errors, including
|
|
149
145
|
# IO errors or permission errors that would prvent the deletion
|
|
150
|
-
FileUtils.rm_r(
|
|
151
|
-
Chef::Log.info("#{
|
|
146
|
+
FileUtils.rm_r(new_resource.path)
|
|
147
|
+
Chef::Log.info("#{new_resource} deleted #{new_resource.path} recursively")
|
|
152
148
|
else
|
|
153
|
-
::Dir.delete(
|
|
154
|
-
Chef::Log.info("#{
|
|
149
|
+
::Dir.delete(new_resource.path)
|
|
150
|
+
Chef::Log.info("#{new_resource} deleted #{new_resource.path}")
|
|
155
151
|
end
|
|
156
152
|
end
|
|
157
153
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Edwards (<adamed@chef.io>)
|
|
3
3
|
#
|
|
4
|
-
# Copyright:: Copyright 2014-
|
|
4
|
+
# Copyright:: Copyright 2014-2017, Chef Software Inc.
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
@@ -29,6 +29,7 @@ class Chef
|
|
|
29
29
|
super
|
|
30
30
|
@new_resource = new_resource
|
|
31
31
|
@module_name = new_resource.module_name
|
|
32
|
+
@module_version = new_resource.module_version
|
|
32
33
|
@reboot_resource = nil
|
|
33
34
|
end
|
|
34
35
|
|
|
@@ -44,10 +45,6 @@ class Chef
|
|
|
44
45
|
def load_current_resource
|
|
45
46
|
end
|
|
46
47
|
|
|
47
|
-
def whyrun_supported?
|
|
48
|
-
true
|
|
49
|
-
end
|
|
50
|
-
|
|
51
48
|
def define_resource_requirements
|
|
52
49
|
requirements.assert(:run) do |a|
|
|
53
50
|
a.assertion { supports_dsc_invoke_resource? }
|
|
@@ -65,6 +62,13 @@ class Chef
|
|
|
65
62
|
a.whyrun err + ["Assuming a previous resource sets the RefreshMode."]
|
|
66
63
|
a.block_action!
|
|
67
64
|
end
|
|
65
|
+
requirements.assert(:run) do |a|
|
|
66
|
+
a.assertion { module_usage_valid? }
|
|
67
|
+
err = ["module_name must be supplied along with module_version."]
|
|
68
|
+
a.failure_message Chef::Exceptions::DSCModuleNameMissing,
|
|
69
|
+
err
|
|
70
|
+
a.block_action!
|
|
71
|
+
end
|
|
68
72
|
end
|
|
69
73
|
|
|
70
74
|
protected
|
|
@@ -92,6 +96,10 @@ class Chef
|
|
|
92
96
|
Chef::Platform.supports_refresh_mode_enabled?(node)
|
|
93
97
|
end
|
|
94
98
|
|
|
99
|
+
def module_usage_valid?
|
|
100
|
+
!(!@module_name && @module_version)
|
|
101
|
+
end
|
|
102
|
+
|
|
95
103
|
def generate_description
|
|
96
104
|
@converge_description
|
|
97
105
|
end
|
|
@@ -148,10 +156,14 @@ class Chef
|
|
|
148
156
|
end
|
|
149
157
|
end
|
|
150
158
|
|
|
159
|
+
def module_info_object
|
|
160
|
+
@module_version.nil? ? module_name : "@{ModuleName='#{module_name}';ModuleVersion='#{@module_version}'}"
|
|
161
|
+
end
|
|
162
|
+
|
|
151
163
|
def invoke_resource(method, output_format = :object)
|
|
152
|
-
properties = translate_type(
|
|
153
|
-
switches = "-Method #{method} -Name #{
|
|
154
|
-
" -Property #{properties} -Module #{
|
|
164
|
+
properties = translate_type(new_resource.properties)
|
|
165
|
+
switches = "-Method #{method} -Name #{new_resource.resource}"\
|
|
166
|
+
" -Property #{properties} -Module #{module_info_object} -Verbose"
|
|
155
167
|
cmdlet = Chef::Util::Powershell::Cmdlet.new(
|
|
156
168
|
node,
|
|
157
169
|
"Invoke-DscResource #{switches}",
|
|
@@ -172,15 +184,15 @@ class Chef
|
|
|
172
184
|
|
|
173
185
|
def create_reboot_resource
|
|
174
186
|
@reboot_resource = Chef::Resource::Reboot.new(
|
|
175
|
-
"Reboot for #{
|
|
187
|
+
"Reboot for #{new_resource.name}",
|
|
176
188
|
run_context
|
|
177
189
|
).tap do |r|
|
|
178
|
-
r.reason("Reboot for #{
|
|
190
|
+
r.reason("Reboot for #{new_resource.resource}.")
|
|
179
191
|
end
|
|
180
192
|
end
|
|
181
193
|
|
|
182
194
|
def reboot_if_required
|
|
183
|
-
reboot_action =
|
|
195
|
+
reboot_action = new_resource.reboot_action
|
|
184
196
|
unless @reboot_resource.nil?
|
|
185
197
|
case reboot_action
|
|
186
198
|
when :nothing
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Edwards (<adamed@chef.io>)
|
|
3
3
|
#
|
|
4
|
-
# Copyright:: Copyright 2014-
|
|
4
|
+
# Copyright:: Copyright 2014-2017, Chef Software Inc.
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
@@ -58,10 +58,6 @@ class Chef
|
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
def whyrun_supported?
|
|
62
|
-
true
|
|
63
|
-
end
|
|
64
|
-
|
|
65
61
|
def define_resource_requirements
|
|
66
62
|
requirements.assert(:run) do |a|
|
|
67
63
|
err = [
|