chef 16.1.16 → 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 +2 -3
- data/README.md +3 -3
- data/Rakefile +2 -2
- data/chef.gemspec +3 -3
- data/lib/chef/application/apply.rb +1 -1
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +1 -1
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +1 -1
- data/lib/chef/cookbook_version.rb +2 -2
- data/lib/chef/data_bag.rb +4 -4
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/file_access_control.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
- data/lib/chef/http.rb +17 -2
- 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/knife.rb +1 -1
- data/lib/chef/knife/bootstrap.rb +3 -6
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
- 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/data_bag_create.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 +1 -1
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/powershell.rb +1 -1
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron.rb +2 -14
- data/lib/chef/provider/execute.rb +2 -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/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/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/powershell.rb +6 -2
- data/lib/chef/provider/package/rubygems.rb +2 -2
- data/lib/chef/provider/package/snap.rb +96 -27
- 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/powershell_script.rb +10 -14
- 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 +1 -1
- data/lib/chef/provider/service/debian.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.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/dscl.rb +4 -4
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +5 -5
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/zypper_repository.rb +30 -10
- data/lib/chef/resource.rb +22 -11
- 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/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/execute.rb +477 -7
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/freebsd_package.rb +1 -1
- 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 +6 -19
- data/lib/chef/resource/kernel_module.rb +14 -1
- data/lib/chef/resource/mount.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/template.rb +1 -1
- 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 +26 -0
- data/lib/chef/resource/windows_font.rb +3 -3
- data/lib/chef/resource/windows_package.rb +1 -1
- data/lib/chef/resource/windows_pagefile.rb +1 -1
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +17 -15
- data/lib/chef/resource/windows_shortcut.rb +1 -2
- data/lib/chef/resource/windows_task.rb +4 -4
- data/lib/chef/resource/windows_user_privilege.rb +5 -5
- data/lib/chef/resource/yum_repository.rb +9 -9
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/util/diff.rb +2 -2
- 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/file.rb +1 -1
- data/lib/chef/win32/registry.rb +2 -2
- data/lib/chef/win32/security.rb +1 -1
- 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/remote_file_spec.rb +2 -2
- data/spec/functional/resource/windows_task_spec.rb +8 -8
- 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/unit/execute_resource.rb +1 -1
- 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/mixin/user_context_spec.rb +1 -9
- 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/package/powershell_spec.rb +95 -86
- 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/zypper_repository_spec.rb +60 -10
- 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_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/util/dsc/configuration_generator_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- metadata +22 -22
- data/lib/chef/resource/cron.rb +0 -157
@@ -34,7 +34,6 @@ class Chef
|
|
34
34
|
description 'Make a shortcut to C:\\original_dir'
|
35
35
|
end
|
36
36
|
```
|
37
|
-
|
38
37
|
DOC
|
39
38
|
|
40
39
|
property :shortcut_name, String,
|
@@ -57,7 +56,7 @@ class Chef
|
|
57
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"
|
58
57
|
|
59
58
|
load_current_value do |desired|
|
60
|
-
require "win32ole" if RUBY_PLATFORM
|
59
|
+
require "win32ole" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
61
60
|
|
62
61
|
link = WIN32OLE.new("WScript.Shell").CreateShortcut(desired.shortcut_name)
|
63
62
|
name desired.shortcut_name
|
@@ -189,11 +189,11 @@ class Chef
|
|
189
189
|
description: "The frequency with which to run the task."
|
190
190
|
|
191
191
|
property :start_day, String,
|
192
|
-
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.",
|
193
193
|
default_description: "The current date."
|
194
194
|
|
195
195
|
property :start_time, String,
|
196
|
-
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."
|
197
197
|
|
198
198
|
property :day, [String, Integer],
|
199
199
|
description: "The day(s) on which the task runs."
|
@@ -330,7 +330,7 @@ class Chef
|
|
330
330
|
|
331
331
|
# make sure the start_day is in MM/DD/YYYY format: http://rubular.com/r/cgjHemtWl5
|
332
332
|
if start_day
|
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$}
|
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)
|
334
334
|
end
|
335
335
|
end
|
336
336
|
|
@@ -338,7 +338,7 @@ class Chef
|
|
338
338
|
def validate_start_time(start_time, frequency)
|
339
339
|
if start_time
|
340
340
|
raise ArgumentError, "`start_time` property is not supported with `frequency :none`" if frequency == :none
|
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]
|
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)
|
342
342
|
else
|
343
343
|
raise ArgumentError, "`start_time` needs to be provided with `frequency :once`" if frequency == :once
|
344
344
|
end
|
@@ -68,7 +68,7 @@ class Chef
|
|
68
68
|
}
|
69
69
|
|
70
70
|
provides :windows_user_privilege
|
71
|
-
description "The windows_user_privilege resource allows to add and set principal (User/Group) to the specified privilege
|
71
|
+
description "The windows_user_privilege resource allows to add and set principal (User/Group) to the specified privilege.\n Ref: https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/user-rights-assignment"
|
72
72
|
|
73
73
|
introduced "16.0"
|
74
74
|
|
@@ -78,7 +78,7 @@ class Chef
|
|
78
78
|
```ruby
|
79
79
|
windows_user_privilege 'Network Logon Rights' do
|
80
80
|
privilege 'SeNetworkLogonRight'
|
81
|
-
users ['BUILTIN
|
81
|
+
users ['BUILTIN\\Administrators', 'NT AUTHORITY\\Authenticated Users']
|
82
82
|
action :set
|
83
83
|
end
|
84
84
|
```
|
@@ -88,7 +88,7 @@ class Chef
|
|
88
88
|
```ruby
|
89
89
|
windows_user_privilege 'Remote interactive logon' do
|
90
90
|
privilege 'SeDenyRemoteInteractiveLogonRight'
|
91
|
-
users ['Builtin
|
91
|
+
users ['Builtin\\Guests', 'NT AUTHORITY\\Local Account']
|
92
92
|
action :add
|
93
93
|
end
|
94
94
|
```
|
@@ -98,7 +98,7 @@ class Chef
|
|
98
98
|
```ruby
|
99
99
|
windows_user_privilege 'Create Pagefile' do
|
100
100
|
privilege 'SeCreatePagefilePrivilege'
|
101
|
-
users ['BUILTIN
|
101
|
+
users ['BUILTIN\\Guests', 'BUILTIN\\Administrators']
|
102
102
|
action :set
|
103
103
|
end
|
104
104
|
```
|
@@ -108,7 +108,7 @@ class Chef
|
|
108
108
|
```ruby
|
109
109
|
windows_user_privilege 'Create Pagefile' do
|
110
110
|
privilege 'SeCreatePagefilePrivilege'
|
111
|
-
users ['BUILTIN
|
111
|
+
users ['BUILTIN\\Guests']
|
112
112
|
action :remove
|
113
113
|
end
|
114
114
|
```
|
@@ -95,7 +95,7 @@ class Chef
|
|
95
95
|
description: "URL pointing to the ASCII-armored GPG key file for the repository. This is used if Yum needs a public key to verify a package and the required key hasn't been imported into the RPM database. If this option is set, Yum will automatically import the key from the specified URL. Multiple URLs may be specified in the same manner as the baseurl option. If a GPG key is required to install a package from a repository, all keys specified for that repository will be installed.\nMultiple URLs may be specified in the same manner as the baseurl option. If a GPG key is required to install a package from a repository, all keys specified for that repository will be installed."
|
96
96
|
|
97
97
|
property :http_caching, String, equal_to: %w{packages all none},
|
98
|
-
description: "Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values
|
98
|
+
description: "Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values:\n - `all` means all HTTP downloads should be cached\n - `packages` means only RPM package downloads should be cached, but not repository metadata downloads\n - `none` means no HTTP downloads should be cached.\n\nThe default value of `all` is recommended unless you are experiencing caching related issues."
|
99
99
|
|
100
100
|
property :include_config, String,
|
101
101
|
description: "An external configuration file using the format `url://to/some/location`."
|
@@ -114,25 +114,25 @@ class Chef
|
|
114
114
|
description: "Number of times any attempt to retrieve a file should retry before returning an error. Setting this to `0` makes Yum try forever."
|
115
115
|
|
116
116
|
property :metadata_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/, /never/],
|
117
|
-
description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a
|
118
|
-
validation_message: "The metadata_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with
|
117
|
+
description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively. The default is six hours to compliment yum-updates running once per hour. It is also possible to use the word `never`, meaning that the metadata will never expire. Note: When using a metalink file, the metalink must always be newer than the metadata for the repository due to the validation, so this timeout also applies to the metalink file.",
|
118
|
+
validation_message: "The metadata_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
|
119
119
|
|
120
120
|
property :metalink, String,
|
121
121
|
description: "Specifies a URL to a metalink file for the repomd.xml, a list of mirrors for the entire repository are generated by converting the mirrors for the repomd.xml file to a baseurl."
|
122
122
|
|
123
123
|
property :mirror_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/],
|
124
|
-
description: "Time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than this many seconds old then Yum will not download another copy of the mirrorlist, it has the same extra format as metadata_expire. If you find that Yum is not downloading the mirrorlists as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a
|
125
|
-
validation_message: "The mirror_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with
|
124
|
+
description: "Time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than this many seconds old then Yum will not download another copy of the mirrorlist, it has the same extra format as metadata_expire. If you find that Yum is not downloading the mirrorlists as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively.",
|
125
|
+
validation_message: "The mirror_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
|
126
126
|
|
127
127
|
property :mirrorlist_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/],
|
128
|
-
description: "Specifies the time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than the value specified, then Yum will not download another copy of the mirrorlist. You can also change from the default of using seconds to using days, hours or minutes by appending a
|
129
|
-
validation_message: "The mirrorlist_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with
|
128
|
+
description: "Specifies the time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than the value specified, then Yum will not download another copy of the mirrorlist. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively.",
|
129
|
+
validation_message: "The mirrorlist_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
|
130
130
|
|
131
131
|
property :mirrorlist, String,
|
132
132
|
description: "URL to a file containing a list of baseurls. This can be used instead of or with the baseurl option. Substitution variables, described below, can be used with this option."
|
133
133
|
|
134
134
|
property :mode, [String, Integer],
|
135
|
-
description: "Permissions mode of .repo file on disk. This is useful for scenarios where secrets are in the repo file. If this value is set to
|
135
|
+
description: "Permissions mode of .repo file on disk. This is useful for scenarios where secrets are in the repo file. If this value is set to `600`, normal users will not be able to use Yum search, Yum info, etc.",
|
136
136
|
default: "0644"
|
137
137
|
|
138
138
|
property :options, Hash,
|
@@ -142,7 +142,7 @@ class Chef
|
|
142
142
|
description: "Password to use with the username for basic authentication."
|
143
143
|
|
144
144
|
property :priority, String, regex: /^(\d?[1-9]|[0-9][0-9])$/,
|
145
|
-
description: "Assigns a priority to a repository where the priority value is between
|
145
|
+
description: "Assigns a priority to a repository where the priority value is between `1` and `99` inclusive. Priorities are used to enforce ordered protection of repositories. Packages from repositories with a lower priority (higher numerical value) will never be used to upgrade packages that were installed from a repository with a higher priority (lower numerical value). The repositories with the lowest numerical priority number have the highest priority.",
|
146
146
|
validation_message: "The priority property must be a numeric value from 1-99!"
|
147
147
|
|
148
148
|
property :proxy_password, String,
|
data/lib/chef/resources.rb
CHANGED
@@ -38,9 +38,9 @@ require_relative "resource/chocolatey_config"
|
|
38
38
|
require_relative "resource/chocolatey_feature"
|
39
39
|
require_relative "resource/chocolatey_package"
|
40
40
|
require_relative "resource/chocolatey_source"
|
41
|
-
require_relative "resource/cron"
|
41
|
+
require_relative "resource/cron/cron"
|
42
42
|
require_relative "resource/cron_access"
|
43
|
-
require_relative "resource/cron_d"
|
43
|
+
require_relative "resource/cron/cron_d"
|
44
44
|
require_relative "resource/csh"
|
45
45
|
require_relative "resource/directory"
|
46
46
|
require_relative "resource/dmg_package"
|
@@ -60,6 +60,7 @@ require_relative "resource/hostname"
|
|
60
60
|
require_relative "resource/homebrew_cask"
|
61
61
|
require_relative "resource/homebrew_package"
|
62
62
|
require_relative "resource/homebrew_tap"
|
63
|
+
require_relative "resource/homebrew_update"
|
63
64
|
require_relative "resource/ifconfig"
|
64
65
|
require_relative "resource/kernel_module"
|
65
66
|
require_relative "resource/ksh"
|
@@ -141,6 +142,7 @@ require_relative "resource/cab_package"
|
|
141
142
|
require_relative "resource/powershell_package"
|
142
143
|
require_relative "resource/msu_package"
|
143
144
|
require_relative "resource/windows_ad_join"
|
145
|
+
require_relative "resource/windows_audit_policy"
|
144
146
|
require_relative "resource/windows_auto_run"
|
145
147
|
require_relative "resource/windows_certificate"
|
146
148
|
require_relative "resource/windows_dfs_folder"
|
data/lib/chef/search/query.rb
CHANGED
@@ -105,7 +105,7 @@ class Chef
|
|
105
105
|
private
|
106
106
|
|
107
107
|
def fuzzify_node_query(query)
|
108
|
-
if query
|
108
|
+
if !/:/.match?(query)
|
109
109
|
"tags:*#{query}* OR roles:*#{query}* OR fqdn:*#{query}* OR addresses:*#{query}* OR policy_name:*#{query}* OR policy_group:*#{query}*"
|
110
110
|
else
|
111
111
|
query
|
data/lib/chef/util/diff.rb
CHANGED
@@ -136,7 +136,7 @@ class Chef
|
|
136
136
|
return "(file sizes exceed #{diff_filesize_threshold} bytes, diff output suppressed)"
|
137
137
|
end
|
138
138
|
|
139
|
-
#
|
139
|
+
# macOS(BSD?) diff will *sometimes* happily spit out nasty binary diffs
|
140
140
|
return "(current file is binary, diff output suppressed)" if is_binary?(old_file)
|
141
141
|
return "(new content is binary, diff output suppressed)" if is_binary?(new_file)
|
142
142
|
|
@@ -171,7 +171,7 @@ class Chef
|
|
171
171
|
begin
|
172
172
|
return buff !~ /\A[\s[:print:]]*\z/m
|
173
173
|
rescue ArgumentError => e
|
174
|
-
return true if
|
174
|
+
return true if /invalid byte sequence/.match?(e.message)
|
175
175
|
|
176
176
|
raise
|
177
177
|
end
|
@@ -100,7 +100,7 @@ class Chef::Util::Windows::NetUser < Chef::Util::Windows
|
|
100
100
|
rescue Chef::Exceptions::Win32APIError => e
|
101
101
|
Chef::Log.trace(e)
|
102
102
|
# we're only interested in the incorrect password failures
|
103
|
-
if
|
103
|
+
if /System Error Code: 1326/.match?(e.to_s)
|
104
104
|
return false
|
105
105
|
end
|
106
106
|
|
@@ -25,7 +25,7 @@ class Chef::Util::Windows::Volume < Chef::Util::Windows
|
|
25
25
|
attr_reader :mount_point
|
26
26
|
|
27
27
|
def initialize(name)
|
28
|
-
name += "\\" unless name
|
28
|
+
name += "\\" unless /\\$/.match?(name) # trailing slash required
|
29
29
|
@mount_point = name
|
30
30
|
end
|
31
31
|
|
data/lib/chef/version.rb
CHANGED
data/lib/chef/win32/file.rb
CHANGED
@@ -123,7 +123,7 @@ class Chef
|
|
123
123
|
|
124
124
|
# Return the link destination (strip off \??\ at the beginning, which is a local filesystem thing)
|
125
125
|
link_dest = reparse_buffer.reparse_buffer.substitute_name
|
126
|
-
if link_dest
|
126
|
+
if /^\\\?\?\\/.match?(link_dest)
|
127
127
|
link_dest = link_dest[4..-1]
|
128
128
|
end
|
129
129
|
link_dest
|
data/lib/chef/win32/registry.rb
CHANGED
@@ -20,7 +20,7 @@ require_relative "../reserved_names"
|
|
20
20
|
require_relative "api"
|
21
21
|
require_relative "../mixin/wide_string"
|
22
22
|
|
23
|
-
if RUBY_PLATFORM
|
23
|
+
if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
24
24
|
require_relative "../monkey_patches/win32/registry"
|
25
25
|
require_relative "api/registry"
|
26
26
|
require "win32/registry" unless defined?(Win32::Registry)
|
@@ -31,7 +31,7 @@ class Chef
|
|
31
31
|
class Win32
|
32
32
|
class Registry
|
33
33
|
|
34
|
-
if RUBY_PLATFORM
|
34
|
+
if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
35
35
|
include Chef::ReservedNames::Win32::API::Registry
|
36
36
|
extend Chef::ReservedNames::Win32::API::Registry
|
37
37
|
end
|
data/lib/chef/win32/security.rb
CHANGED
@@ -694,7 +694,7 @@ class Chef
|
|
694
694
|
begin
|
695
695
|
process_token = open_current_process_token(TOKEN_READ)
|
696
696
|
rescue Exception => run_error
|
697
|
-
return false if
|
697
|
+
return false if /Access is denied/.match?(run_error.message)
|
698
698
|
|
699
699
|
Chef::ReservedNames::Win32::Error.raise!
|
700
700
|
end
|
@@ -4,7 +4,7 @@ def without_deprecation_warnings(&block)
|
|
4
4
|
old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
|
5
5
|
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
6
6
|
begin
|
7
|
-
|
7
|
+
yield
|
8
8
|
ensure
|
9
9
|
Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
|
10
10
|
end
|
@@ -2,7 +2,7 @@ def without_deprecation_warnings(&block)
|
|
2
2
|
old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
|
3
3
|
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
4
4
|
begin
|
5
|
-
|
5
|
+
yield
|
6
6
|
ensure
|
7
7
|
Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
|
8
8
|
end
|
@@ -7,7 +7,7 @@ def without_deprecation_warnings(&block)
|
|
7
7
|
old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
|
8
8
|
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
9
9
|
begin
|
10
|
-
|
10
|
+
yield
|
11
11
|
ensure
|
12
12
|
Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
|
13
13
|
end
|
@@ -80,6 +80,16 @@ describe Chef::Resource::Cron, :requires_root, :unix_only do
|
|
80
80
|
5.times { new_resource.run_action(:create) }
|
81
81
|
cron_should_exists(new_resource.name, new_resource.command)
|
82
82
|
end
|
83
|
+
|
84
|
+
# Test cron for day of week
|
85
|
+
weekdays = { Mon: 1, tuesday: 2, '3': 3, 'thursday': 4, 'Fri': 5, 6 => 6 }
|
86
|
+
weekdays.each do |key, value|
|
87
|
+
it "should create crontab entry and set #{value} for #{key} as weekday" do
|
88
|
+
new_resource.weekday key
|
89
|
+
expect { new_resource.run_action(:create) }.not_to raise_error
|
90
|
+
cron_should_exists(new_resource.name, new_resource.command)
|
91
|
+
end
|
92
|
+
end
|
83
93
|
end
|
84
94
|
|
85
95
|
describe "delete action" do
|
@@ -134,7 +134,7 @@ describe Chef::Resource::RemoteFile do
|
|
134
134
|
let(:smb_file_local_file_name) { "smb_file.txt" }
|
135
135
|
let(:smb_file_local_path) { File.join( smb_share_root_directory, smb_file_local_file_name ) }
|
136
136
|
let(:smb_share_name) { "chef_smb_test" }
|
137
|
-
let(:smb_remote_path) { File.join("//#{ENV["COMPUTERNAME"]}", smb_share_name, smb_file_local_file_name).
|
137
|
+
let(:smb_remote_path) { File.join("//#{ENV["COMPUTERNAME"]}", smb_share_name, smb_file_local_file_name).tr("/", "\\") }
|
138
138
|
let(:smb_file_content) { "hellofun" }
|
139
139
|
let(:local_destination_path) { File.join(Dir.tmpdir, make_tmpname("chef_remote_file")) }
|
140
140
|
let(:windows_current_user) { ENV["USERNAME"] }
|
@@ -155,7 +155,7 @@ describe Chef::Resource::RemoteFile do
|
|
155
155
|
before do
|
156
156
|
shell_out("net.exe share #{smb_share_name} /delete")
|
157
157
|
File.write(smb_file_local_path, smb_file_content )
|
158
|
-
shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.
|
158
|
+
shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.tr("/", '\\')}\" /grant:\"authenticated users\",read")
|
159
159
|
end
|
160
160
|
|
161
161
|
after do
|
@@ -513,13 +513,13 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
513
513
|
it "not raises any Argument error if frequency_modifier set as 'first, second, third' and day is provided" do
|
514
514
|
subject.frequency_modifier "first, second, third"
|
515
515
|
subject.day "Mon, Fri"
|
516
|
-
expect { subject.after_created }.not_to raise_error
|
516
|
+
expect { subject.after_created }.not_to raise_error
|
517
517
|
end
|
518
518
|
|
519
519
|
it "not raises any Argument error if frequency_modifier 2 " do
|
520
520
|
subject.frequency_modifier 2
|
521
521
|
subject.day "Mon, Sun"
|
522
|
-
expect { subject.after_created }.not_to raise_error
|
522
|
+
expect { subject.after_created }.not_to raise_error
|
523
523
|
end
|
524
524
|
|
525
525
|
it "raises argument error if frequency_modifier > 12" do
|
@@ -535,7 +535,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
535
535
|
it "creates scheduled task to run task monthly on Monday and Friday of first, second and third week of month" do
|
536
536
|
subject.frequency_modifier "first, second, third"
|
537
537
|
subject.day "Mon, Fri"
|
538
|
-
expect { subject.after_created }.not_to raise_error
|
538
|
+
expect { subject.after_created }.not_to raise_error
|
539
539
|
call_for_create_action
|
540
540
|
current_resource = call_for_load_current_resource
|
541
541
|
expect(current_resource.exists).to eq(true)
|
@@ -558,7 +558,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
558
558
|
it "creates scheduled task to run task monthly on every 6 months when frequency_modifier is 6 and to run on 1st and 2nd day of month" do
|
559
559
|
subject.frequency_modifier 6
|
560
560
|
subject.day "1, 2"
|
561
|
-
expect { subject.after_created }.not_to raise_error
|
561
|
+
expect { subject.after_created }.not_to raise_error
|
562
562
|
call_for_create_action
|
563
563
|
current_resource = call_for_load_current_resource
|
564
564
|
expect(current_resource.exists).to eq(true)
|
@@ -590,7 +590,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
590
590
|
|
591
591
|
it "creates scheduled task to run monthly to run last day of the month" do
|
592
592
|
subject.day "last"
|
593
|
-
expect { subject.after_created }.not_to raise_error
|
593
|
+
expect { subject.after_created }.not_to raise_error
|
594
594
|
call_for_create_action
|
595
595
|
current_resource = call_for_load_current_resource
|
596
596
|
expect(current_resource.exists).to eq(true)
|
@@ -611,7 +611,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
611
611
|
|
612
612
|
it "day property set as 'lastday' creates scheduled task to run monthly to run last day of the month" do
|
613
613
|
subject.day "lastday"
|
614
|
-
expect { subject.after_created }.not_to raise_error
|
614
|
+
expect { subject.after_created }.not_to raise_error
|
615
615
|
call_for_create_action
|
616
616
|
current_resource = call_for_load_current_resource
|
617
617
|
expect(current_resource.exists).to eq(true)
|
@@ -635,7 +635,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
635
635
|
it "creates scheduled task to run monthly on last week of the month" do
|
636
636
|
subject.frequency_modifier "last"
|
637
637
|
subject.day "Mon, Fri"
|
638
|
-
expect { subject.after_created }.not_to raise_error
|
638
|
+
expect { subject.after_created }.not_to raise_error
|
639
639
|
call_for_create_action
|
640
640
|
current_resource = call_for_load_current_resource
|
641
641
|
expect(current_resource.exists).to eq(true)
|
@@ -659,7 +659,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
659
659
|
context "when wild card (*) set as months" do
|
660
660
|
it "creates the scheduled task to run on 1st day of the all months" do
|
661
661
|
subject.months "*"
|
662
|
-
expect { subject.after_created }.not_to raise_error
|
662
|
+
expect { subject.after_created }.not_to raise_error
|
663
663
|
call_for_create_action
|
664
664
|
current_resource = call_for_load_current_resource
|
665
665
|
expect(current_resource.exists).to eq(true)
|
@@ -108,7 +108,7 @@ def mac_osx?
|
|
108
108
|
if File.exists? "/usr/bin/sw_vers"
|
109
109
|
result = ShellHelpers.shell_out("/usr/bin/sw_vers")
|
110
110
|
result.stdout.each_line do |line|
|
111
|
-
if
|
111
|
+
if /^ProductName:\sMac OS X.*$/.match?(line)
|
112
112
|
return true
|
113
113
|
end
|
114
114
|
end
|
@@ -58,7 +58,7 @@ shared_context "a command that can be executed as an alternate user" do
|
|
58
58
|
include Chef::Mixin::ShellOut
|
59
59
|
|
60
60
|
before do
|
61
|
-
shell_out!("icacls \"#{script_output_dir.
|
61
|
+
shell_out!("icacls \"#{script_output_dir.tr("/", '\\')}\" /grant \"authenticated users:(F)\"")
|
62
62
|
end
|
63
63
|
|
64
64
|
after do
|
@@ -75,7 +75,7 @@ shared_examples_for "an execute resource" do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
it "the old path property (that never worked) is not supported in chef >= 13" do
|
78
|
-
expect
|
78
|
+
expect(@resource).not_to respond_to(:path)
|
79
79
|
end
|
80
80
|
|
81
81
|
it "should accept an integer for the return code" do
|
@@ -94,6 +94,13 @@ describe Chef::Application do
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
+
describe "when enforce_license is set to false" do
|
98
|
+
it "should not check the license acceptance" do
|
99
|
+
expect(@app).to_not receive(:check_license_acceptance)
|
100
|
+
@app.run(enforce_license: false)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
97
104
|
it "should run the actual application" do
|
98
105
|
expect(@app).to receive(:run_application).and_return(true)
|
99
106
|
@app.run
|