chef 16.0.257 → 16.2.44
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -1
- data/README.md +3 -3
- data/Rakefile +44 -16
- data/chef.gemspec +4 -4
- data/lib/chef/application/apply.rb +2 -2
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +2 -2
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- 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/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- 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 +4 -4
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +2 -2
- 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 +7 -7
- data/lib/chef/data_bag.rb +4 -4
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +5 -1
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dsl/declare_resource.rb +1 -1
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- 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/file_access_control.rb +1 -1
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
- data/lib/chef/http.rb +18 -3
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +1 -1
- data/lib/chef/http/json_output.rb +1 -1
- data/lib/chef/http/ssl_policies.rb +18 -0
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -2
- data/lib/chef/knife/bootstrap.rb +13 -16
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
- data/lib/chef/knife/client_bulk_delete.rb +1 -1
- data/lib/chef/knife/config_get.rb +1 -1
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/environment_compare.rb +1 -1
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/node_bulk_delete.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/role_bulk_delete.rb +1 -1
- data/lib/chef/knife/ssh.rb +2 -2
- data/lib/chef/knife/supermarket_install.rb +1 -1
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
- data/lib/chef/knife/yaml_convert.rb +2 -2
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/create_path.rb +8 -8
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/properties.rb +4 -2
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +1 -1
- data/lib/chef/property.rb +2 -2
- data/lib/chef/provider.rb +3 -3
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron.rb +2 -14
- data/lib/chef/provider/directory.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -2
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +7 -7
- data/lib/chef/provider/launchd.rb +28 -32
- data/lib/chef/provider/mount/aix.rb +1 -1
- data/lib/chef/provider/mount/windows.rb +2 -2
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/package/cab.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +1 -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 +1 -1
- data/lib/chef/provider/package/macports.rb +0 -2
- data/lib/chef/provider/package/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +3 -2
- data/lib/chef/provider/package/powershell.rb +6 -2
- data/lib/chef/provider/package/rubygems.rb +3 -3
- data/lib/chef/provider/package/snap.rb +96 -27
- data/lib/chef/provider/package/windows.rb +27 -52
- data/lib/chef/provider/package/windows/msi.rb +3 -3
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
- data/lib/chef/provider/package/yum.rb +1 -1
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +11 -15
- data/lib/chef/provider/remote_directory.rb +2 -2
- data/lib/chef/provider/remote_file/http.rb +4 -1
- data/lib/chef/provider/script.rb +4 -75
- data/lib/chef/provider/service/arch.rb +2 -2
- data/lib/chef/provider/service/debian.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +13 -2
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/service/simple.rb +3 -3
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +1 -1
- data/lib/chef/provider/subversion.rb +2 -2
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +7 -7
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +15 -11
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/windows_task.rb +5 -3
- data/lib/chef/provider/zypper_repository.rb +30 -10
- data/lib/chef/resource.rb +25 -14
- data/lib/chef/resource/alternatives.rb +65 -4
- data/lib/chef/resource/apt_package.rb +31 -2
- data/lib/chef/resource/apt_preference.rb +34 -5
- data/lib/chef/resource/apt_repository.rb +22 -15
- data/lib/chef/resource/apt_update.rb +6 -4
- data/lib/chef/resource/archive_file.rb +33 -12
- data/lib/chef/resource/bash.rb +1 -2
- data/lib/chef/resource/batch.rb +5 -3
- data/lib/chef/resource/bff_package.rb +1 -1
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/build_essential.rb +8 -4
- data/lib/chef/resource/cab_package.rb +1 -1
- data/lib/chef/resource/chef_client_cron.rb +12 -9
- data/lib/chef/resource/chef_client_scheduled_task.rb +22 -7
- data/lib/chef/resource/chef_client_systemd_timer.rb +10 -7
- data/lib/chef/resource/chef_gem.rb +6 -2
- data/lib/chef/resource/chef_handler.rb +3 -3
- data/lib/chef/resource/chef_sleep.rb +7 -4
- data/lib/chef/resource/chef_vault_secret.rb +4 -4
- data/lib/chef/resource/chocolatey_config.rb +5 -3
- data/lib/chef/resource/chocolatey_feature.rb +5 -3
- data/lib/chef/resource/chocolatey_package.rb +5 -3
- data/lib/chef/resource/chocolatey_source.rb +5 -3
- data/lib/chef/resource/cookbook_file.rb +3 -2
- data/lib/chef/resource/cron/_cron_shared.rb +98 -0
- data/lib/chef/resource/cron/cron.rb +46 -0
- data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +28 -94
- data/lib/chef/resource/cron_access.rb +17 -6
- data/lib/chef/resource/csh.rb +1 -2
- data/lib/chef/resource/directory.rb +1 -1
- data/lib/chef/resource/dmg_package.rb +18 -15
- data/lib/chef/resource/dnf_package.rb +1 -1
- data/lib/chef/resource/dpkg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +479 -9
- data/lib/chef/resource/file.rb +11 -8
- data/lib/chef/resource/freebsd_package.rb +2 -2
- data/lib/chef/resource/gem_package.rb +6 -6
- data/lib/chef/resource/group.rb +1 -1
- data/lib/chef/resource/helpers/cron_validations.rb +6 -3
- data/lib/chef/resource/homebrew_cask.rb +1 -1
- data/lib/chef/resource/homebrew_package.rb +30 -1
- data/lib/chef/resource/homebrew_tap.rb +1 -1
- data/lib/chef/resource/homebrew_update.rb +107 -0
- data/lib/chef/resource/hostname.rb +11 -24
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/ifconfig.rb +7 -7
- data/lib/chef/resource/ips_package.rb +1 -1
- data/lib/chef/resource/kernel_module.rb +15 -2
- data/lib/chef/resource/ksh.rb +1 -1
- data/lib/chef/resource/launchd.rb +5 -5
- data/lib/chef/resource/link.rb +4 -4
- data/lib/chef/resource/locale.rb +4 -4
- data/lib/chef/resource/log.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +15 -10
- data/lib/chef/resource/macosx_service.rb +1 -1
- data/lib/chef/resource/macports_package.rb +1 -1
- data/lib/chef/resource/mdadm.rb +1 -1
- data/lib/chef/resource/mount.rb +2 -2
- data/lib/chef/resource/msu_package.rb +2 -2
- data/lib/chef/resource/ohai.rb +1 -1
- data/lib/chef/resource/ohai_hint.rb +1 -1
- data/lib/chef/resource/openbsd_package.rb +1 -1
- data/lib/chef/resource/openssl_dhparam.rb +1 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +1 -1
- data/lib/chef/resource/openssl_ec_public_key.rb +1 -1
- data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
- data/lib/chef/resource/openssl_rsa_public_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +1 -1
- data/lib/chef/resource/openssl_x509_crl.rb +1 -1
- data/lib/chef/resource/openssl_x509_request.rb +1 -1
- data/lib/chef/resource/osx_profile.rb +1 -1
- data/lib/chef/resource/package.rb +1 -1
- data/lib/chef/resource/pacman_package.rb +1 -1
- data/lib/chef/resource/paludis_package.rb +1 -1
- data/lib/chef/resource/perl.rb +1 -2
- data/lib/chef/resource/plist.rb +24 -5
- data/lib/chef/resource/portage_package.rb +1 -1
- data/lib/chef/resource/powershell_package.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +1 -1
- data/lib/chef/resource/powershell_script.rb +5 -3
- data/lib/chef/resource/python.rb +1 -2
- data/lib/chef/resource/reboot.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/remote_directory.rb +1 -1
- data/lib/chef/resource/remote_file.rb +26 -11
- data/lib/chef/resource/rhsm_errata.rb +1 -3
- data/lib/chef/resource/rhsm_errata_level.rb +1 -1
- data/lib/chef/resource/rhsm_register.rb +1 -2
- data/lib/chef/resource/rhsm_repo.rb +1 -2
- data/lib/chef/resource/rhsm_subscription.rb +1 -3
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/rpm_package.rb +5 -2
- data/lib/chef/resource/ruby.rb +1 -2
- data/lib/chef/resource/ruby_block.rb +1 -4
- data/lib/chef/resource/scm/_scm.rb +4 -3
- data/lib/chef/resource/scm/git.rb +2 -2
- data/lib/chef/resource/scm/subversion.rb +2 -2
- data/lib/chef/resource/script.rb +1 -1
- data/lib/chef/resource/service.rb +1 -1
- data/lib/chef/resource/smartos_package.rb +1 -1
- data/lib/chef/resource/snap_package.rb +1 -1
- data/lib/chef/resource/solaris_package.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
- data/lib/chef/resource/sudo.rb +4 -4
- data/lib/chef/resource/swap_file.rb +2 -2
- data/lib/chef/resource/sysctl.rb +61 -2
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +1 -1
- data/lib/chef/resource/user.rb +2 -2
- data/lib/chef/resource/user_ulimit.rb +24 -22
- data/lib/chef/resource/windows_ad_join.rb +31 -2
- data/lib/chef/resource/windows_audit_policy.rb +227 -0
- data/lib/chef/resource/windows_auto_run.rb +13 -2
- data/lib/chef/resource/windows_certificate.rb +28 -2
- data/lib/chef/resource/windows_dfs_folder.rb +1 -1
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -1
- data/lib/chef/resource/windows_dfs_server.rb +2 -2
- data/lib/chef/resource/windows_env.rb +10 -1
- data/lib/chef/resource/windows_feature.rb +57 -2
- data/lib/chef/resource/windows_feature_dism.rb +15 -2
- data/lib/chef/resource/windows_feature_powershell.rb +29 -2
- data/lib/chef/resource/windows_firewall_rule.rb +11 -7
- data/lib/chef/resource/windows_font.rb +13 -4
- data/lib/chef/resource/windows_package.rb +66 -6
- data/lib/chef/resource/windows_pagefile.rb +32 -4
- data/lib/chef/resource/windows_path.rb +18 -1
- data/lib/chef/resource/windows_printer.rb +26 -6
- data/lib/chef/resource/windows_printer_port.rb +29 -1
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +47 -16
- data/lib/chef/resource/windows_service.rb +1 -1
- data/lib/chef/resource/windows_share.rb +23 -3
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +143 -29
- data/lib/chef/resource/windows_uac.rb +20 -1
- data/lib/chef/resource/windows_user_privilege.rb +45 -3
- data/lib/chef/resource/windows_workgroup.rb +19 -3
- data/lib/chef/resource/yum_package.rb +88 -6
- data/lib/chef/resource/yum_repository.rb +36 -19
- data/lib/chef/resource/zypper_package.rb +29 -3
- data/lib/chef/resource/zypper_repository.rb +17 -5
- data/lib/chef/resource_inspector.rb +5 -4
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/scan_access_control.rb +1 -1
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/diff.rb +2 -2
- data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
- data/lib/chef/util/windows/net_user.rb +1 -1
- data/lib/chef/util/windows/volume.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 +18 -18
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/process.rb +2 -2
- data/lib/chef/win32/registry.rb +2 -2
- data/lib/chef/win32/security.rb +1 -1
- data/lib/chef/win32/security/sid.rb +4 -4
- 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/functional/resource/cron_spec.rb +10 -0
- data/spec/functional/resource/dnf_package_spec.rb +2 -2
- data/spec/functional/resource/git_spec.rb +6 -6
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/remote_file_spec.rb +3 -3
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_task_spec.rb +12 -12
- data/spec/integration/knife/raw_spec.rb +4 -4
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/support/chef_helpers.rb +1 -1
- data/spec/support/platform_helpers.rb +1 -14
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +1 -1
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +1 -1
- 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_spec.rb +7 -0
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/http/ssl_policies_spec.rb +20 -0
- data/spec/unit/knife/bootstrap_spec.rb +2 -2
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
- data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- data/spec/unit/mixin/user_context_spec.rb +1 -9
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/property_spec.rb +1 -1
- data/spec/unit/provider/apt_repository_spec.rb +27 -27
- data/spec/unit/provider/batch_spec.rb +130 -0
- data/spec/unit/provider/cron_spec.rb +9 -49
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/osx_profile_spec.rb +2 -2
- data/spec/unit/provider/package/msu_spec.rb +3 -3
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +96 -87
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +3 -45
- data/spec/unit/provider/script_spec.rb +20 -110
- data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
- data/spec/unit/provider/zypper_repository_spec.rb +75 -25
- data/spec/unit/provider_resolver_spec.rb +11 -11
- data/spec/unit/resource/archive_file_spec.rb +11 -2
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
- data/spec/unit/resource/cron_spec.rb +2 -2
- data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
- data/spec/unit/resource/homebrew_update_spec.rb +30 -0
- data/spec/unit/resource/powershell_script_spec.rb +10 -15
- data/spec/unit/resource/timezone_spec.rb +1 -1
- data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
- data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
- data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
- data/spec/unit/resource/windows_package_spec.rb +10 -0
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +2 -2
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_spec.rb +67 -1
- data/spec/unit/run_context_spec.rb +1 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- data/spec/unit/win32/registry_spec.rb +1 -1
- metadata +28 -27
- data/lib/chef/resource/cron.rb +0 -157
@@ -22,8 +22,36 @@ class Chef
|
|
22
22
|
class WindowsPagefile < Chef::Resource
|
23
23
|
provides(:windows_pagefile) { true }
|
24
24
|
|
25
|
-
description "Use the windows_pagefile resource to configure pagefile settings on Windows."
|
25
|
+
description "Use the **windows_pagefile** resource to configure pagefile settings on Windows."
|
26
26
|
introduced "14.0"
|
27
|
+
examples <<~DOC
|
28
|
+
**Set the system to manage pagefiles**:
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
windows_pagefile 'Enable automatic management of pagefiles' do
|
32
|
+
automatic_managed true
|
33
|
+
end
|
34
|
+
```
|
35
|
+
|
36
|
+
**Delete a pagefile**:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
windows_pagefile 'Delete the pagefile' do
|
40
|
+
path 'C:\pagefile.sys'
|
41
|
+
action :delete
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
**Create a pagefile with an initial and maximum size**:
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
windows_pagefile 'create the pagefile' do
|
49
|
+
path 'C:\pagefile.sys'
|
50
|
+
initial_size 100
|
51
|
+
maximum_size 200
|
52
|
+
end
|
53
|
+
```
|
54
|
+
DOC
|
27
55
|
|
28
56
|
property :path, String,
|
29
57
|
coerce: proc { |x| x.tr("/", '\\') },
|
@@ -34,7 +62,7 @@ class Chef
|
|
34
62
|
description: "Configures whether the system manages the pagefile size."
|
35
63
|
|
36
64
|
property :automatic_managed, [TrueClass, FalseClass],
|
37
|
-
description: "Enable automatic management of pagefile initial and maximum size. Setting this to true ignores
|
65
|
+
description: "Enable automatic management of pagefile initial and maximum size. Setting this to true ignores `initial_size` and `maximum_size` properties.",
|
38
66
|
default: false
|
39
67
|
|
40
68
|
property :initial_size, Integer,
|
@@ -85,7 +113,7 @@ class Chef
|
|
85
113
|
# we do this here and not in the property itself because if automatic_managed
|
86
114
|
# is set then this validation is not necessary / doesn't make sense at all
|
87
115
|
def validate_name
|
88
|
-
return if /^.:.*.sys
|
116
|
+
return if /^.:.*.sys/.match?(new_resource.path)
|
89
117
|
|
90
118
|
raise "#{new_resource.path} does not match the format DRIVE:\\path\\file.sys for pagefiles. Example: C:\\pagefile.sys"
|
91
119
|
end
|
@@ -96,7 +124,7 @@ class Chef
|
|
96
124
|
# @return [Boolean]
|
97
125
|
def exists?(pagefile)
|
98
126
|
@exists ||= begin
|
99
|
-
logger.trace("Checking if #{pagefile} exists by
|
127
|
+
logger.trace("Checking if #{pagefile} exists by running: wmic.exe pagefileset where SettingID=\"#{get_setting_id(pagefile)}\" list /format:list")
|
100
128
|
cmd = shell_out("wmic.exe pagefileset where SettingID=\"#{get_setting_id(pagefile)}\" list /format:list", returns: [0])
|
101
129
|
cmd.stderr.empty? && (cmd.stdout =~ /SettingID=#{get_setting_id(pagefile)}/i)
|
102
130
|
end
|
@@ -23,8 +23,25 @@ class Chef
|
|
23
23
|
class WindowsPath < Chef::Resource
|
24
24
|
provides(:windows_path) { true }
|
25
25
|
|
26
|
-
description "Use the windows_path resource to manage the path environment variable on Microsoft Windows."
|
26
|
+
description "Use the **windows_path** resource to manage the path environment variable on Microsoft Windows."
|
27
27
|
introduced "13.4"
|
28
|
+
examples <<~DOC
|
29
|
+
**Add Sysinternals to the system path**:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
windows_path 'C:\\Sysinternals' do
|
33
|
+
action :add
|
34
|
+
end
|
35
|
+
```
|
36
|
+
|
37
|
+
**Remove 7-Zip from the system path**:
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
windows_path 'C:\\7-Zip' do
|
41
|
+
action :remove
|
42
|
+
end
|
43
|
+
```
|
44
|
+
DOC
|
28
45
|
|
29
46
|
allowed_actions :add, :remove
|
30
47
|
default_action :add
|
@@ -26,11 +26,31 @@ class Chef
|
|
26
26
|
|
27
27
|
provides(:windows_printer) { true }
|
28
28
|
|
29
|
-
description "Use the windows_printer resource to setup Windows printers. Note that this doesn't currently install a printer driver. You must already have the driver installed on the system."
|
29
|
+
description "Use the **windows_printer** resource to setup Windows printers. Note that this doesn't currently install a printer driver. You must already have the driver installed on the system."
|
30
30
|
introduced "14.0"
|
31
|
+
examples <<~DOC
|
32
|
+
**Create a printer**:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
windows_printer 'HP LaserJet 5th Floor' do
|
36
|
+
driver_name 'HP LaserJet 4100 Series PCL6'
|
37
|
+
ipv4_address '10.4.64.38'
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
**Delete a printer**:
|
42
|
+
|
43
|
+
Note: this doesn't delete the associated printer port. See windows_printer_port above for how to delete the port.
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
windows_printer 'HP LaserJet 5th Floor' do
|
47
|
+
action :delete
|
48
|
+
end
|
49
|
+
```
|
50
|
+
DOC
|
31
51
|
|
32
52
|
property :device_id, String,
|
33
|
-
description: "An optional property to set the printer queue name if it differs from the resource block's name. Example:
|
53
|
+
description: "An optional property to set the printer queue name if it differs from the resource block's name. Example: `HP LJ 5200 in fifth floor copy room`.",
|
34
54
|
name_property: true
|
35
55
|
|
36
56
|
property :comment, String,
|
@@ -42,10 +62,10 @@ class Chef
|
|
42
62
|
|
43
63
|
property :driver_name, String,
|
44
64
|
description: "The exact name of printer driver installed on the system.",
|
45
|
-
required:
|
65
|
+
required: [:create]
|
46
66
|
|
47
67
|
property :location, String,
|
48
|
-
description: "Printer location, such as
|
68
|
+
description: "Printer location, such as `Fifth floor copy room`."
|
49
69
|
|
50
70
|
property :shared, [TrueClass, FalseClass],
|
51
71
|
description: "Determines whether or not the printer is shared.",
|
@@ -55,8 +75,8 @@ class Chef
|
|
55
75
|
description: "The name used to identify the shared printer."
|
56
76
|
|
57
77
|
property :ipv4_address, String,
|
58
|
-
description: "The IPv4 address of the printer, such as
|
59
|
-
validation_message: "The ipv4_address property must be in the IPv4 format of WWW.XXX.YYY.ZZZ",
|
78
|
+
description: "The IPv4 address of the printer, such as `10.4.64.23`",
|
79
|
+
validation_message: "The ipv4_address property must be in the IPv4 format of `WWW.XXX.YYY.ZZZ`",
|
60
80
|
regex: Resolv::IPv4::Regex
|
61
81
|
|
62
82
|
property :exists, [TrueClass, FalseClass],
|
@@ -26,8 +26,36 @@ class Chef
|
|
26
26
|
|
27
27
|
provides(:windows_printer_port) { true }
|
28
28
|
|
29
|
-
description "Use the windows_printer_port resource to create and delete TCP/IPv4 printer ports on Windows."
|
29
|
+
description "Use the **windows_printer_port** resource to create and delete TCP/IPv4 printer ports on Windows."
|
30
30
|
introduced "14.0"
|
31
|
+
examples <<~DOC
|
32
|
+
**Delete a printer port**
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
windows_printer_port '10.4.64.37' do
|
36
|
+
action :delete
|
37
|
+
end
|
38
|
+
```
|
39
|
+
|
40
|
+
**Delete a port with a custom port_name**
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
windows_printer_port '10.4.64.38' do
|
44
|
+
port_name 'My awesome port'
|
45
|
+
action :delete
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
49
|
+
**Create a port with more options**
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
windows_printer_port '10.4.64.39' do
|
53
|
+
port_name 'My awesome port'
|
54
|
+
snmp_enabled true
|
55
|
+
port_protocol 2
|
56
|
+
end
|
57
|
+
```
|
58
|
+
DOC
|
31
59
|
|
32
60
|
property :ipv4_address, String,
|
33
61
|
name_property: true,
|
@@ -16,34 +16,20 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require_relative "../platform/query_helpers"
|
20
19
|
require_relative "script"
|
21
20
|
require_relative "../mixin/windows_architecture_helper"
|
22
21
|
|
23
22
|
class Chef
|
24
23
|
class Resource
|
25
24
|
class WindowsScript < Chef::Resource::Script
|
26
|
-
|
25
|
+
include Chef::Mixin::WindowsArchitectureHelper
|
27
26
|
|
28
|
-
|
27
|
+
unified_mode true
|
29
28
|
|
30
29
|
# This is an abstract resource meant to be subclasses; thus no 'provides'
|
31
30
|
|
32
31
|
set_guard_inherited_attributes(:architecture)
|
33
32
|
|
34
|
-
protected
|
35
|
-
|
36
|
-
def initialize(name, run_context, resource_name, interpreter_command)
|
37
|
-
super(name, run_context)
|
38
|
-
@interpreter = interpreter_command
|
39
|
-
@resource_name = resource_name if resource_name
|
40
|
-
@default_guard_interpreter = self.resource_name
|
41
|
-
end
|
42
|
-
|
43
|
-
include Chef::Mixin::WindowsArchitectureHelper
|
44
|
-
|
45
|
-
public
|
46
|
-
|
47
33
|
def architecture(arg = nil)
|
48
34
|
assert_architecture_compatible!(arg) unless arg.nil?
|
49
35
|
result = set_or_return(
|
@@ -25,24 +25,55 @@ class Chef
|
|
25
25
|
|
26
26
|
# The valid policy_names options found here
|
27
27
|
# https://github.com/ChrisAWalker/cSecurityOptions under 'AccountSettings'
|
28
|
-
policy_names = %w{
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
28
|
+
policy_names = %w{LockoutDuration
|
29
|
+
MaximumPasswordAge
|
30
|
+
MinimumPasswordAge
|
31
|
+
MinimumPasswordLength
|
32
|
+
PasswordComplexity
|
33
|
+
PasswordHistorySize
|
34
|
+
LockoutBadCount
|
35
|
+
ResetLockoutCount
|
36
|
+
RequireLogonToChangePassword
|
37
|
+
ForceLogoffWhenHourExpire
|
38
|
+
NewAdministratorName
|
39
|
+
NewGuestName
|
40
|
+
ClearTextPassword
|
41
|
+
LSAAnonymousNameLookup
|
42
|
+
EnableAdminAccount
|
43
|
+
EnableGuestAccount
|
44
|
+
}
|
45
|
+
description "Use the **windows_security_policy** resource to set a security policy on the Microsoft Windows platform."
|
44
46
|
introduced "16.0"
|
45
47
|
|
48
|
+
examples <<~DOC
|
49
|
+
**Set Administrator Account to Enabled**:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
windows_security_policy 'EnableAdminAccount' do
|
53
|
+
secvalue '1'
|
54
|
+
action :set
|
55
|
+
end
|
56
|
+
```
|
57
|
+
|
58
|
+
**Rename Administrator Account**:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
windows_security_policy 'NewAdministratorName' do
|
62
|
+
secvalue 'AwesomeChefGuy'
|
63
|
+
action :set
|
64
|
+
end
|
65
|
+
```
|
66
|
+
|
67
|
+
**Set Guest Account to Disabled**:
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
windows_security_policy 'EnableGuestAccount' do
|
71
|
+
secvalue '0'
|
72
|
+
action :set
|
73
|
+
end
|
74
|
+
```
|
75
|
+
DOC
|
76
|
+
|
46
77
|
property :secoption, String, name_property: true, required: true, equal_to: policy_names,
|
47
78
|
description: "The name of the policy to be set on windows platform to maintain its security."
|
48
79
|
|
@@ -36,7 +36,7 @@ class Chef
|
|
36
36
|
provides(:windows_service) { true }
|
37
37
|
provides :service, os: "windows"
|
38
38
|
|
39
|
-
description "Use the windows_service resource to create, delete, or manage a service on the Microsoft Windows platform."
|
39
|
+
description "Use the **windows_service** resource to create, delete, or manage a service on the Microsoft Windows platform."
|
40
40
|
introduced "12.0"
|
41
41
|
|
42
42
|
allowed_actions :configure_startup, :create, :delete, :configure
|
@@ -28,8 +28,28 @@ class Chef
|
|
28
28
|
class WindowsShare < Chef::Resource
|
29
29
|
provides :windows_share
|
30
30
|
|
31
|
-
description "Use the windows_share resource to create, modify and remove Windows shares."
|
31
|
+
description "Use the **windows_share** resource to create, modify and remove Windows shares."
|
32
32
|
introduced "14.7"
|
33
|
+
examples <<~DOC
|
34
|
+
**Create a share**:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
windows_share 'foo' do
|
38
|
+
action :create
|
39
|
+
path 'C:\\foo'
|
40
|
+
full_users ['DOMAIN_A\\some_user', 'DOMAIN_B\\some_other_user']
|
41
|
+
read_users ['DOMAIN_C\\Domain users']
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
**Delete a share**:
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
windows_share 'foo' do
|
49
|
+
action :delete
|
50
|
+
end
|
51
|
+
```
|
52
|
+
DOC
|
33
53
|
|
34
54
|
# Specifies a name for the SMB share. The name may be composed of any valid file name characters, but must be less than 80 characters long. The names pipe and mailslot are reserved for use by the computer.
|
35
55
|
property :share_name, String,
|
@@ -167,8 +187,8 @@ class Chef
|
|
167
187
|
[f_users, c_users, r_users]
|
168
188
|
end
|
169
189
|
|
170
|
-
# local names are returned from Get-SmbShareAccess in the full format MACHINE\\NAME
|
171
|
-
# but users of this resource would simply say NAME so we need to strip the values for comparison
|
190
|
+
# local names are returned from Get-SmbShareAccess in the full format MACHINE\\NAME
|
191
|
+
# but users of this resource would simply say NAME so we need to strip the values for comparison
|
172
192
|
def stripped_account(name)
|
173
193
|
name.slice!("#{node["hostname"]}\\")
|
174
194
|
name
|
@@ -23,8 +23,18 @@ class Chef
|
|
23
23
|
class WindowsShortcut < Chef::Resource
|
24
24
|
provides(:windows_shortcut) { true }
|
25
25
|
|
26
|
-
description "Use the windows_shortcut resource to create shortcut files on Windows."
|
26
|
+
description "Use the **windows_shortcut** resource to create shortcut files on Windows."
|
27
27
|
introduced "14.0"
|
28
|
+
examples <<~DOC
|
29
|
+
**Create a shortcut with a description**:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
windows_shortcut 'C:\\shortcut_dir.lnk' do
|
33
|
+
target 'C:\\original_dir'
|
34
|
+
description 'Make a shortcut to C:\\original_dir'
|
35
|
+
end
|
36
|
+
```
|
37
|
+
DOC
|
28
38
|
|
29
39
|
property :shortcut_name, String,
|
30
40
|
description: "An optional property to set the shortcut name if it differs from the resource block's name.",
|
@@ -43,10 +53,10 @@ class Chef
|
|
43
53
|
description: "Working directory to use when the target is executed."
|
44
54
|
|
45
55
|
property :iconlocation, String,
|
46
|
-
description: "Icon to use for the shortcut. Accepts the format of
|
56
|
+
description: "Icon to use for the shortcut. Accepts the format of `path, index`, where index is the icon file to use. See Microsoft's [documentation](https://msdn.microsoft.com/en-us/library/3s9bx7at.aspx) for details"
|
47
57
|
|
48
58
|
load_current_value do |desired|
|
49
|
-
require "win32ole" if RUBY_PLATFORM
|
59
|
+
require "win32ole" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
50
60
|
|
51
61
|
link = WIN32OLE.new("WScript.Shell").CreateShortcut(desired.shortcut_name)
|
52
62
|
name desired.shortcut_name
|
@@ -24,14 +24,127 @@ class Chef
|
|
24
24
|
class WindowsTask < Chef::Resource
|
25
25
|
provides(:windows_task) { true }
|
26
26
|
|
27
|
-
description "Use the windows_task resource to create, delete or run a Windows scheduled task.
|
27
|
+
description "Use the **windows_task** resource to create, delete or run a Windows scheduled task."
|
28
28
|
introduced "13.0"
|
29
|
+
examples <<~DOC
|
30
|
+
**Create a scheduled task to run every 15 minutes as the Administrator user**:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
windows_task 'chef-client' do
|
34
|
+
user 'Administrator'
|
35
|
+
password 'password'
|
36
|
+
command 'chef-client'
|
37
|
+
run_level :highest
|
38
|
+
frequency :minute
|
39
|
+
frequency_modifier 15
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Create a scheduled task to run every 2 days**:
|
44
|
+
|
45
|
+
``` ruby
|
46
|
+
windows_task 'chef-client' do
|
47
|
+
command 'chef-client'
|
48
|
+
run_level :highest
|
49
|
+
frequency :daily
|
50
|
+
frequency_modifier 2
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
**Create a scheduled task to run on specific days of the week**:
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
windows_task 'chef-client' do
|
58
|
+
command 'chef-client'
|
59
|
+
run_level :highest
|
60
|
+
frequency :weekly
|
61
|
+
day 'Mon, Thu'
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
65
|
+
**Create a scheduled task to run only once**:
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
windows_task 'chef-client' do
|
69
|
+
command 'chef-client'
|
70
|
+
run_level :highest
|
71
|
+
frequency :once
|
72
|
+
start_time "16:10"
|
73
|
+
end
|
74
|
+
```
|
75
|
+
|
76
|
+
**Create a scheduled task to run on current day every 3 weeks and delay upto 1 min**:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
windows_task 'chef-client' do
|
80
|
+
command 'chef-client'
|
81
|
+
run_level :highest
|
82
|
+
frequency :weekly
|
83
|
+
frequency_modifier 3
|
84
|
+
random_delay '60'
|
85
|
+
end
|
86
|
+
```
|
87
|
+
|
88
|
+
**Create a scheduled task to run weekly starting on Dec 28th 2018**:
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
windows_task 'chef-client 8' do
|
92
|
+
command 'chef-client'
|
93
|
+
run_level :highest
|
94
|
+
frequency :weekly
|
95
|
+
start_day '12/28/2018'
|
96
|
+
end
|
97
|
+
```
|
98
|
+
|
99
|
+
**Create a scheduled task to run every Monday, Friday every 2 weeks**:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
windows_task 'chef-client' do
|
103
|
+
command 'chef-client'
|
104
|
+
run_level :highest
|
105
|
+
frequency :weekly
|
106
|
+
frequency_modifier 2
|
107
|
+
day 'Mon, Fri'
|
108
|
+
end
|
109
|
+
```
|
110
|
+
|
111
|
+
**Create a scheduled task to run when computer is idle with idle duration 20 min**:
|
112
|
+
```ruby
|
113
|
+
windows_task 'chef-client' do
|
114
|
+
command 'chef-client'
|
115
|
+
run_level :highest
|
116
|
+
frequency :on_idle
|
117
|
+
idle_time 20
|
118
|
+
end
|
119
|
+
```
|
120
|
+
|
121
|
+
**Delete a task named "old task"**:
|
122
|
+
```ruby
|
123
|
+
windows_task 'old task' do
|
124
|
+
action :delete
|
125
|
+
end
|
126
|
+
```
|
127
|
+
|
128
|
+
**Enable a task named "chef-client"**:
|
129
|
+
```ruby
|
130
|
+
windows_task 'chef-client' do
|
131
|
+
action :enable
|
132
|
+
end
|
133
|
+
```
|
134
|
+
|
135
|
+
**Disable a task named "ProgramDataUpdater" with TaskPath "\\Microsoft\\Windows\\Application Experience\\ProgramDataUpdater"**
|
136
|
+
```ruby
|
137
|
+
windows_task '\\Microsoft\\Windows\\Application Experience\\ProgramDataUpdater' do
|
138
|
+
action :disable
|
139
|
+
end
|
140
|
+
```
|
141
|
+
DOC
|
29
142
|
|
30
143
|
allowed_actions :create, :delete, :run, :end, :enable, :disable, :change
|
31
144
|
default_action :create
|
32
145
|
|
33
146
|
property :task_name, String, regex: [%r{\A[^/\:\*\?\<\>\|]+\z}],
|
34
|
-
description: "An optional property to set the task name if it differs from the resource block's name. Example:
|
147
|
+
description: "An optional property to set the task name if it differs from the resource block's name. Example: `Task Name` or `/Task Name`",
|
35
148
|
name_property: true
|
36
149
|
|
37
150
|
property :command, String,
|
@@ -46,10 +159,10 @@ class Chef
|
|
46
159
|
default_description: "The localized SYSTEM user for the node."
|
47
160
|
|
48
161
|
property :password, String,
|
49
|
-
description: "The user
|
162
|
+
description: "The user's password. The user property must be set if using this property."
|
50
163
|
|
51
164
|
property :run_level, Symbol, equal_to: %i{highest limited},
|
52
|
-
description: "Run with
|
165
|
+
description: "Run with `:limited` or `:highest` privileges.",
|
53
166
|
default: :limited
|
54
167
|
|
55
168
|
property :force, [TrueClass, FalseClass],
|
@@ -76,27 +189,28 @@ class Chef
|
|
76
189
|
description: "The frequency with which to run the task."
|
77
190
|
|
78
191
|
property :start_day, String,
|
79
|
-
description: "Specifies the first date on which the task runs in MM/DD/YYYY format.",
|
192
|
+
description: "Specifies the first date on which the task runs in **MM/DD/YYYY** format.",
|
80
193
|
default_description: "The current date."
|
81
194
|
|
82
195
|
property :start_time, String,
|
83
|
-
description: "Specifies the start time to run the task, in HH:mm format."
|
196
|
+
description: "Specifies the start time to run the task, in **HH:mm** format."
|
84
197
|
|
85
198
|
property :day, [String, Integer],
|
86
199
|
description: "The day(s) on which the task runs."
|
87
200
|
|
88
201
|
property :months, String,
|
89
|
-
description: "The Months of the year on which the task runs, such as:
|
202
|
+
description: "The Months of the year on which the task runs, such as: `JAN, FEB` or `*`. Multiple months should be comma delimited. e.g. `Jan, Feb, Mar, Dec`."
|
90
203
|
|
91
204
|
property :idle_time, Integer,
|
92
|
-
description: "For
|
205
|
+
description: "For `:on_idle` frequency, the time (in minutes) without user activity that must pass to trigger the task, from `1` - `999`."
|
93
206
|
|
94
207
|
property :random_delay, [String, Integer],
|
95
208
|
description: "Delays the task up to a given time (in seconds)."
|
96
209
|
|
97
210
|
property :execution_time_limit, [String, Integer],
|
98
|
-
description: "The maximum time
|
99
|
-
default: "PT72H"
|
211
|
+
description: "The maximum time the task will run. This field accepts either seconds or an ISO8601 duration value.",
|
212
|
+
default: "PT72H",
|
213
|
+
default_description: "PT72H (72 hours in ISO8601 duration format)"
|
100
214
|
|
101
215
|
property :minutes_duration, [String, Integer],
|
102
216
|
description: ""
|
@@ -158,16 +272,16 @@ class Chef
|
|
158
272
|
|
159
273
|
private
|
160
274
|
|
161
|
-
|
162
|
-
|
163
|
-
|
275
|
+
## Resource is not idempotent when day, start_day is not provided with frequency :weekly
|
276
|
+
## we set start_day when not given by user as current date based on which we set the day property for current current date day is monday ..
|
277
|
+
## we set the monday as the day so at next run when new_resource.day is nil and current_resource day is monday due to which update gets called
|
164
278
|
def idempotency_warning_for_frequency_weekly(day, start_day)
|
165
279
|
if start_day.nil? && day.nil?
|
166
280
|
logger.warn "To maintain idempotency for frequency :weekly provide start_day, start_time and day."
|
167
281
|
end
|
168
282
|
end
|
169
283
|
|
170
|
-
|
284
|
+
# Validate the passed value is numeric values only if it is a string
|
171
285
|
def numeric_value_in_string?(val)
|
172
286
|
return true if Integer(val)
|
173
287
|
rescue ArgumentError
|
@@ -181,19 +295,19 @@ class Chef
|
|
181
295
|
end
|
182
296
|
|
183
297
|
def validate_frequency_monthly(frequency_modifier, months, day)
|
184
|
-
# validates the frequency :monthly and raises error if frequency_modifier is first, second,
|
298
|
+
# validates the frequency :monthly and raises error if frequency_modifier is first, second, third etc and day is not provided
|
185
299
|
if (frequency_modifier != 1) && (frequency_modifier_includes_days_of_weeks?(frequency_modifier)) && !(day)
|
186
|
-
raise ArgumentError, "Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be
|
300
|
+
raise ArgumentError, "Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be separated by comma."
|
187
301
|
end
|
188
302
|
|
189
|
-
#
|
190
|
-
# Not checking value 1 here for
|
303
|
+
# frequency_modifier 2-12 is used to set every (n) months, so using :months property with frequency_modifier is not valid since they both used to set months.
|
304
|
+
# Not checking value 1 here for frequency_modifier since we are setting that as default value it won't break anything since preference is given to months property
|
191
305
|
if (frequency_modifier.to_i.between?(2, 12)) && !(months.nil?)
|
192
306
|
raise ArgumentError, "For frequency :monthly either use property months or frequency_modifier to set months."
|
193
307
|
end
|
194
308
|
end
|
195
309
|
|
196
|
-
|
310
|
+
# returns true if frequency_modifier has values First, second, third, fourth, last, lastday
|
197
311
|
def frequency_modifier_includes_days_of_weeks?(frequency_modifier)
|
198
312
|
frequency_modifier = frequency_modifier.to_s.split(",")
|
199
313
|
frequency_modifier.map! { |value| value.strip.upcase }
|
@@ -208,7 +322,7 @@ class Chef
|
|
208
322
|
raise ArgumentError, "Invalid value passed for `random_delay`. Please pass seconds as an Integer (e.g. 60) or a String with numeric values only (e.g. '60')." unless numeric_value_in_string?(random_delay)
|
209
323
|
end
|
210
324
|
|
211
|
-
|
325
|
+
# @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~f
|
212
326
|
def validate_start_day(start_day, frequency)
|
213
327
|
if start_day && frequency == :none
|
214
328
|
raise ArgumentError, "`start_day` property is not supported with frequency: #{frequency}"
|
@@ -216,15 +330,15 @@ class Chef
|
|
216
330
|
|
217
331
|
# make sure the start_day is in MM/DD/YYYY format: http://rubular.com/r/cgjHemtWl5
|
218
332
|
if start_day
|
219
|
-
raise ArgumentError, "`start_day` property must be in the MM/DD/YYYY format." unless %r{^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$}
|
333
|
+
raise ArgumentError, "`start_day` property must be in the MM/DD/YYYY format." unless %r{^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$}.match?(start_day)
|
220
334
|
end
|
221
335
|
end
|
222
336
|
|
223
|
-
|
337
|
+
# @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~
|
224
338
|
def validate_start_time(start_time, frequency)
|
225
339
|
if start_time
|
226
340
|
raise ArgumentError, "`start_time` property is not supported with `frequency :none`" if frequency == :none
|
227
|
-
raise ArgumentError, "`start_time` property must be in the HH:mm format (e.g. 6:20pm -> 18:20)." unless /^[0-2][0-9]:[0-5][0-9]
|
341
|
+
raise ArgumentError, "`start_time` property must be in the HH:mm format (e.g. 6:20pm -> 18:20)." unless /^[0-2][0-9]:[0-5][0-9]$/.match?(start_time)
|
228
342
|
else
|
229
343
|
raise ArgumentError, "`start_time` needs to be provided with `frequency :once`" if frequency == :once
|
230
344
|
end
|
@@ -320,7 +434,7 @@ class Chef
|
|
320
434
|
end
|
321
435
|
end
|
322
436
|
|
323
|
-
|
437
|
+
# This method returns true if day has values from 1-31 which is a days of moths and used with frequency :monthly
|
324
438
|
def days_includes_days_of_months?(days)
|
325
439
|
days.map! { |day| day.to_s.strip.downcase }
|
326
440
|
(days - VALID_DAYS_OF_MONTH).empty?
|
@@ -338,11 +452,11 @@ class Chef
|
|
338
452
|
end
|
339
453
|
end
|
340
454
|
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
455
|
+
# Converts the number of seconds to an ISO8601 duration format and returns it.
|
456
|
+
# Ref : https://github.com/arnau/ISO8601/blob/master/lib/iso8601/duration.rb#L18-L23
|
457
|
+
# e.g.
|
458
|
+
# ISO8601::Duration.new(65707200).to_s
|
459
|
+
# returns 'PT65707200S'
|
346
460
|
def sec_to_dur(seconds)
|
347
461
|
ISO8601::Duration.new(seconds.to_i).to_s
|
348
462
|
end
|