chef 14.8.12-universal-mingw32 → 14.9.13-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/chef.gemspec +1 -1
- data/distro/ruby_bin_folder/msvcp140.dll +0 -0
- data/distro/ruby_bin_folder/vcruntime140.dll +0 -0
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/api_client/registration.rb +1 -1
- data/lib/chef/api_client_v1.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +4 -4
- data/lib/chef/client.rb +2 -2
- data/lib/chef/config_fetcher.rb +1 -1
- data/lib/chef/cookbook_uploader.rb +3 -3
- data/lib/chef/cookbook_version.rb +1 -1
- data/lib/chef/data_bag.rb +1 -1
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/environment.rb +1 -1
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +1 -1
- data/lib/chef/http.rb +3 -3
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +1 -1
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/raw.rb +1 -1
- data/lib/chef/knife/search.rb +1 -1
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/monkey_patches/net_http.rb +5 -1
- data/lib/chef/node.rb +4 -4
- data/lib/chef/node/mixin/immutablize_array.rb +5 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/org.rb +1 -1
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/provider/apt_repository.rb +1 -1
- data/lib/chef/provider/group/windows.rb +1 -0
- data/lib/chef/provider/remote_file/content.rb +1 -1
- data/lib/chef/provider/windows_task.rb +2 -2
- data/lib/chef/resource/group.rb +4 -0
- data/lib/chef/resource/homebrew_cask.rb +8 -8
- data/lib/chef/resource/homebrew_tap.rb +6 -6
- data/lib/chef/resource/openssl_ec_private_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_request.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +11 -7
- data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
- data/lib/chef/resource/sysctl.rb +6 -6
- data/lib/chef/resource/timezone.rb +17 -1
- data/lib/chef/resource/windows_ad_join.rb +11 -1
- data/lib/chef/resource/windows_certificate.rb +7 -4
- data/lib/chef/resource/windows_printer.rb +3 -3
- data/lib/chef/resource/windows_task.rb +17 -8
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_list/run_list_expansion.rb +1 -1
- data/lib/chef/user.rb +1 -1
- data/lib/chef/user_v1.rb +4 -4
- data/lib/chef/util/windows/net_group.rb +6 -0
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/net.rb +16 -0
- data/lib/chef/win32/net.rb +15 -0
- data/lib/chef/win32/version.rb +15 -15
- data/spec/functional/http/simple_spec.rb +10 -10
- data/spec/functional/resource/timezone_spec.rb +39 -0
- data/spec/functional/resource/windows_task_spec.rb +51 -7
- data/spec/integration/knife/client_create_spec.rb +1 -1
- data/spec/integration/knife/client_key_create_spec.rb +1 -1
- data/spec/integration/knife/cookbook_download_spec.rb +1 -1
- data/spec/integration/knife/cookbook_show_spec.rb +2 -2
- data/spec/integration/knife/data_bag_create_spec.rb +1 -1
- data/spec/integration/knife/environment_create_spec.rb +1 -1
- data/spec/integration/knife/node_create_spec.rb +1 -1
- data/spec/integration/knife/role_create_spec.rb +1 -1
- data/spec/support/shared/context/client.rb +1 -1
- data/spec/support/shared/unit/api_error_inspector.rb +5 -5
- data/spec/support/shared/unit/api_versioning.rb +2 -2
- data/spec/unit/api_client/registration_spec.rb +1 -1
- data/spec/unit/api_client_spec.rb +2 -2
- data/spec/unit/api_client_v1_spec.rb +3 -3
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +2 -2
- data/spec/unit/data_bag_item_spec.rb +1 -1
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +4 -4
- data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +2 -2
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +1 -1
- data/spec/unit/knife/cookbook_delete_spec.rb +3 -3
- data/spec/unit/knife/data_bag_create_spec.rb +2 -2
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/knife/supermarket_unshare_spec.rb +3 -3
- data/spec/unit/knife_spec.rb +7 -7
- data/spec/unit/mixin/api_version_request_handling_spec.rb +2 -2
- data/spec/unit/node_spec.rb +2 -2
- data/spec/unit/policy_builder/policyfile_spec.rb +2 -2
- data/spec/unit/provider/group/windows_spec.rb +15 -0
- data/spec/unit/provider/remote_file/content_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +17 -0
- data/spec/unit/resource/powershell_package_source_spec.rb +2 -2
- data/spec/unit/resource/windows_certificate.rb +7 -0
- data/spec/unit/resource/windows_task_spec.rb +61 -20
- data/spec/unit/resource_reporter_spec.rb +7 -7
- data/spec/unit/user_v1_spec.rb +2 -2
- metadata +15 -6
data/lib/chef/http.rb
CHANGED
@@ -152,7 +152,7 @@ class Chef
|
|
152
152
|
response.error! unless success_response?(response)
|
153
153
|
return_value
|
154
154
|
|
155
|
-
rescue Net::
|
155
|
+
rescue Net::HTTPClientException => e
|
156
156
|
http_attempts += 1
|
157
157
|
response = e.response
|
158
158
|
if response.kind_of?(Net::HTTPNotAcceptable) && version_retries - http_attempts > 0
|
@@ -190,7 +190,7 @@ class Chef
|
|
190
190
|
response.error!
|
191
191
|
end
|
192
192
|
tempfile
|
193
|
-
rescue Net::
|
193
|
+
rescue Net::HTTPClientException => e
|
194
194
|
http_attempts += 1
|
195
195
|
response = e.response
|
196
196
|
if response.kind_of?(Net::HTTPNotAcceptable) && version_retries - http_attempts > 0
|
@@ -245,7 +245,7 @@ class Chef
|
|
245
245
|
end
|
246
246
|
end
|
247
247
|
tempfile
|
248
|
-
rescue Net::
|
248
|
+
rescue Net::HTTPClientException => e
|
249
249
|
http_attempts += 1
|
250
250
|
response = e.response
|
251
251
|
if response.kind_of?(Net::HTTPNotAcceptable) && version_retries - http_attempts > 0
|
data/lib/chef/key.rb
CHANGED
data/lib/chef/knife.rb
CHANGED
@@ -455,7 +455,7 @@ class Chef
|
|
455
455
|
case e
|
456
456
|
when SystemExit
|
457
457
|
raise # make sure exit passes through.
|
458
|
-
when Net::
|
458
|
+
when Net::HTTPClientException, Net::HTTPFatalError
|
459
459
|
humanize_http_exception(e)
|
460
460
|
when OpenSSL::SSL::SSLError
|
461
461
|
ui.error "Could not establish a secure connection to the server."
|
@@ -88,7 +88,7 @@ class Chef
|
|
88
88
|
@available_versions ||= rest.get("cookbooks/#{@cookbook_name}").map do |name, url_and_version|
|
89
89
|
url_and_version["versions"].map { |url_by_version| url_by_version["version"] }
|
90
90
|
end.flatten
|
91
|
-
rescue Net::
|
91
|
+
rescue Net::HTTPClientException => e
|
92
92
|
if e.to_s =~ /^404/
|
93
93
|
ui.error("Cannot find a cookbook named #{@cookbook_name} to delete.")
|
94
94
|
nil
|
@@ -226,7 +226,7 @@ WARNING
|
|
226
226
|
|
227
227
|
def assert_environment_valid!
|
228
228
|
environment
|
229
|
-
rescue Net::
|
229
|
+
rescue Net::HTTPClientException => e
|
230
230
|
if e.response.code.to_s == "404"
|
231
231
|
ui.error "The environment #{config[:environment]} does not exist on the server, aborting."
|
232
232
|
Log.debug(e)
|
@@ -53,7 +53,7 @@ class Chef
|
|
53
53
|
begin
|
54
54
|
rest.get("data/#{@data_bag_name}")
|
55
55
|
ui.info("Data bag #{@data_bag_name} already exists")
|
56
|
-
rescue Net::
|
56
|
+
rescue Net::HTTPClientException => e
|
57
57
|
raise unless e.to_s =~ /^404/
|
58
58
|
# if it doesn't exists, try to create it
|
59
59
|
rest.post("data", { "name" => @data_bag_name })
|
data/lib/chef/knife/raw.rb
CHANGED
@@ -112,7 +112,7 @@ class Chef
|
|
112
112
|
rescue Timeout::Error => e
|
113
113
|
ui.error "Server timeout"
|
114
114
|
exit 1
|
115
|
-
rescue Net::
|
115
|
+
rescue Net::HTTPClientException => e
|
116
116
|
ui.error "Server responded with error #{e.response.code} \"#{e.response.message}\""
|
117
117
|
ui.error "Error Body: #{e.response.body}" if e.response.body && e.response.body != ""
|
118
118
|
exit 1
|
data/lib/chef/knife/search.rb
CHANGED
@@ -109,7 +109,7 @@ class Chef
|
|
109
109
|
result_items << formatted_item
|
110
110
|
result_count += 1
|
111
111
|
end
|
112
|
-
rescue Net::
|
112
|
+
rescue Net::HTTPClientException => e
|
113
113
|
msg = Chef::JSONCompat.from_json(e.response.body)["error"].first
|
114
114
|
ui.error("knife search failed: #{msg}")
|
115
115
|
exit 99
|
@@ -116,7 +116,7 @@ class Chef
|
|
116
116
|
data = noauth_rest.get("#{config[:supermarket_site]}/api/v1/cookbooks/#{@name_args[0]}")
|
117
117
|
data["category"]
|
118
118
|
rescue => e
|
119
|
-
return "Other" if e.kind_of?(Net::
|
119
|
+
return "Other" if e.kind_of?(Net::HTTPClientException) && e.response.code == "404"
|
120
120
|
ui.fatal("Unable to reach Supermarket: #{e.message}. Increase log verbosity (-VV) for more information.")
|
121
121
|
Chef::Log.trace("\n#{e.backtrace.join("\n")}")
|
122
122
|
exit(1)
|
@@ -48,7 +48,7 @@ class Chef
|
|
48
48
|
|
49
49
|
begin
|
50
50
|
rest.delete "#{config[:supermarket_site]}/api/v1/cookbooks/#{@name_args[0]}"
|
51
|
-
rescue Net::
|
51
|
+
rescue Net::HTTPClientException => e
|
52
52
|
raise e unless e.message =~ /Forbidden/
|
53
53
|
ui.error "Forbidden: You must be the maintainer of #{@cookbook_name} to unshare it."
|
54
54
|
exit 1
|
@@ -19,7 +19,7 @@
|
|
19
19
|
class Chef
|
20
20
|
module Mixin
|
21
21
|
module ApiVersionRequestHandling
|
22
|
-
# @param exeception [Net::
|
22
|
+
# @param exeception [Net::HTTPClientException] may or may not contain the x-ops-server-api-version header
|
23
23
|
# supported_client_versions:
|
24
24
|
# @param supported_client_versions [Array<Integer>] The API versions the client supports.
|
25
25
|
#
|
@@ -5,6 +5,10 @@ module ChefNetHTTPExceptionExtensions
|
|
5
5
|
attr_accessor :chef_rest_request
|
6
6
|
end
|
7
7
|
|
8
|
+
unless defined?(Net::HTTPClientException)
|
9
|
+
Net::HTTPClientException = Net::HTTPServerException
|
10
|
+
end
|
11
|
+
|
8
12
|
require "net/http"
|
9
13
|
module Net
|
10
14
|
class HTTPError
|
@@ -13,7 +17,7 @@ module Net
|
|
13
17
|
class HTTPRetriableError
|
14
18
|
include ChefNetHTTPExceptionExtensions
|
15
19
|
end
|
16
|
-
class
|
20
|
+
class HTTPClientException
|
17
21
|
include ChefNetHTTPExceptionExtensions
|
18
22
|
end
|
19
23
|
class HTTPFatalError
|
data/lib/chef/node.rb
CHANGED
@@ -575,7 +575,7 @@ class Chef
|
|
575
575
|
|
576
576
|
def self.find_or_create(node_name)
|
577
577
|
load(node_name)
|
578
|
-
rescue Net::
|
578
|
+
rescue Net::HTTPClientException => e
|
579
579
|
raise unless e.response.code == "404"
|
580
580
|
node = build(node_name)
|
581
581
|
node.create
|
@@ -608,7 +608,7 @@ class Chef
|
|
608
608
|
else
|
609
609
|
chef_server_rest.put("nodes/#{name}", data_for_save)
|
610
610
|
end
|
611
|
-
rescue Net::
|
611
|
+
rescue Net::HTTPClientException => e
|
612
612
|
if e.response.code == "404"
|
613
613
|
chef_server_rest.post("nodes", data_for_save)
|
614
614
|
else
|
@@ -622,7 +622,7 @@ class Chef
|
|
622
622
|
def create
|
623
623
|
chef_server_rest.post("nodes", data_for_save)
|
624
624
|
self
|
625
|
-
rescue Net::
|
625
|
+
rescue Net::HTTPClientException => e
|
626
626
|
# Chef Server before 12.3 rejects node JSON with 'policy_name' or
|
627
627
|
# 'policy_group' keys, but 'policy_name' will be detected first.
|
628
628
|
# Backcompat can be removed in 13.0
|
@@ -655,7 +655,7 @@ class Chef
|
|
655
655
|
trimmed_data = data_for_save_without_policyfile_attrs
|
656
656
|
|
657
657
|
chef_server_rest.put("nodes/#{name}", trimmed_data)
|
658
|
-
rescue Net::
|
658
|
+
rescue Net::HTTPClientException => e
|
659
659
|
raise e unless e.response.code == "404"
|
660
660
|
chef_server_rest.post("nodes", trimmed_data)
|
661
661
|
end
|
@@ -34,6 +34,7 @@ class Chef
|
|
34
34
|
:at,
|
35
35
|
:bsearch,
|
36
36
|
:bsearch_index,
|
37
|
+
:chain,
|
37
38
|
:chunk,
|
38
39
|
:chunk_while,
|
39
40
|
:collect,
|
@@ -43,6 +44,7 @@ class Chef
|
|
43
44
|
:count,
|
44
45
|
:cycle,
|
45
46
|
:detect,
|
47
|
+
:difference,
|
46
48
|
:dig,
|
47
49
|
:drop,
|
48
50
|
:drop_while,
|
@@ -56,6 +58,7 @@ class Chef
|
|
56
58
|
:empty?,
|
57
59
|
:entries,
|
58
60
|
:fetch,
|
61
|
+
:filter,
|
59
62
|
:find,
|
60
63
|
:find_all,
|
61
64
|
:find_index,
|
@@ -117,6 +120,7 @@ class Chef
|
|
117
120
|
:to_plist,
|
118
121
|
:to_set,
|
119
122
|
:transpose,
|
123
|
+
:union,
|
120
124
|
:uniq,
|
121
125
|
:values_at,
|
122
126
|
:zip,
|
@@ -139,6 +143,7 @@ class Chef
|
|
139
143
|
:delete_at,
|
140
144
|
:delete_if,
|
141
145
|
:fill,
|
146
|
+
:filter!,
|
142
147
|
:flatten!,
|
143
148
|
:insert,
|
144
149
|
:keep_if,
|
@@ -30,6 +30,7 @@ class Chef
|
|
30
30
|
:all?,
|
31
31
|
:any?,
|
32
32
|
:assoc,
|
33
|
+
:chain,
|
33
34
|
:chunk,
|
34
35
|
:chunk_while,
|
35
36
|
:collect,
|
@@ -58,6 +59,7 @@ class Chef
|
|
58
59
|
:entries,
|
59
60
|
:fetch,
|
60
61
|
:fetch_values,
|
62
|
+
:filter,
|
61
63
|
:find,
|
62
64
|
:find_all,
|
63
65
|
:find_index,
|
@@ -131,6 +133,7 @@ class Chef
|
|
131
133
|
:default_proc=,
|
132
134
|
:delete,
|
133
135
|
:delete_if,
|
136
|
+
:filter!,
|
134
137
|
:keep_if,
|
135
138
|
:map!,
|
136
139
|
:merge!,
|
data/lib/chef/org.rb
CHANGED
@@ -311,7 +311,7 @@ class Chef
|
|
311
311
|
# @api private
|
312
312
|
def policy
|
313
313
|
@policy ||= api_service.get(policyfile_location)
|
314
|
-
rescue Net::
|
314
|
+
rescue Net::HTTPClientException => e
|
315
315
|
raise ConfigurationError, "Error loading policyfile from `#{policyfile_location}': #{e.class} - #{e.message}"
|
316
316
|
end
|
317
317
|
|
@@ -271,7 +271,7 @@ class Chef
|
|
271
271
|
url = "https://launchpad.net/api/1.0/~#{owner}/+archive/#{repo}"
|
272
272
|
key_id = Chef::HTTP::Simple.new(url).get("signing_key_fingerprint").delete('"')
|
273
273
|
install_key_from_keyserver(key_id, "keyserver.ubuntu.com")
|
274
|
-
rescue Net::
|
274
|
+
rescue Net::HTTPClientException => e
|
275
275
|
raise "Could not access Launchpad ppa API: #{e.message}"
|
276
276
|
end
|
277
277
|
|
@@ -54,7 +54,7 @@ class Chef
|
|
54
54
|
as_uri(source)
|
55
55
|
end
|
56
56
|
raw_file = grab_file_from_uri(uri)
|
57
|
-
rescue SocketError, Errno::ECONNREFUSED, Errno::ENOENT, Errno::EACCES, Timeout::Error, Net::
|
57
|
+
rescue SocketError, Errno::ECONNREFUSED, Errno::ENOENT, Errno::EACCES, Timeout::Error, Net::HTTPClientException, Net::HTTPFatalError, Net::FTPError, Errno::ETIMEDOUT => e
|
58
58
|
logger.warn("#{@new_resource} cannot be downloaded from #{source}: #{e}")
|
59
59
|
if source = sources.shift
|
60
60
|
logger.info("#{@new_resource} trying to download from another mirror")
|
@@ -145,7 +145,7 @@ class Chef
|
|
145
145
|
task.working_directory = new_resource.cwd if new_resource.cwd
|
146
146
|
task.configure_settings(config_settings)
|
147
147
|
task.configure_principals(principal_settings)
|
148
|
-
task.set_account_information(new_resource.user, new_resource.password)
|
148
|
+
task.set_account_information(new_resource.user, new_resource.password, new_resource.interactive_enabled)
|
149
149
|
task.creator = new_resource.user
|
150
150
|
task.description = new_resource.description unless new_resource.description.nil?
|
151
151
|
task.activate(new_resource.task_name)
|
@@ -246,7 +246,7 @@ class Chef
|
|
246
246
|
|
247
247
|
def update_task(task)
|
248
248
|
converge_by("#{new_resource} task updated") do
|
249
|
-
task.set_account_information(new_resource.user, new_resource.password)
|
249
|
+
task.set_account_information(new_resource.user, new_resource.password, new_resource.interactive_enabled)
|
250
250
|
task.application_name = new_resource.command if new_resource.command
|
251
251
|
task.parameters = new_resource.command_arguments if new_resource.command_arguments
|
252
252
|
task.working_directory = new_resource.cwd if new_resource.cwd
|
data/lib/chef/resource/group.rb
CHANGED
@@ -51,6 +51,10 @@ class Chef
|
|
51
51
|
property :non_unique, [ TrueClass, FalseClass ], default: false,
|
52
52
|
description: "Allow gid duplication. May only be used with the Groupadd provider."
|
53
53
|
|
54
|
+
property :comment, String,
|
55
|
+
introduced: "14.9",
|
56
|
+
description: "Specifies a comment to associate with the local group."
|
57
|
+
|
54
58
|
alias_method :users, :members
|
55
59
|
end
|
56
60
|
end
|
@@ -55,11 +55,11 @@ class Chef
|
|
55
55
|
action :install do
|
56
56
|
description "Install an application packaged as a Homebrew cask."
|
57
57
|
|
58
|
-
homebrew_tap "
|
58
|
+
homebrew_tap "homebrew/cask" if new_resource.install_cask
|
59
59
|
|
60
60
|
unless casked?
|
61
|
-
converge_by("install cask #{new_resource.
|
62
|
-
shell_out!("#{new_resource.homebrew_path} cask install #{new_resource.
|
61
|
+
converge_by("install cask #{new_resource.cask_name} #{new_resource.options}") do
|
62
|
+
shell_out!("#{new_resource.homebrew_path} cask install #{new_resource.cask_name} #{new_resource.options}",
|
63
63
|
user: new_resource.owner,
|
64
64
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
65
65
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -70,11 +70,11 @@ class Chef
|
|
70
70
|
action :remove do
|
71
71
|
description "Remove an application packaged as a Homebrew cask."
|
72
72
|
|
73
|
-
homebrew_tap "
|
73
|
+
homebrew_tap "homebrew/cask" if new_resource.install_cask
|
74
74
|
|
75
75
|
if casked?
|
76
|
-
converge_by("uninstall cask #{new_resource.
|
77
|
-
shell_out!("#{new_resource.homebrew_path} cask uninstall #{new_resource.
|
76
|
+
converge_by("uninstall cask #{new_resource.cask_name}") do
|
77
|
+
shell_out!("#{new_resource.homebrew_path} cask uninstall #{new_resource.cask_name}",
|
78
78
|
user: new_resource.owner,
|
79
79
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
80
80
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -88,8 +88,8 @@ class Chef
|
|
88
88
|
alias_method :action_uninstall, :action_remove
|
89
89
|
|
90
90
|
def casked?
|
91
|
-
unscoped_name = new_resource.
|
92
|
-
shell_out!(
|
91
|
+
unscoped_name = new_resource.cask_name.split("/").last
|
92
|
+
shell_out!("#{new_resource.homebrew_path} cask list 2>/dev/null",
|
93
93
|
user: new_resource.owner,
|
94
94
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
95
95
|
cwd: ::Dir.home(new_resource.owner)).stdout.split.include?(unscoped_name)
|
@@ -55,9 +55,9 @@ class Chef
|
|
55
55
|
action :tap do
|
56
56
|
description "Add a Homebrew tap."
|
57
57
|
|
58
|
-
unless tapped?(new_resource.
|
59
|
-
converge_by("tap #{new_resource.
|
60
|
-
shell_out!("#{new_resource.homebrew_path} tap #{new_resource.full ? '--full' : ''} #{new_resource.
|
58
|
+
unless tapped?(new_resource.tap_name)
|
59
|
+
converge_by("tap #{new_resource.tap_name}") do
|
60
|
+
shell_out!("#{new_resource.homebrew_path} tap #{new_resource.full ? '--full' : ''} #{new_resource.tap_name} #{new_resource.url || ''}",
|
61
61
|
user: new_resource.owner,
|
62
62
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
63
63
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -68,9 +68,9 @@ class Chef
|
|
68
68
|
action :untap do
|
69
69
|
description "Remove a Homebrew tap."
|
70
70
|
|
71
|
-
if tapped?(new_resource.
|
72
|
-
converge_by("untap #{new_resource.
|
73
|
-
shell_out!("#{new_resource.homebrew_path} untap #{new_resource.
|
71
|
+
if tapped?(new_resource.tap_name)
|
72
|
+
converge_by("untap #{new_resource.tap_name}") do
|
73
|
+
shell_out!("#{new_resource.homebrew_path} untap #{new_resource.tap_name}",
|
74
74
|
user: new_resource.owner,
|
75
75
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
76
76
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -68,7 +68,7 @@ class Chef
|
|
68
68
|
unless new_resource.force || priv_key_file_valid?(new_resource.path, new_resource.key_pass)
|
69
69
|
converge_by("Create an EC private key #{new_resource.path}") do
|
70
70
|
log "Generating an #{new_resource.key_curve} "\
|
71
|
-
"EC key file at #{new_resource.
|
71
|
+
"EC key file at #{new_resource.path}, this may take some time"
|
72
72
|
|
73
73
|
if new_resource.key_pass
|
74
74
|
unencrypted_ec_key = gen_ec_priv_key(new_resource.key_curve)
|
@@ -89,7 +89,7 @@ class Chef
|
|
89
89
|
|
90
90
|
unless ::File.exist? new_resource.path
|
91
91
|
converge_by("Create CSR #{@new_resource}") do
|
92
|
-
file new_resource.
|
92
|
+
file new_resource.path do
|
93
93
|
owner new_resource.owner unless new_resource.owner.nil?
|
94
94
|
group new_resource.group unless new_resource.group.nil?
|
95
95
|
mode new_resource.mode unless new_resource.mode.nil?
|
@@ -55,10 +55,14 @@ class Chef
|
|
55
55
|
description: "The location where scripts will be published to for this source. Only valid if the provider is 'PowerShellGet'."
|
56
56
|
|
57
57
|
load_current_value do
|
58
|
-
cmd = load_resource_state_script(
|
58
|
+
cmd = load_resource_state_script(source_name)
|
59
59
|
repo = powershell_out!(cmd)
|
60
|
-
|
61
|
-
|
60
|
+
if repo.stdout.empty?
|
61
|
+
current_value_does_not_exist!
|
62
|
+
else
|
63
|
+
status = Chef::JSONCompat.from_json(repo.stdout)
|
64
|
+
end
|
65
|
+
url status["url"]
|
62
66
|
trusted status["trusted"]
|
63
67
|
provider_name status["provider_name"]
|
64
68
|
publish_location status["publish_location"]
|
@@ -113,7 +117,7 @@ class Chef
|
|
113
117
|
|
114
118
|
action_class do
|
115
119
|
def package_source_exists?
|
116
|
-
cmd = powershell_out!("(Get-PackageSource -Name '#{new_resource.source_name}').Name")
|
120
|
+
cmd = powershell_out!("(Get-PackageSource -Name '#{new_resource.source_name}' -WarningAction SilentlyContinue).Name")
|
117
121
|
cmd.stdout.downcase.strip == new_resource.source_name.downcase
|
118
122
|
end
|
119
123
|
|
@@ -145,6 +149,9 @@ class Chef
|
|
145
149
|
|
146
150
|
def load_resource_state_script(name)
|
147
151
|
<<-EOH
|
152
|
+
$PSDefaultParameterValues = @{
|
153
|
+
"*:WarningAction" = "SilentlyContinue"
|
154
|
+
}
|
148
155
|
if(Get-PackageSource -Name '#{name}' -ErrorAction SilentlyContinue) {
|
149
156
|
if ((Get-PackageSource -Name '#{name}').ProviderName -eq 'PowerShellGet') {
|
150
157
|
(Get-PSRepository -Name '#{name}') | Select @{n='source_name';e={$_.Name}}, @{n='url';e={$_.SourceLocation}},
|
@@ -156,9 +163,6 @@ class Chef
|
|
156
163
|
@{n='provider_name';e={$_.ProviderName}}, @{n='trusted';e={$_.IsTrusted}} | ConvertTo-Json
|
157
164
|
}
|
158
165
|
}
|
159
|
-
else {
|
160
|
-
"" | Select source_name, url, provider_name, trusted | ConvertTo-Json
|
161
|
-
}
|
162
166
|
EOH
|
163
167
|
end
|
164
168
|
end
|