chef 16.0.275-universal-mingw32 → 16.2.50-universal-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +3 -1
- data/README.md +3 -3
- data/Rakefile +15 -1
- data/chef.gemspec +3 -3
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- 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/config_use_profile.rb +15 -5
- 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/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.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_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/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 +2 -1
- 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/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 +2 -2
- 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 +6 -6
- 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 +1 -1
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/archive_file.rb +28 -8
- data/lib/chef/resource/bash.rb +0 -1
- data/lib/chef/resource/batch.rb +4 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
- data/lib/chef/resource/chef_gem.rb +57 -21
- data/lib/chef/resource/chef_handler.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- 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} +7 -87
- data/lib/chef/resource/cron_access.rb +11 -3
- data/lib/chef/resource/csh.rb +0 -1
- data/lib/chef/resource/dmg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +478 -8
- data/lib/chef/resource/file.rb +10 -8
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +35 -2
- data/lib/chef/resource/helpers/cron_validations.rb +6 -3
- data/lib/chef/resource/homebrew_package.rb +30 -1
- data/lib/chef/resource/homebrew_update.rb +107 -0
- data/lib/chef/resource/hostname.rb +7 -20
- data/lib/chef/resource/kernel_module.rb +14 -1
- data/lib/chef/resource/launchd.rb +4 -4
- data/lib/chef/resource/locale.rb +3 -3
- data/lib/chef/resource/macos_userdefaults.rb +14 -9
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/msu_package.rb +1 -1
- data/lib/chef/resource/perl.rb +0 -1
- data/lib/chef/resource/plist.rb +23 -4
- data/lib/chef/resource/powershell_script.rb +4 -2
- data/lib/chef/resource/python.rb +0 -1
- data/lib/chef/resource/remote_file.rb +26 -10
- data/lib/chef/resource/ruby.rb +0 -1
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
- data/lib/chef/resource/sudo.rb +29 -2
- data/lib/chef/resource/swap_file.rb +17 -0
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +15 -0
- data/lib/chef/resource/windows_ad_join.rb +30 -1
- data/lib/chef/resource/windows_audit_policy.rb +227 -0
- data/lib/chef/resource/windows_auto_run.rb +11 -0
- data/lib/chef/resource/windows_certificate.rb +27 -1
- data/lib/chef/resource/windows_dfs_server.rb +1 -1
- data/lib/chef/resource/windows_firewall_rule.rb +2 -2
- data/lib/chef/resource/windows_font.rb +3 -3
- data/lib/chef/resource/windows_package.rb +3 -3
- data/lib/chef/resource/windows_pagefile.rb +2 -2
- data/lib/chef/resource/windows_printer.rb +1 -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_share.rb +2 -2
- data/lib/chef/resource/windows_shortcut.rb +1 -2
- data/lib/chef/resource/windows_task.rb +21 -21
- data/lib/chef/resource/windows_user_privilege.rb +45 -3
- data/lib/chef/resource/yum_repository.rb +9 -9
- data/lib/chef/resource_inspector.rb +4 -3
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/run_context/cookbook_compiler.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/remote_file_spec.rb +2 -2
- 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/config_use_profile_spec.rb +55 -2
- data/spec/support/chef_helpers.rb +1 -1
- data/spec/support/platform_helpers.rb +1 -1
- 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/windows_script.rb +1 -1
- data/spec/support/shared/unit/execute_resource.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/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/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/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 +60 -10
- data/spec/unit/provider_resolver_spec.rb +9 -9
- 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 +24 -23
- data/lib/chef/resource/cron.rb +0 -157
@@ -264,7 +264,7 @@ class Chef
|
|
264
264
|
end
|
265
265
|
|
266
266
|
result = properties.values.select(&:identity?)
|
267
|
-
# if there are no other identity
|
267
|
+
# if there are no other identity properties set, then the name_property becomes the identity, or
|
268
268
|
# failing that we use the actual name.
|
269
269
|
if result.empty?
|
270
270
|
result = name_property ? [ properties[name_property] ] : [ properties[:name] ]
|
@@ -340,6 +340,7 @@ class Chef
|
|
340
340
|
# can also be overridden). Exclude has priority over include, although the caller is likely better
|
341
341
|
# off doing the set arithmetic themselves for explicitness.
|
342
342
|
#
|
343
|
+
# ```ruby
|
343
344
|
# action :doit do
|
344
345
|
# # use it inside a block
|
345
346
|
# file "/etc/whatever.xyz" do
|
@@ -350,10 +351,11 @@ class Chef
|
|
350
351
|
# r = declare_resource(:file, "etc/whatever.xyz")
|
351
352
|
# r.copy_properties_from(new_resource, :owner, :group, :mode)
|
352
353
|
# end
|
354
|
+
# ```
|
353
355
|
#
|
354
356
|
# @param other [Object] the other object (Chef::Resource) which implements the properties API
|
355
357
|
# @param includes [Array<Symbol>] splat-args list of symbols of the properties to copy.
|
356
|
-
# @param exclude [Array<Symbol>] list of
|
358
|
+
# @param exclude [Array<Symbol>] list of symbols of the properties to exclude.
|
357
359
|
# @return the self object the properties were copied to for method chaining
|
358
360
|
#
|
359
361
|
def copy_properties_from(other, *includes, exclude: [ :name ])
|
data/lib/chef/mixin/securable.rb
CHANGED
@@ -172,14 +172,14 @@ class Chef
|
|
172
172
|
end
|
173
173
|
end
|
174
174
|
|
175
|
-
if RUBY_PLATFORM
|
175
|
+
if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
176
176
|
include WindowsSecurableAttributes
|
177
177
|
end
|
178
178
|
|
179
179
|
# Callback that fires when included; will extend the including class
|
180
180
|
# with WindowsMacros and define #rights and #deny_rights on it.
|
181
181
|
def self.included(including_class)
|
182
|
-
if RUBY_PLATFORM
|
182
|
+
if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
183
183
|
including_class.extend(WindowsMacros)
|
184
184
|
# create a default 'rights' attribute
|
185
185
|
including_class.rights_attribute(:rights)
|
data/lib/chef/mixin/shell_out.rb
CHANGED
@@ -71,7 +71,7 @@ class Chef
|
|
71
71
|
default_val = 900
|
72
72
|
return options if options.key?(:timeout)
|
73
73
|
|
74
|
-
# FIXME: need to nuke
|
74
|
+
# FIXME: need to nuke descendent tracker out of Chef::Provider so we can just define that class here without requiring the
|
75
75
|
# world, and then just use symbol lookup
|
76
76
|
if obj.class.ancestors.map(&:name).include?("Chef::Provider") && obj.respond_to?(:new_resource) && obj.new_resource.respond_to?(:timeout) && !options.key?(:timeout)
|
77
77
|
options[:timeout] = obj.new_resource.timeout ? obj.new_resource.timeout.to_f : default_val
|
data/lib/chef/node/attribute.rb
CHANGED
@@ -184,7 +184,7 @@ class Chef
|
|
184
184
|
# return the role level override attribute component
|
185
185
|
attr_reader :role_override
|
186
186
|
|
187
|
-
# return the
|
187
|
+
# return the environment level override attribute component
|
188
188
|
attr_reader :env_override
|
189
189
|
|
190
190
|
# return the force override level attribute component
|
@@ -535,7 +535,7 @@ class Chef
|
|
535
535
|
e
|
536
536
|
end
|
537
537
|
|
538
|
-
# Deep merge all attribute levels using hash-only merging between different
|
538
|
+
# Deep merge all attribute levels using hash-only merging between different precedence
|
539
539
|
# levels (so override arrays completely replace arrays set at any default level).
|
540
540
|
#
|
541
541
|
# The path allows for selectively deep-merging a subtree of the node object.
|
@@ -120,7 +120,7 @@ class Chef
|
|
120
120
|
# ImmutableMash acts like a Mash (Hash that is indifferent to String or
|
121
121
|
# Symbol keys), with some important exceptions:
|
122
122
|
# * Methods that mutate state are overridden to raise an error instead.
|
123
|
-
# * Methods that read from the collection are
|
123
|
+
# * Methods that read from the collection are overridden so that they check
|
124
124
|
# if the Chef::Node::Attribute has been modified since an instance of
|
125
125
|
# this class was generated. An error is raised if the object detects that
|
126
126
|
# it is stale.
|
@@ -19,9 +19,9 @@ class Chef
|
|
19
19
|
class Node
|
20
20
|
module Mixin
|
21
21
|
module DeepMergeCache
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
# Cache of deep merged values by top-level key. This is a simple hash which has keys that are the
|
23
|
+
# top-level keys of the node object, and we save the computed deep-merge for that key here. There is
|
24
|
+
# no cache of subtrees.
|
25
25
|
attr_accessor :deep_merge_cache
|
26
26
|
|
27
27
|
def initialize
|
@@ -31,10 +31,10 @@ class Chef
|
|
31
31
|
@deep_merge_cache = {}
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
# Invalidate a key in the deep_merge_cache. If called with nil, or no arg, this will invalidate
|
35
|
+
# the entire deep_merge cache. In the case of the user doing node.default['foo']['bar']['baz']=
|
36
|
+
# that eventually results in a call to reset_cache('foo') here. A node.default=hash_thing call
|
37
|
+
# must invalidate the entire cache and re-deep-merge the entire node object.
|
38
38
|
def reset_cache(path = nil)
|
39
39
|
if path.nil?
|
40
40
|
deep_merge_cache.clear
|
@@ -328,7 +328,7 @@ class Chef
|
|
328
328
|
end
|
329
329
|
end
|
330
330
|
|
331
|
-
# Do some
|
331
|
+
# Do some minimal validation of the policyfile we fetched from the
|
332
332
|
# server. Compatibility mode relies on using data bags to store policy
|
333
333
|
# files; therefore no real validation will be performed server-side and
|
334
334
|
# we need to make additional checks to ensure the data will be formatted
|
data/lib/chef/powershell.rb
CHANGED
@@ -34,7 +34,7 @@ class Chef
|
|
34
34
|
# @param script [String] script to run
|
35
35
|
# @return [Object] output
|
36
36
|
def initialize(script)
|
37
|
-
raise "Chef::PowerShell can only be used on the Windows platform." unless RUBY_PLATFORM
|
37
|
+
raise "Chef::PowerShell can only be used on the Windows platform." unless RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
38
38
|
|
39
39
|
exec(script)
|
40
40
|
end
|
data/lib/chef/property.rb
CHANGED
@@ -574,7 +574,7 @@ class Chef
|
|
574
574
|
# be using the existing getter/setter to manipulate it instead.
|
575
575
|
return unless instance_variable_name
|
576
576
|
|
577
|
-
# Properties may override existing properties up the inheritance
|
577
|
+
# Properties may override existing properties up the inheritance hierarchy, but
|
578
578
|
# properties must not override inherited methods like Object#hash. When the Resource is
|
579
579
|
# placed into the resource collection the ruby Hash object will call the
|
580
580
|
# Object#hash method on the resource, and overriding that with a property will cause
|
@@ -702,7 +702,7 @@ class Chef
|
|
702
702
|
# override their own properties.
|
703
703
|
return false unless [ Object, BasicObject, Kernel, Chef::Resource ].include?(declared_in.instance_method(name).owner)
|
704
704
|
|
705
|
-
# Allow top-level Chef::Resource
|
705
|
+
# Allow top-level Chef::Resource properties, such as `name`, to be overridden.
|
706
706
|
# As of this writing, `name` is the only Chef::Resource property created with the
|
707
707
|
# `property` definition, but this will allow for future properties to be extended
|
708
708
|
# as needed.
|
data/lib/chef/provider.rb
CHANGED
@@ -152,7 +152,7 @@ class Chef
|
|
152
152
|
new_resource.cookbook_name
|
153
153
|
end
|
154
154
|
|
155
|
-
# hook that subclasses can use to do lazy validation for where properties aren't
|
155
|
+
# hook that subclasses can use to do lazy validation for where properties aren't flexible enough
|
156
156
|
def check_resource_semantics!; end
|
157
157
|
|
158
158
|
# a simple placeholder method that will be called / raise if a resource tries to
|
@@ -167,7 +167,7 @@ class Chef
|
|
167
167
|
|
168
168
|
def load_after_resource
|
169
169
|
# This is a backwards compatible hack, custom resources properly wire up a new after_resource
|
170
|
-
# via load_current_value. It is
|
170
|
+
# via load_current_value. It is acceptable for old style resources that cannot be easily made
|
171
171
|
# into custom resources to override this method and provide a proper after_resource.
|
172
172
|
@after_resource = @new_resource
|
173
173
|
end
|
@@ -190,7 +190,7 @@ class Chef
|
|
190
190
|
def run_action(action = nil)
|
191
191
|
@action = action unless action.nil?
|
192
192
|
|
193
|
-
# hook that subclasses can use to do lazy validation for where properties aren't
|
193
|
+
# hook that subclasses can use to do lazy validation for where properties aren't flexible enough
|
194
194
|
check_resource_semantics!
|
195
195
|
|
196
196
|
# force the validation of required properties
|
data/lib/chef/provider/batch.rb
CHANGED
@@ -24,22 +24,15 @@ class Chef
|
|
24
24
|
|
25
25
|
provides :batch
|
26
26
|
|
27
|
-
def initialize(new_resource, run_context)
|
28
|
-
super(new_resource, run_context, ".bat")
|
29
|
-
end
|
30
|
-
|
31
27
|
def command
|
32
|
-
basepath = is_forced_32bit ? wow64_directory : run_context.node["kernel"]["os_info"]["system_directory"]
|
33
|
-
|
34
28
|
interpreter_path = Chef::Util::PathHelper.join(basepath, interpreter)
|
35
29
|
|
36
|
-
"\"#{interpreter_path}\" #{flags} \"#{
|
30
|
+
"\"#{interpreter_path}\" #{new_resource.flags} /c \"#{script_file_path}\""
|
37
31
|
end
|
38
32
|
|
39
|
-
def
|
40
|
-
|
33
|
+
def script_extension
|
34
|
+
".bat"
|
41
35
|
end
|
42
|
-
|
43
36
|
end
|
44
37
|
end
|
45
38
|
end
|
data/lib/chef/provider/cron.rb
CHANGED
@@ -15,7 +15,6 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
|
-
|
19
18
|
require_relative "../log"
|
20
19
|
require_relative "../provider"
|
21
20
|
|
@@ -27,8 +26,6 @@ class Chef
|
|
27
26
|
|
28
27
|
SPECIAL_TIME_VALUES = %i{reboot yearly annually monthly weekly daily midnight hourly}.freeze
|
29
28
|
CRON_ATTRIBUTES = %i{minute hour day month weekday time command mailto path shell home environment}.freeze
|
30
|
-
WEEKDAY_SYMBOLS = %i{sunday monday tuesday wednesday thursday friday saturday}.freeze
|
31
|
-
|
32
29
|
CRON_PATTERN = %r{\A([-0-9*,/]+)\s([-0-9*,/]+)\s([-0-9*,/]+)\s([-0-9*,/]+|[a-zA-Z]{3})\s([-0-9*,/]+|[a-zA-Z]{3})\s(.*)}.freeze
|
33
30
|
SPECIAL_PATTERN = /\A(@(#{SPECIAL_TIME_VALUES.join('|')}))\s(.*)/.freeze
|
34
31
|
ENV_PATTERN = /\A(\S+)=(\S*)/.freeze
|
@@ -259,8 +256,8 @@ class Chef
|
|
259
256
|
return "" if new_resource.time_out.empty?
|
260
257
|
|
261
258
|
str = " timeout"
|
262
|
-
str << " --preserve-status" if new_resource.time_out["preserve-status"].to_s.
|
263
|
-
str << " --foreground" if new_resource.time_out["foreground"].to_s.
|
259
|
+
str << " --preserve-status" if new_resource.time_out["preserve-status"].to_s.casecmp("true") == 0
|
260
|
+
str << " --foreground" if new_resource.time_out["foreground"].to_s.casecmp("true") == 0
|
264
261
|
str << " --kill-after #{new_resource.time_out["kill-after"]}" if new_resource.time_out["kill-after"]
|
265
262
|
str << " --signal #{new_resource.time_out["signal"]}" if new_resource.time_out["signal"]
|
266
263
|
str << " #{new_resource.time_out["duration"]};"
|
@@ -288,15 +285,6 @@ class Chef
|
|
288
285
|
|
289
286
|
newcron.join("\n")
|
290
287
|
end
|
291
|
-
|
292
|
-
def weekday_in_crontab
|
293
|
-
weekday_in_crontab = WEEKDAY_SYMBOLS.index(new_resource.weekday)
|
294
|
-
if weekday_in_crontab.nil?
|
295
|
-
new_resource.weekday
|
296
|
-
else
|
297
|
-
weekday_in_crontab.to_s
|
298
|
-
end
|
299
|
-
end
|
300
288
|
end
|
301
289
|
end
|
302
290
|
end
|
@@ -142,7 +142,7 @@ class Chef
|
|
142
142
|
converge_by("delete existing directory #{new_resource.path}") do
|
143
143
|
if new_resource.recursive == true
|
144
144
|
# we don't use rm_rf here because it masks all errors, including
|
145
|
-
# IO errors or permission errors that would
|
145
|
+
# IO errors or permission errors that would prevent the deletion
|
146
146
|
FileUtils.rm_r(new_resource.path)
|
147
147
|
logger.info("#{new_resource} deleted #{new_resource.path} recursively")
|
148
148
|
else
|
@@ -27,7 +27,7 @@ class Chef
|
|
27
27
|
|
28
28
|
provides :execute, target_mode: true
|
29
29
|
|
30
|
-
def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout
|
30
|
+
def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout, :input
|
31
31
|
|
32
32
|
def load_current_resource
|
33
33
|
current_resource = Chef::Resource::Execute.new(new_resource.name)
|
@@ -91,6 +91,7 @@ class Chef
|
|
91
91
|
opts[:group] = group if group
|
92
92
|
opts[:cwd] = cwd if cwd
|
93
93
|
opts[:umask] = umask if umask
|
94
|
+
opts[:input] = input if input
|
94
95
|
opts[:default_env] = default_env
|
95
96
|
opts[:log_level] = :info
|
96
97
|
opts[:log_tag] = new_resource.to_s
|
data/lib/chef/provider/file.rb
CHANGED
@@ -334,7 +334,7 @@ class Chef
|
|
334
334
|
end
|
335
335
|
|
336
336
|
def do_validate_content
|
337
|
-
if new_resource.checksum && tempfile && ( new_resource.checksum
|
337
|
+
if new_resource.checksum && tempfile && ( new_resource.checksum != tempfile_checksum )
|
338
338
|
raise Chef::Exceptions::ChecksumMismatch.new(short_cksum(new_resource.checksum), short_cksum(tempfile_checksum))
|
339
339
|
end
|
340
340
|
|
@@ -39,7 +39,7 @@ class Chef
|
|
39
39
|
result = dscl(*args)
|
40
40
|
return "" if ( args.first =~ /^delete/ ) && ( result[1].exitstatus != 0 )
|
41
41
|
raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") unless result[1].exitstatus == 0
|
42
|
-
raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") if
|
42
|
+
raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") if /No such key: /.match?(result[2])
|
43
43
|
|
44
44
|
result[2]
|
45
45
|
end
|
@@ -77,7 +77,7 @@ class Chef
|
|
77
77
|
gid = nil; next_gid_guess = 200
|
78
78
|
groups_gids = safe_dscl("list", "/Groups", "gid")
|
79
79
|
while next_gid_guess < search_limit + 200
|
80
|
-
if groups_gids
|
80
|
+
if groups_gids&.match?(Regexp.new("#{Regexp.escape(next_gid_guess.to_s)}\n"))
|
81
81
|
next_gid_guess += 1
|
82
82
|
else
|
83
83
|
gid = next_gid_guess
|
@@ -59,12 +59,12 @@ class Chef
|
|
59
59
|
|
60
60
|
@net_tools_version = shell_out("ifconfig", "--version")
|
61
61
|
@net_tools_version.stdout.each_line do |line|
|
62
|
-
if
|
62
|
+
if /^net-tools (\d+\.\d+)/.match?(line)
|
63
63
|
@ifconfig_version = line.match(/^net-tools (\d+\.\d+)/)[1]
|
64
64
|
end
|
65
65
|
end
|
66
66
|
@net_tools_version.stderr.each_line do |line|
|
67
|
-
if
|
67
|
+
if /^net-tools (\d+\.\d+)/.match?(line)
|
68
68
|
@ifconfig_version = line.match(/^net-tools (\d+\.\d+)/)[1]
|
69
69
|
end
|
70
70
|
end
|
@@ -88,11 +88,11 @@ class Chef
|
|
88
88
|
@int_name = line[0..9].strip
|
89
89
|
@interfaces[@int_name] = { "hwaddr" => (line =~ /(HWaddr)/ ? ($') : "nil").strip.chomp }
|
90
90
|
else
|
91
|
-
@interfaces[@int_name]["inet_addr"] = (line =~ /inet addr:(\S+)/ ? Regexp.last_match(1) : "nil") if
|
92
|
-
@interfaces[@int_name]["bcast"] = (line =~ /Bcast:(\S+)/ ? Regexp.last_match(1) : "nil") if
|
93
|
-
@interfaces[@int_name]["mask"] = (line =~ /Mask:(\S+)/ ? Regexp.last_match(1) : "nil") if
|
94
|
-
@interfaces[@int_name]["mtu"] = (line =~ /MTU:(\S+)/ ? Regexp.last_match(1) : "nil") if
|
95
|
-
@interfaces[@int_name]["metric"] = (line =~ /Metric:(\S+)/ ? Regexp.last_match(1) : "nil") if
|
91
|
+
@interfaces[@int_name]["inet_addr"] = (line =~ /inet addr:(\S+)/ ? Regexp.last_match(1) : "nil") if /inet addr:/.match?(line)
|
92
|
+
@interfaces[@int_name]["bcast"] = (line =~ /Bcast:(\S+)/ ? Regexp.last_match(1) : "nil") if /Bcast:/.match?(line)
|
93
|
+
@interfaces[@int_name]["mask"] = (line =~ /Mask:(\S+)/ ? Regexp.last_match(1) : "nil") if /Mask:/.match?(line)
|
94
|
+
@interfaces[@int_name]["mtu"] = (line =~ /MTU:(\S+)/ ? Regexp.last_match(1) : "nil") if /MTU:/.match?(line)
|
95
|
+
@interfaces[@int_name]["metric"] = (line =~ /Metric:(\S+)/ ? Regexp.last_match(1) : "nil") if /Metric:/.match?(line)
|
96
96
|
end
|
97
97
|
|
98
98
|
next unless @interfaces.key?(new_resource.device)
|
@@ -36,7 +36,6 @@ class Chef
|
|
36
36
|
label
|
37
37
|
mode
|
38
38
|
owner
|
39
|
-
path
|
40
39
|
source
|
41
40
|
session_type
|
42
41
|
type
|
@@ -44,7 +43,6 @@ class Chef
|
|
44
43
|
|
45
44
|
def load_current_resource
|
46
45
|
current_resource = Chef::Resource::Launchd.new(new_resource.name)
|
47
|
-
@path = path ? path : gen_path_from_type
|
48
46
|
end
|
49
47
|
|
50
48
|
def gen_path_from_type
|
@@ -64,23 +62,23 @@ class Chef
|
|
64
62
|
end
|
65
63
|
|
66
64
|
action :delete do
|
67
|
-
|
68
|
-
# the service will be in memory and you wont be able to stop it.
|
69
|
-
if ::File.exists?(@path)
|
65
|
+
if ::File.exists?(path)
|
70
66
|
manage_service(:disable)
|
71
67
|
end
|
72
68
|
manage_plist(:delete)
|
73
69
|
end
|
74
70
|
|
75
71
|
action :enable do
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
manage_service(:enable)
|
72
|
+
manage_service(:nothing)
|
73
|
+
manage_plist(:create) do
|
74
|
+
notifies :restart, "macosx_service[#{label}]", :immediately
|
80
75
|
end
|
76
|
+
manage_service(:enable)
|
81
77
|
end
|
82
78
|
|
83
79
|
action :disable do
|
80
|
+
return unless ::File.exist?(path)
|
81
|
+
|
84
82
|
manage_service(:disable)
|
85
83
|
end
|
86
84
|
|
@@ -88,39 +86,32 @@ class Chef
|
|
88
86
|
manage_service(:restart)
|
89
87
|
end
|
90
88
|
|
91
|
-
def manage_plist(action)
|
89
|
+
def manage_plist(action, &block)
|
92
90
|
if source
|
93
|
-
cookbook_file
|
94
|
-
cookbook_name = cookbook if cookbook
|
95
|
-
|
96
|
-
backup(backup) if backup
|
97
|
-
group(group) if group
|
98
|
-
mode(mode) if mode
|
99
|
-
owner(owner) if owner
|
100
|
-
source(source) if source
|
91
|
+
cookbook_file path do
|
92
|
+
cookbook_name = new_resource.cookbook if new_resource.cookbook
|
93
|
+
copy_properties_from(new_resource, :backup, :group, :mode, :owner, :source)
|
101
94
|
action(action)
|
102
95
|
only_if { manage_agent?(action) }
|
96
|
+
instance_eval(&block) if block_given?
|
103
97
|
end
|
104
98
|
else
|
105
|
-
file
|
106
|
-
|
107
|
-
|
108
|
-
content(content) if content?
|
109
|
-
group(group) if group
|
110
|
-
mode(mode) if mode
|
111
|
-
owner(owner) if owner
|
99
|
+
file path do
|
100
|
+
copy_properties_from(new_resource, :backup, :group, :mode, :owner)
|
101
|
+
content(file_content) if file_content?
|
112
102
|
action(action)
|
113
103
|
only_if { manage_agent?(action) }
|
104
|
+
instance_eval(&block) if block_given?
|
114
105
|
end
|
115
106
|
end
|
116
107
|
end
|
117
108
|
|
118
109
|
def manage_service(action)
|
110
|
+
plist_path = path
|
119
111
|
macosx_service label do
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
session_type(session_type) if session_type
|
112
|
+
service_name(new_resource.label) if new_resource.label
|
113
|
+
plist(plist_path) if plist_path
|
114
|
+
copy_properties_from(new_resource, :session_type)
|
124
115
|
action(action)
|
125
116
|
only_if { manage_agent?(action) }
|
126
117
|
end
|
@@ -155,11 +146,11 @@ class Chef
|
|
155
146
|
end
|
156
147
|
end
|
157
148
|
|
158
|
-
def
|
159
|
-
!!
|
149
|
+
def file_content?
|
150
|
+
!!file_content
|
160
151
|
end
|
161
152
|
|
162
|
-
def
|
153
|
+
def file_content
|
163
154
|
plist_hash = new_resource.plist_hash || gen_hash
|
164
155
|
::Plist::Emit.dump(plist_hash) unless plist_hash.nil?
|
165
156
|
end
|
@@ -215,6 +206,11 @@ class Chef
|
|
215
206
|
memo[val] = new_resource.send(key) if new_resource.send(key)
|
216
207
|
end
|
217
208
|
end
|
209
|
+
|
210
|
+
# @api private
|
211
|
+
def path
|
212
|
+
@path ||= new_resource.path ? new_resource.path : gen_path_from_type
|
213
|
+
end
|
218
214
|
end
|
219
215
|
end
|
220
216
|
end
|