chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -7
- data/README.md +1 -1
- data/Rakefile +44 -16
- data/chef.gemspec +6 -4
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/action_collection.rb +16 -5
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +18 -1
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +3 -3
- data/lib/chef/client.rb +16 -14
- data/lib/chef/config.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +45 -22
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +38 -3
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dist.rb +8 -0
- data/lib/chef/dsl/chef_vault.rb +84 -0
- data/lib/chef/dsl/declare_resource.rb +7 -5
- data/lib/chef/dsl/platform_introspection.rb +3 -2
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -1
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -4
- data/lib/chef/knife/acl_add.rb +57 -0
- data/lib/chef/knife/acl_base.rb +183 -0
- data/lib/chef/knife/acl_bulk_add.rb +78 -0
- data/lib/chef/knife/acl_bulk_remove.rb +83 -0
- data/lib/chef/knife/acl_remove.rb +62 -0
- data/lib/chef/knife/acl_show.rb +56 -0
- data/lib/chef/knife/bootstrap.rb +84 -90
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
- data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +5 -5
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +17 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/group_add.rb +55 -0
- data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
- data/lib/chef/knife/group_destroy.rb +53 -0
- data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
- data/lib/chef/knife/group_remove.rb +56 -0
- data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -31
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +2 -3
- data/lib/chef/knife/supermarket_list.rb +1 -2
- data/lib/chef/knife/supermarket_search.rb +1 -2
- data/lib/chef/knife/supermarket_share.rb +1 -2
- data/lib/chef/knife/supermarket_show.rb +1 -2
- data/lib/chef/knife/supermarket_unshare.rb +1 -2
- data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
- data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
- data/lib/chef/knife/user_invite_list.rb +34 -0
- data/lib/chef/knife/user_invite_rescind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +16 -2
- data/lib/chef/mixin/shell_out.rb +1 -5
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/immutablize_array.rb +4 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/node_map.rb +5 -31
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +24 -6
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -9
- data/lib/chef/provider/file.rb +6 -6
- data/lib/chef/provider/git.rb +84 -27
- data/lib/chef/provider/group.rb +4 -4
- data/lib/chef/provider/http_request.rb +6 -6
- data/lib/chef/provider/ifconfig.rb +4 -4
- data/lib/chef/provider/launchd.rb +45 -64
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +5 -6
- data/lib/chef/provider/package/chocolatey.rb +1 -3
- data/lib/chef/provider/package/dnf.rb +66 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
- data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
- data/lib/chef/provider/package/dnf/version.rb +5 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/freebsd/base.rb +2 -1
- data/lib/chef/provider/package/homebrew.rb +107 -43
- data/lib/chef/provider/package/macports.rb +0 -2
- data/lib/chef/provider/package/msu.rb +4 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/portage.rb +1 -0
- data/lib/chef/provider/package/powershell.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +30 -3
- data/lib/chef/provider/package/windows.rb +29 -53
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +1 -9
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +5 -11
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +5 -5
- data/lib/chef/provider/remote_file/ftp.rb +3 -2
- data/lib/chef/provider/remote_file/local_file.rb +2 -1
- data/lib/chef/provider/remote_file/sftp.rb +3 -2
- data/lib/chef/provider/route.rb +5 -3
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +8 -8
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +30 -28
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/systemd.rb +12 -12
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +5 -11
- data/lib/chef/provider/subversion.rb +25 -5
- data/lib/chef/provider/systemd_unit.rb +26 -25
- data/lib/chef/provider/user.rb +6 -6
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/mac.rb +20 -15
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/windows_env.rb +3 -3
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/windows_task.rb +10 -10
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +44 -57
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +210 -0
- data/lib/chef/resource/apt_package.rb +33 -3
- data/lib/chef/resource/apt_preference.rb +103 -7
- data/lib/chef/resource/apt_repository.rb +357 -18
- data/lib/chef/resource/apt_update.rb +58 -5
- data/lib/chef/resource/archive_file.rb +6 -5
- data/lib/chef/resource/bash.rb +3 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +10 -2
- data/lib/chef/resource/breakpoint.rb +1 -2
- data/lib/chef/resource/build_essential.rb +49 -51
- data/lib/chef/resource/cab_package.rb +9 -2
- data/lib/chef/resource/chef_client_cron.rb +228 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
- data/lib/chef/resource/chef_gem.rb +15 -18
- data/lib/chef/resource/chef_handler.rb +5 -4
- data/lib/chef/resource/chef_sleep.rb +7 -5
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +8 -4
- data/lib/chef/resource/chocolatey_feature.rb +7 -4
- data/lib/chef/resource/chocolatey_package.rb +7 -4
- data/lib/chef/resource/chocolatey_source.rb +7 -4
- data/lib/chef/resource/cookbook_file.rb +4 -3
- data/lib/chef/resource/cron.rb +34 -80
- data/lib/chef/resource/cron_access.rb +10 -6
- data/lib/chef/resource/cron_d.rb +44 -95
- data/lib/chef/resource/csh.rb +3 -1
- data/lib/chef/resource/directory.rb +3 -3
- data/lib/chef/resource/dmg_package.rb +22 -19
- data/lib/chef/resource/dnf_package.rb +3 -4
- data/lib/chef/resource/dpkg_package.rb +3 -2
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +15 -14
- data/lib/chef/resource/file.rb +14 -9
- data/lib/chef/resource/freebsd_package.rb +3 -2
- data/lib/chef/resource/gem_package.rb +19 -11
- data/lib/chef/resource/group.rb +5 -2
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +3 -2
- data/lib/chef/resource/homebrew_package.rb +5 -3
- data/lib/chef/resource/homebrew_tap.rb +3 -2
- data/lib/chef/resource/hostname.rb +26 -20
- data/lib/chef/resource/http_request.rb +1 -2
- data/lib/chef/resource/ifconfig.rb +8 -8
- data/lib/chef/resource/ips_package.rb +11 -3
- data/lib/chef/resource/kernel_module.rb +30 -30
- data/lib/chef/resource/ksh.rb +3 -1
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/link.rb +5 -27
- data/lib/chef/resource/locale.rb +60 -26
- data/lib/chef/resource/log.rb +13 -2
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +18 -10
- data/lib/chef/resource/macosx_service.rb +3 -2
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +63 -3
- data/lib/chef/resource/mount.rb +4 -1
- data/lib/chef/resource/msu_package.rb +19 -2
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +20 -4
- data/lib/chef/resource/ohai_hint.rb +4 -13
- data/lib/chef/resource/openbsd_package.rb +10 -2
- data/lib/chef/resource/openssl_dhparam.rb +11 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
- data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
- data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
- data/lib/chef/resource/openssl_x509_crl.rb +13 -2
- data/lib/chef/resource/openssl_x509_request.rb +38 -2
- data/lib/chef/resource/osx_profile.rb +4 -3
- data/lib/chef/resource/package.rb +3 -2
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +13 -4
- data/lib/chef/resource/perl.rb +3 -1
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +14 -4
- data/lib/chef/resource/powershell_package.rb +2 -4
- data/lib/chef/resource/powershell_package_source.rb +4 -2
- data/lib/chef/resource/powershell_script.rb +8 -18
- data/lib/chef/resource/python.rb +3 -1
- data/lib/chef/resource/reboot.rb +1 -2
- data/lib/chef/resource/registry_key.rb +2 -3
- data/lib/chef/resource/remote_directory.rb +3 -1
- data/lib/chef/resource/remote_file.rb +3 -2
- data/lib/chef/resource/rhsm_errata.rb +1 -4
- data/lib/chef/resource/rhsm_errata_level.rb +1 -2
- data/lib/chef/resource/rhsm_register.rb +3 -3
- data/lib/chef/resource/rhsm_repo.rb +4 -3
- data/lib/chef/resource/rhsm_subscription.rb +5 -4
- data/lib/chef/resource/route.rb +6 -2
- data/lib/chef/resource/rpm_package.rb +13 -3
- data/lib/chef/resource/ruby.rb +3 -1
- data/lib/chef/resource/ruby_block.rb +2 -5
- data/lib/chef/resource/scm/_scm.rb +49 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
- data/lib/chef/resource/script.rb +7 -4
- data/lib/chef/resource/service.rb +7 -8
- data/lib/chef/resource/smartos_package.rb +10 -2
- data/lib/chef/resource/snap_package.rb +4 -2
- data/lib/chef/resource/solaris_package.rb +10 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +11 -11
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -2
- data/lib/chef/resource/support/ulimit.erb +41 -0
- data/lib/chef/resource/swap_file.rb +7 -5
- data/lib/chef/resource/sysctl.rb +63 -4
- data/lib/chef/resource/systemd_unit.rb +6 -4
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +8 -19
- data/lib/chef/resource/user.rb +3 -5
- data/lib/chef/resource/user/aix_user.rb +0 -2
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +0 -2
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user/pw_user.rb +0 -2
- data/lib/chef/resource/user/solaris_user.rb +0 -2
- data/lib/chef/resource/user/windows_user.rb +0 -2
- data/lib/chef/resource/user_ulimit.rb +116 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +20 -7
- data/lib/chef/resource/windows_auto_run.rb +2 -3
- data/lib/chef/resource/windows_certificate.rb +3 -3
- data/lib/chef/resource/windows_dfs_folder.rb +1 -2
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
- data/lib/chef/resource/windows_dfs_server.rb +2 -3
- data/lib/chef/resource/windows_dns_record.rb +0 -1
- data/lib/chef/resource/windows_dns_zone.rb +0 -1
- data/lib/chef/resource/windows_env.rb +12 -4
- data/lib/chef/resource/windows_feature.rb +59 -4
- data/lib/chef/resource/windows_feature_dism.rb +24 -24
- data/lib/chef/resource/windows_feature_powershell.rb +44 -78
- data/lib/chef/resource/windows_firewall_rule.rb +121 -8
- data/lib/chef/resource/windows_font.rb +10 -2
- data/lib/chef/resource/windows_package.rb +76 -7
- data/lib/chef/resource/windows_pagefile.rb +31 -4
- data/lib/chef/resource/windows_path.rb +18 -2
- data/lib/chef/resource/windows_printer.rb +26 -7
- data/lib/chef/resource/windows_printer_port.rb +29 -2
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +119 -0
- data/lib/chef/resource/windows_service.rb +46 -32
- data/lib/chef/resource/windows_share.rb +22 -6
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +129 -16
- data/lib/chef/resource/windows_uac.rb +20 -2
- data/lib/chef/resource/windows_user_privilege.rb +199 -0
- data/lib/chef/resource/windows_workgroup.rb +19 -4
- data/lib/chef/resource/yum_package.rb +91 -7
- data/lib/chef/resource/yum_repository.rb +30 -12
- data/lib/chef/resource/zypper_package.rb +32 -5
- data/lib/chef/resource/zypper_repository.rb +19 -6
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +3 -2
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/scan_access_control.rb +1 -1
- data/lib/chef/shell.rb +22 -0
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +1 -9
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/security.rb +40 -2
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +23 -19
- data/spec/functional/resource/cron_spec.rb +10 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/msu_package_spec.rb +5 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -4
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -1
- data/spec/functional/shell_spec.rb +1 -1
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +0 -6
- data/spec/functional/win32/security_spec.rb +22 -0
- data/spec/integration/client/client_spec.rb +123 -2
- data/spec/integration/knife/cookbook_show_spec.rb +28 -26
- data/spec/integration/knife/data_bag_show_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +34 -6
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +49 -20
- data/spec/integration/recipes/notifying_block_spec.rb +8 -5
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
- data/spec/integration/recipes/resource_load_spec.rb +133 -12
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/spec_helper.rb +18 -3
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
- data/spec/support/platform_helpers.rb +2 -20
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -16
- data/spec/support/shared/integration/knife_support.rb +9 -6
- data/spec/support/shared/unit/mock_shellout.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_collector_spec.rb +39 -18
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
- data/spec/unit/knife/bootstrap_spec.rb +20 -38
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/ssh_spec.rb +8 -111
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- data/spec/unit/node/attribute_spec.rb +3 -3
- data/spec/unit/node_spec.rb +24 -0
- data/spec/unit/platform/query_helpers_spec.rb +0 -143
- data/spec/unit/property/state_spec.rb +12 -7
- data/spec/unit/property/validation_spec.rb +25 -1
- data/spec/unit/property_spec.rb +12 -9
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +34 -36
- data/spec/unit/provider/apt_update_spec.rb +12 -11
- data/spec/unit/provider/cookbook_file_spec.rb +4 -4
- data/spec/unit/provider/cron_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +4 -15
- data/spec/unit/provider/file_spec.rb +4 -4
- data/spec/unit/provider/git_spec.rb +41 -1
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/link_spec.rb +0 -1
- data/spec/unit/provider/log_spec.rb +3 -3
- data/spec/unit/provider/mdadm_spec.rb +3 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +3 -2
- data/spec/unit/provider/package/rubygems_spec.rb +211 -26
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +21 -61
- data/spec/unit/provider/remote_file_spec.rb +3 -4
- data/spec/unit/provider/service/debian_service_spec.rb +34 -13
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +17 -17
- data/spec/unit/provider_resolver_spec.rb +4 -4
- data/spec/unit/recipe_spec.rb +68 -0
- data/spec/unit/resource/alternatives_spec.rb +120 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -18
- data/spec/unit/resource/apt_repository_spec.rb +0 -18
- data/spec/unit/resource/apt_update_spec.rb +0 -18
- data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
- data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
- data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
- data/spec/unit/resource/cron_d_spec.rb +6 -48
- data/spec/unit/resource/cron_spec.rb +4 -10
- data/spec/unit/resource/gem_package_spec.rb +3 -3
- data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
- data/spec/unit/resource/link_spec.rb +0 -4
- data/spec/unit/resource/locale_spec.rb +0 -34
- data/spec/unit/resource/msu_package_spec.rb +4 -0
- data/spec/unit/resource/ohai_spec.rb +56 -2
- data/spec/unit/resource/plist_spec.rb +130 -0
- data/spec/unit/resource/powershell_script_spec.rb +0 -5
- data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
- data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
- data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
- data/spec/unit/resource/service_spec.rb +4 -0
- data/spec/unit/resource/user_spec.rb +2 -2
- data/spec/unit/resource/user_ulimit_spec.rb +53 -0
- data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +14 -0
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource_reporter_spec.rb +2 -6
- data/spec/unit/resource_spec.rb +10 -3
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/win32/registry_spec.rb +1 -1
- data/tasks/rspec.rb +6 -14
- metadata +92 -37
- data/lib/chef/dsl/core.rb +0 -52
- data/lib/chef/knife/cookbook_site_share.rb +0 -41
- data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
- data/lib/chef/provider/apt_preference.rb +0 -93
- data/lib/chef/provider/apt_repository.rb +0 -358
- data/lib/chef/provider/apt_update.rb +0 -79
- data/lib/chef/provider/log.rb +0 -43
- data/lib/chef/provider/mdadm.rb +0 -85
- data/lib/chef/provider/ohai.rb +0 -45
- data/lib/chef/resource/git.rb +0 -37
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -20,27 +20,29 @@ require_relative "../dist"
|
|
20
20
|
class Chef
|
21
21
|
class Resource
|
22
22
|
class ChefSleep < Chef::Resource
|
23
|
-
resource_name :chef_sleep
|
24
23
|
provides :chef_sleep
|
25
24
|
|
26
25
|
unified_mode true
|
27
26
|
|
28
|
-
description "Use the chef_sleep resource to
|
27
|
+
description "Use the **chef_sleep** resource to pause (sleep) for a number of seconds during a #{Chef::Dist::PRODUCT} run. Only use this resource when a command or service exits successfully but is not ready for the next step in a recipe."
|
29
28
|
introduced "15.5"
|
30
29
|
examples <<~DOC
|
31
|
-
Sleep for 10 seconds
|
30
|
+
**Sleep for 10 seconds**:
|
31
|
+
|
32
32
|
```ruby
|
33
33
|
chef_sleep '10'
|
34
34
|
```
|
35
35
|
|
36
|
-
Sleep for 10 seconds with a descriptive resource name for logging
|
36
|
+
**Sleep for 10 seconds with a descriptive resource name for logging**:
|
37
|
+
|
37
38
|
```ruby
|
38
39
|
chef_sleep 'wait for the service to start' do
|
39
40
|
seconds 10
|
40
41
|
end
|
41
42
|
````
|
42
43
|
|
43
|
-
Use a notification from another resource to sleep only when necessary
|
44
|
+
**Use a notification from another resource to sleep only when necessary**:
|
45
|
+
|
44
46
|
```ruby
|
45
47
|
service 'Service that is slow to start and reports as started' do
|
46
48
|
service_name 'my_database'
|
@@ -0,0 +1,135 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Joshua Timberman <joshua@chef.io>
|
3
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require_relative "../resource"
|
19
|
+
require "chef-vault"
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Resource
|
23
|
+
class ChefVaultSecret < Chef::Resource
|
24
|
+
unified_mode true
|
25
|
+
|
26
|
+
provides :chef_vault_secret
|
27
|
+
|
28
|
+
introduced "16.0"
|
29
|
+
description "Use the **chef_vault_secret** resource to store secrets in Chef Vault items. Where possible and relevant, this resource attempts to map behavior and functionality to the knife vault sub-commands."
|
30
|
+
examples <<~DOC
|
31
|
+
**To create a 'foo' item in an existing 'bar' data bag**:
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
chef_vault_secret 'foo' do
|
35
|
+
data_bag 'bar'
|
36
|
+
raw_data({'auth' => 'baz'})
|
37
|
+
admins 'jtimberman'
|
38
|
+
search '*:*'
|
39
|
+
end
|
40
|
+
```
|
41
|
+
|
42
|
+
**To allow multiple admins access to an item**:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
chef_vault_secret 'root-password' do
|
46
|
+
admins 'jtimberman,paulmooring'
|
47
|
+
data_bag 'secrets'
|
48
|
+
raw_data({'auth' => 'DoNotUseThisPasswordForRoot'})
|
49
|
+
search '*:*'
|
50
|
+
end
|
51
|
+
```
|
52
|
+
DOC
|
53
|
+
|
54
|
+
property :id, String, name_property: true,
|
55
|
+
description: "The name of the data bag item if it differs from the name of the resource block"
|
56
|
+
|
57
|
+
property :data_bag, String, required: true, desired_state: false,
|
58
|
+
description: "The data bag that contains the item."
|
59
|
+
|
60
|
+
property :admins, [String, Array], required: true, desired_state: false,
|
61
|
+
description: "A list of admin users who should have access to the item. Corresponds to the 'admin' option when using the chef-vault knife plugin. Can be specified as a comma separated string or an array."
|
62
|
+
|
63
|
+
property :clients, [String, Array], desired_state: false,
|
64
|
+
description: "A search query for the nodes' API clients that should have access to the item."
|
65
|
+
|
66
|
+
property :search, String, default: "*:*", desired_state: false,
|
67
|
+
description: "Search query that would match the same used for the clients, gets stored as a field in the item."
|
68
|
+
|
69
|
+
property :raw_data, [Hash, Mash], default: {},
|
70
|
+
description: "The raw data, as a Ruby Hash, that will be stored in the item."
|
71
|
+
|
72
|
+
property :environment, [String, NilClass], desired_state: false,
|
73
|
+
description: "The Chef environment of the data if storing per environment values."
|
74
|
+
|
75
|
+
load_current_value do
|
76
|
+
begin
|
77
|
+
item = ChefVault::Item.load(data_bag, id)
|
78
|
+
raw_data item.raw_data
|
79
|
+
clients item.get_clients
|
80
|
+
admins item.get_admins
|
81
|
+
search item.search
|
82
|
+
rescue ChefVault::Exceptions::SecretDecryption
|
83
|
+
current_value_does_not_exist!
|
84
|
+
rescue ChefVault::Exceptions::KeysNotFound
|
85
|
+
current_value_does_not_exist!
|
86
|
+
rescue Net::HTTPClientException => e
|
87
|
+
current_value_does_not_exist! if e.response_code == "404"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
action :create do
|
92
|
+
description "Creates the item, or updates it if it already exists."
|
93
|
+
|
94
|
+
converge_if_changed do
|
95
|
+
item = ChefVault::Item.new(new_resource.data_bag, new_resource.id)
|
96
|
+
|
97
|
+
Chef::Log.debug("#{new_resource.id} environment: '#{new_resource.environment}'")
|
98
|
+
item.raw_data = if new_resource.environment.nil?
|
99
|
+
new_resource.raw_data.merge("id" => new_resource.id)
|
100
|
+
else
|
101
|
+
{ "id" => new_resource.id, new_resource.environment => new_resource.raw_data }
|
102
|
+
end
|
103
|
+
|
104
|
+
Chef::Log.debug("#{new_resource.id} search query: '#{new_resource.search}'")
|
105
|
+
item.search(new_resource.search)
|
106
|
+
Chef::Log.debug("#{new_resource.id} clients: '#{new_resource.clients}'")
|
107
|
+
item.clients([new_resource.clients].flatten.join(",")) unless new_resource.clients.nil?
|
108
|
+
Chef::Log.debug("#{new_resource.id} admins (users): '#{new_resource.admins}'")
|
109
|
+
item.admins([new_resource.admins].flatten.join(","))
|
110
|
+
item.save
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
action :create_if_missing do
|
115
|
+
description "Calls the create action unless it exists."
|
116
|
+
|
117
|
+
action_create if current_resource.nil?
|
118
|
+
end
|
119
|
+
|
120
|
+
action :delete do
|
121
|
+
description "Deletes the item and the item's keys ('id'_keys)."
|
122
|
+
|
123
|
+
chef_data_bag_item new_resource.id do
|
124
|
+
data_bag new_resource.data_bag
|
125
|
+
action :delete
|
126
|
+
end
|
127
|
+
|
128
|
+
chef_data_bag_item [new_resource.id, "keys"].join("_") do
|
129
|
+
data_bag new_resource.data_bag
|
130
|
+
action :delete
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -17,12 +17,15 @@
|
|
17
17
|
class Chef
|
18
18
|
class Resource
|
19
19
|
class ChocolateyConfig < Chef::Resource
|
20
|
-
|
20
|
+
unified_mode true
|
21
21
|
|
22
|
-
|
22
|
+
provides :chocolatey_config
|
23
|
+
|
24
|
+
description "Use the **chocolatey_config** resource to add or remove Chocolatey configuration keys."
|
23
25
|
introduced "14.3"
|
24
26
|
examples <<~DOC
|
25
|
-
Set the Chocolatey cacheLocation config
|
27
|
+
**Set the Chocolatey cacheLocation config**:
|
28
|
+
|
26
29
|
```ruby
|
27
30
|
chocolatey_config 'Set cacheLocation config' do
|
28
31
|
config_key 'cacheLocation'
|
@@ -30,7 +33,8 @@ class Chef
|
|
30
33
|
end
|
31
34
|
```
|
32
35
|
|
33
|
-
Unset a Chocolatey config
|
36
|
+
**Unset a Chocolatey config**:
|
37
|
+
|
34
38
|
```ruby
|
35
39
|
chocolatey_config 'BogusConfig' do
|
36
40
|
action :unset
|
@@ -17,19 +17,22 @@
|
|
17
17
|
class Chef
|
18
18
|
class Resource
|
19
19
|
class ChocolateyFeature < Chef::Resource
|
20
|
-
|
20
|
+
unified_mode true
|
21
|
+
provides :chocolatey_feature
|
21
22
|
|
22
|
-
description "Use the chocolatey_feature resource to enable and disable Chocolatey features."
|
23
|
+
description "Use the **chocolatey_feature** resource to enable and disable Chocolatey features."
|
23
24
|
introduced "15.1"
|
24
25
|
examples <<~DOC
|
25
|
-
Enable the checksumFiles Chocolatey feature
|
26
|
+
**Enable the checksumFiles Chocolatey feature**
|
27
|
+
|
26
28
|
```ruby
|
27
29
|
chocolatey_feature 'checksumFiles' do
|
28
30
|
action :enable
|
29
31
|
end
|
30
32
|
```
|
31
33
|
|
32
|
-
Disable the checksumFiles Chocolatey feature
|
34
|
+
**Disable the checksumFiles Chocolatey feature**
|
35
|
+
|
33
36
|
```ruby
|
34
37
|
chocolatey_feature 'checksumFiles' do
|
35
38
|
action :disable
|
@@ -21,20 +21,23 @@ require_relative "package"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class ChocolateyPackage < Chef::Resource::Package
|
24
|
-
|
24
|
+
unified_mode true
|
25
|
+
|
25
26
|
provides :chocolatey_package
|
26
27
|
|
27
|
-
description "Use the chocolatey_package resource to manage packages using Chocolatey on the Microsoft Windows platform."
|
28
|
+
description "Use the **chocolatey_package** resource to manage packages using Chocolatey on the Microsoft Windows platform. Note: The Chocolatey package manager is not installed on Windows by default. You will need to install it prior to using this resource by adding the [Chocolatey cookbook](https://supermarket.chef.io/cookbooks/chocolatey/) to your node's run list."
|
28
29
|
introduced "12.7"
|
29
30
|
examples <<~DOC
|
30
|
-
Install a Chocolatey package
|
31
|
+
**Install a Chocolatey package**:
|
32
|
+
|
31
33
|
```ruby
|
32
34
|
chocolatey_package 'name of package' do
|
33
35
|
action :install
|
34
36
|
end
|
35
37
|
```
|
36
38
|
|
37
|
-
Install a package with options with Chocolatey's
|
39
|
+
**Install a package with options with Chocolatey's `--checksum` option**:
|
40
|
+
|
38
41
|
```ruby
|
39
42
|
chocolatey_package 'name of package' do
|
40
43
|
options '--checksum 1234567890'
|
@@ -17,12 +17,14 @@
|
|
17
17
|
class Chef
|
18
18
|
class Resource
|
19
19
|
class ChocolateySource < Chef::Resource
|
20
|
-
|
20
|
+
unified_mode true
|
21
|
+
provides :chocolatey_source
|
21
22
|
|
22
|
-
description "Use the chocolatey_source resource to add, remove, enable, or disable Chocolatey sources."
|
23
|
+
description "Use the **chocolatey_source** resource to add, remove, enable, or disable Chocolatey sources."
|
23
24
|
introduced "14.3"
|
24
25
|
examples <<~DOC
|
25
|
-
Add a Chocolatey source
|
26
|
+
**Add a Chocolatey source**
|
27
|
+
|
26
28
|
```ruby
|
27
29
|
chocolatey_source 'MySource' do
|
28
30
|
source 'http://example.com/something'
|
@@ -30,7 +32,8 @@ class Chef
|
|
30
32
|
end
|
31
33
|
```
|
32
34
|
|
33
|
-
Remove a Chocolatey source
|
35
|
+
**Remove a Chocolatey source**
|
36
|
+
|
34
37
|
```ruby
|
35
38
|
chocolatey_source 'MySource' do
|
36
39
|
action :remove
|
@@ -29,9 +29,9 @@ class Chef
|
|
29
29
|
include Chef::Mixin::Securable
|
30
30
|
unified_mode true
|
31
31
|
|
32
|
-
|
32
|
+
provides :cookbook_file
|
33
33
|
|
34
|
-
description "Use the cookbook_file resource to transfer files from a sub-directory of COOKBOOK_NAME/files/ to a specified path located on a host that is running the #{Chef::Dist::PRODUCT}. The file is selected according to file specificity, which allows different source files to be used based on the hostname, host platform (operating system, distro, or as appropriate), or platform version. Files that are located in the COOKBOOK_NAME/files/default sub-directory may be used on any platform.\n\nDuring a #{Chef::Dist::PRODUCT} run, the checksum for each local file is calculated and then compared against the checksum for the same file as it currently exists in the cookbook on the #{Chef::Dist::SERVER_PRODUCT}. A file is not transferred when the checksums match. Only files that require an update are transferred from the #{Chef::Dist::SERVER_PRODUCT} to a node."
|
34
|
+
description "Use the **cookbook_file** resource to transfer files from a sub-directory of COOKBOOK_NAME/files/ to a specified path located on a host that is running the #{Chef::Dist::PRODUCT}. The file is selected according to file specificity, which allows different source files to be used based on the hostname, host platform (operating system, distro, or as appropriate), or platform version. Files that are located in the COOKBOOK_NAME/files/default sub-directory may be used on any platform.\n\nDuring a #{Chef::Dist::PRODUCT} run, the checksum for each local file is calculated and then compared against the checksum for the same file as it currently exists in the cookbook on the #{Chef::Dist::SERVER_PRODUCT}. A file is not transferred when the checksums match. Only files that require an update are transferred from the #{Chef::Dist::SERVER_PRODUCT} to a node."
|
35
35
|
|
36
36
|
property :source, [ String, Array ],
|
37
37
|
description: "The name of the file in COOKBOOK_NAME/files/default or the path to a file located in COOKBOOK_NAME/files. The path must include the file name and its extension. This can be used to distribute specific files depending upon the platform used.",
|
@@ -39,7 +39,8 @@ class Chef
|
|
39
39
|
|
40
40
|
property :cookbook, String,
|
41
41
|
description: "The cookbook in which a file is located (if it is not located in the current cookbook).",
|
42
|
-
desired_state: false
|
42
|
+
desired_state: false,
|
43
|
+
default_description: "The current cookbook name"
|
43
44
|
|
44
45
|
default_action :create
|
45
46
|
end
|
data/lib/chef/resource/cron.rb
CHANGED
@@ -18,15 +18,16 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
require_relative "../resource"
|
21
|
+
require_relative "helpers/cron_validations"
|
21
22
|
require_relative "../provider/cron" # do not remove. we actually need this below
|
22
23
|
|
23
24
|
class Chef
|
24
25
|
class Resource
|
25
26
|
class Cron < Chef::Resource
|
26
|
-
|
27
|
+
unified_mode true
|
27
28
|
provides :cron
|
28
29
|
|
29
|
-
description "Use the cron resource to manage cron entries for time-based job scheduling. Properties for a schedule will default to * if not provided. The cron resource requires access to a crontab program, typically cron."
|
30
|
+
description "Use the **cron** resource to manage cron entries for time-based job scheduling. Properties for a schedule will default to * if not provided. The cron resource requires access to a crontab program, typically cron."
|
30
31
|
|
31
32
|
state_attrs :minute, :hour, :day, :month, :weekday, :user
|
32
33
|
|
@@ -35,80 +36,33 @@ class Chef
|
|
35
36
|
|
36
37
|
def initialize(name, run_context = nil)
|
37
38
|
super
|
38
|
-
@minute = "*"
|
39
|
-
@hour = "*"
|
40
|
-
@day = "*"
|
41
39
|
@month = "*"
|
42
40
|
@weekday = "*"
|
43
41
|
end
|
44
42
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
end
|
51
|
-
begin
|
52
|
-
if integerize(arg) > 59 then raise RangeError end
|
53
|
-
rescue ArgumentError
|
54
|
-
end
|
55
|
-
set_or_return(
|
56
|
-
:minute,
|
57
|
-
converted_arg,
|
58
|
-
kind_of: String
|
59
|
-
)
|
60
|
-
end
|
43
|
+
property :minute, [Integer, String],
|
44
|
+
description: "The minute at which the cron entry should run (`0 - 59`).",
|
45
|
+
default: "*", callbacks: {
|
46
|
+
"should be a valid minute spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 59) },
|
47
|
+
}
|
61
48
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
end
|
68
|
-
begin
|
69
|
-
if integerize(arg) > 23 then raise RangeError end
|
70
|
-
rescue ArgumentError
|
71
|
-
end
|
72
|
-
set_or_return(
|
73
|
-
:hour,
|
74
|
-
converted_arg,
|
75
|
-
kind_of: String
|
76
|
-
)
|
77
|
-
end
|
49
|
+
property :hour, [Integer, String],
|
50
|
+
description: "The hour at which the cron entry is to run (`0 - 23`).",
|
51
|
+
default: "*", callbacks: {
|
52
|
+
"should be a valid hour spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 23) },
|
53
|
+
}
|
78
54
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
end
|
85
|
-
begin
|
86
|
-
if integerize(arg) > 31 then raise RangeError end
|
87
|
-
rescue ArgumentError
|
88
|
-
end
|
89
|
-
set_or_return(
|
90
|
-
:day,
|
91
|
-
converted_arg,
|
92
|
-
kind_of: String
|
93
|
-
)
|
94
|
-
end
|
55
|
+
property :day, [Integer, String],
|
56
|
+
description: "The day of month at which the cron entry should run (`1 - 31`).",
|
57
|
+
default: "*", callbacks: {
|
58
|
+
"should be a valid day spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 1, 31) },
|
59
|
+
}
|
95
60
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
end
|
102
|
-
begin
|
103
|
-
if integerize(arg) > 12 then raise RangeError end
|
104
|
-
rescue ArgumentError
|
105
|
-
end
|
106
|
-
set_or_return(
|
107
|
-
:month,
|
108
|
-
converted_arg,
|
109
|
-
kind_of: String
|
110
|
-
)
|
111
|
-
end
|
61
|
+
property :month, [Integer, String],
|
62
|
+
description: "The month in the year on which a cron entry is to run (`1 - 12`, `jan-dec`, or `*`).",
|
63
|
+
default: "*", callbacks: {
|
64
|
+
"should be a valid month spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_month(spec) },
|
65
|
+
}
|
112
66
|
|
113
67
|
def weekday(arg = nil)
|
114
68
|
if arg.is_a?(Integer)
|
@@ -139,16 +93,16 @@ class Chef
|
|
139
93
|
equal_to: Chef::Provider::Cron::SPECIAL_TIME_VALUES
|
140
94
|
|
141
95
|
property :mailto, String,
|
142
|
-
description: "Set the MAILTO environment variable."
|
96
|
+
description: "Set the `MAILTO` environment variable."
|
143
97
|
|
144
98
|
property :path, String,
|
145
|
-
description: "Set the PATH environment variable."
|
99
|
+
description: "Set the `PATH` environment variable."
|
146
100
|
|
147
101
|
property :home, String,
|
148
|
-
description: "Set the HOME environment variable."
|
102
|
+
description: "Set the `HOME` environment variable."
|
149
103
|
|
150
104
|
property :shell, String,
|
151
|
-
description: "Set the SHELL environment variable."
|
105
|
+
description: "Set the `SHELL` environment variable."
|
152
106
|
|
153
107
|
property :command, String,
|
154
108
|
description: "The command to be run, or the path to a file that contains the command to be run.",
|
@@ -159,19 +113,19 @@ class Chef
|
|
159
113
|
default: "root"
|
160
114
|
|
161
115
|
property :environment, Hash,
|
162
|
-
description: "A Hash
|
116
|
+
description: "A Hash containing additional arbitrary environment variables under which the cron job will be run in the form of `({'ENV_VARIABLE' => 'VALUE'})`.",
|
163
117
|
default: lazy { {} }
|
164
118
|
|
165
119
|
TIMEOUT_OPTS = %w{duration preserve-status foreground kill-after signal}.freeze
|
166
120
|
TIMEOUT_REGEX = /\A\S+/.freeze
|
167
121
|
|
168
122
|
property :time_out, Hash,
|
169
|
-
description: "A Hash of timeouts in the form of ({'OPTION' => 'VALUE'})
|
123
|
+
description: "A Hash of timeouts in the form of `({'OPTION' => 'VALUE'})`.
|
170
124
|
Accepted valid options are:
|
171
|
-
preserve-status (BOOL, default: 'false'),
|
172
|
-
foreground (BOOL, default: 'false'),
|
173
|
-
kill-after (in seconds),
|
174
|
-
signal (a name like 'HUP' or a number)",
|
125
|
+
`preserve-status` (BOOL, default: 'false'),
|
126
|
+
`foreground` (BOOL, default: 'false'),
|
127
|
+
`kill-after` (in seconds),
|
128
|
+
`signal` (a name like 'HUP' or a number)",
|
175
129
|
default: lazy { {} },
|
176
130
|
introduced: "15.7",
|
177
131
|
coerce: proc { |h|
|
@@ -182,7 +136,7 @@ class Chef
|
|
182
136
|
raise Chef::Exceptions::ValidationFailed, error_msg
|
183
137
|
end
|
184
138
|
unless h.values.all? { |x| x =~ TIMEOUT_REGEX }
|
185
|
-
error_msg = "Values of option time_out should be non-empty string without any leading
|
139
|
+
error_msg = "Values of option time_out should be non-empty string without any leading whitespace."
|
186
140
|
raise Chef::Exceptions::ValidationFailed, error_msg
|
187
141
|
end
|
188
142
|
h
|