diff options
author | Tim Smith <tsmith@chef.io> | 2020-05-19 21:18:41 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-19 21:18:41 -0700 |
commit | 477c9ec20fe2c4c8baa0b695b907dd907cf7d5fb (patch) | |
tree | 8aa22e956747433eee6dd042a43971f6d223ac88 | |
parent | a4354970b5928df01eeaf981f4cccda93f7201dc (diff) | |
parent | 21f3affbea531de0cb9e8a1373267d06a72be5a6 (diff) | |
download | chef-477c9ec20fe2c4c8baa0b695b907dd907cf7d5fb.tar.gz |
Merge pull request #9886 from chef/random-cleanup
Small cleanups to checksum logic in file/windows_package/chef::mixin::checksum
-rw-r--r-- | lib/chef/mixin/checksum.rb | 1 | ||||
-rw-r--r-- | lib/chef/provider/file.rb | 2 | ||||
-rw-r--r-- | lib/chef/provider/package/windows.rb | 2 | ||||
-rw-r--r-- | lib/chef/resource/file.rb | 18 |
4 files changed, 12 insertions, 11 deletions
diff --git a/lib/chef/mixin/checksum.rb b/lib/chef/mixin/checksum.rb index a961b6dcd3..0b6b8b34b6 100644 --- a/lib/chef/mixin/checksum.rb +++ b/lib/chef/mixin/checksum.rb @@ -16,7 +16,6 @@ # limitations under the License. # -require "digest/sha2" unless defined?(Digest::SHA2) require_relative "../digester" class Chef diff --git a/lib/chef/provider/file.rb b/lib/chef/provider/file.rb index b705283623..0de620bba1 100644 --- a/lib/chef/provider/file.rb +++ b/lib/chef/provider/file.rb @@ -334,7 +334,7 @@ class Chef end def do_validate_content - if new_resource.checksum && tempfile && ( new_resource.checksum.downcase != tempfile_checksum ) + if new_resource.checksum && tempfile && ( new_resource.checksum != tempfile_checksum ) raise Chef::Exceptions::ChecksumMismatch.new(short_cksum(new_resource.checksum), short_cksum(tempfile_checksum)) end diff --git a/lib/chef/provider/package/windows.rb b/lib/chef/provider/package/windows.rb index 8ee5b36f5d..79e01804fd 100644 --- a/lib/chef/provider/package/windows.rb +++ b/lib/chef/provider/package/windows.rb @@ -38,7 +38,7 @@ class Chef def define_resource_requirements if new_resource.checksum requirements.assert(:install) do |a| - a.assertion { new_resource.checksum.downcase == checksum(source_location) } + a.assertion { new_resource.checksum == checksum(source_location) } a.failure_message Chef::Exceptions::Package, "Checksum on resource (#{short_cksum(new_resource.checksum)}) does not match checksum on content (#{short_cksum(source_location)})" end end diff --git a/lib/chef/resource/file.rb b/lib/chef/resource/file.rb index 4816ada504..59e917fbc4 100644 --- a/lib/chef/resource/file.rb +++ b/lib/chef/resource/file.rb @@ -56,28 +56,30 @@ class Chef allowed_actions :create, :delete, :touch, :create_if_missing property :path, String, name_property: true, - description: "The full path to the file, including the file name and its extension. For example: /files/file.txt. Default value: the name of the resource block. Microsoft Windows: A path that begins with a forward slash (/) will point to the root of the current working directory of the #{Chef::Dist::CLIENT} process. This path can vary from system to system. Therefore, using a path that begins with a forward slash (/) is not recommended." + description: "The full path to the file, including the file name and its extension. For example: /files/file.txt. Default value: the name of the resource block. Microsoft Windows: A path that begins with a forward slash (/) will point to the root of the current working directory of the #{Chef::Dist::CLIENT} process. This path can vary from system to system. Therefore, using a path that begins with a forward slash (/) is not recommended." property :atomic_update, [ TrueClass, FalseClass ], desired_state: false, default: lazy { docker? && special_docker_files?(path) ? false : Chef::Config[:file_atomic_update] }, - default_description: "False if modifying /etc/hosts, /etc/hostname, or /etc/resolv.conf within Docker containers. Otherwise default to the client.rb 'file_atomic_update' config value.", - description: "Perform atomic file updates on a per-resource basis. Set to true for atomic file updates. Set to false for non-atomic file updates. This setting overrides `file_atomic_update`, which is a global setting found in the `client.rb` file." + default_description: "False if modifying /etc/hosts, /etc/hostname, or /etc/resolv.conf within Docker containers. Otherwise default to the client.rb 'file_atomic_update' config value.", + description: "Perform atomic file updates on a per-resource basis. Set to true for atomic file updates. Set to false for non-atomic file updates. This setting overrides `file_atomic_update`, which is a global setting found in the `client.rb` file." property :backup, [ Integer, FalseClass ], desired_state: false, default: 5, - description: "The number of backups to be kept in `/var/chef/backup` (for UNIX- and Linux-based platforms) or `C:/chef/backup` (for the Microsoft Windows platform). Set to `false` to prevent backups from being kept." + description: "The number of backups to be kept in `/var/chef/backup` (for UNIX- and Linux-based platforms) or `C:/chef/backup` (for the Microsoft Windows platform). Set to `false` to prevent backups from being kept." - property :checksum, [ /^[a-zA-Z0-9]{64}$/, nil ], + property :checksum, [ String, nil ], + regex: /^\h{64}$/, + coerce: lambda { |s| s.is_a?(String) ? s.downcase : s }, description: "The SHA-256 checksum of the file. Use to ensure that a specific file is used. If the checksum does not match, the file is not used." property :content, [ String, nil ], desired_state: false, - description: "A string that is written to the file. The contents of this property replace any previous content when this property has something other than the default value. The default behavior will not modify content." + description: "A string that is written to the file. The contents of this property replace any previous content when this property has something other than the default value. The default behavior will not modify content." property :diff, [ String, nil ], desired_state: false, skip_docs: true property :force_unlink, [ TrueClass, FalseClass ], desired_state: false, default: false, - description: "How #{Chef::Dist::PRODUCT} handles certain situations when the target file turns out not to be a file. For example, when a target file is actually a symlink. Set to true for #{Chef::Dist::PRODUCT} to delete the non-file target and replace it with the specified file. Set to false for #{Chef::Dist::PRODUCT} to raise an error." + description: "How #{Chef::Dist::PRODUCT} handles certain situations when the target file turns out not to be a file. For example, when a target file is actually a symlink. Set to true for #{Chef::Dist::PRODUCT} to delete the non-file target and replace it with the specified file. Set to false for #{Chef::Dist::PRODUCT} to raise an error." property :manage_symlink_source, [ TrueClass, FalseClass ], desired_state: false, - description: "Change the behavior of the file resource if it is pointed at a symlink. When this value is set to true, #{Chef::Dist::PRODUCT} will manage the symlink's permissions or will replace the symlink with a normal file if the resource has content. When this value is set to false, #{Chef::Dist::PRODUCT} will follow the symlink and will manage the permissions and content of symlink's target file. The default behavior is true but emits a warning that the default value will be changed to false in a future version; setting this explicitly to true or false suppresses this warning." + description: "Change the behavior of the file resource if it is pointed at a symlink. When this value is set to true, #{Chef::Dist::PRODUCT} will manage the symlink's permissions or will replace the symlink with a normal file if the resource has content. When this value is set to false, #{Chef::Dist::PRODUCT} will follow the symlink and will manage the permissions and content of symlink's target file. The default behavior is true but emits a warning that the default value will be changed to false in a future version; setting this explicitly to true or false suppresses this warning." property :verifications, Array, default: lazy { [] } |