chef 12.16.42 → 12.17.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 -1
- data/README.md +20 -5
- data/Rakefile +17 -0
- data/VERSION +1 -1
- data/acceptance/Gemfile.lock +32 -23
- data/distro/common/markdown/man1/knife-configure.mkd +3 -2
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +1 -1
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +1 -1
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +1 -1
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +1 -1
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +1 -1
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +1 -1
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +1 -1
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +1 -1
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +1 -1
- data/lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb +1 -1
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/application.rb +1 -1
- data/lib/chef/application/exit_code.rb +3 -3
- data/lib/chef/chef_class.rb +15 -5
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +12 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +19 -0
- data/lib/chef/client.rb +1 -0
- data/lib/chef/cookbook/metadata.rb +2 -2
- data/lib/chef/cookbook_version.rb +4 -4
- data/lib/chef/data_bag.rb +1 -1
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/data_collector.rb +20 -13
- data/lib/chef/data_collector/messages.rb +0 -1
- data/lib/chef/data_collector/messages/helpers.rb +2 -2
- data/lib/chef/decorator/unchain.rb +2 -2
- data/lib/chef/deprecated.rb +190 -0
- data/lib/chef/deprecation/provider/remote_directory.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +3 -4
- data/lib/chef/dsl/method_missing.rb +2 -2
- data/lib/chef/dsl/resources.rb +2 -2
- data/lib/chef/environment.rb +1 -1
- data/lib/chef/exceptions.rb +1 -1
- data/lib/chef/formatters/base.rb +11 -1
- data/lib/chef/formatters/doc.rb +13 -4
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife/client_delete.rb +12 -9
- data/lib/chef/knife/configure.rb +1 -1
- data/lib/chef/knife/core/bootstrap_context.rb +25 -1
- data/lib/chef/knife/core/subcommand_loader.rb +3 -3
- data/lib/chef/knife/core/ui.rb +1 -1
- data/lib/chef/knife/node_delete.rb +6 -6
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/deprecation.rb +4 -10
- data/lib/chef/mixin/powershell_type_coercions.rb +19 -19
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/node.rb +2 -2
- data/lib/chef/node/attribute.rb +3 -4
- data/lib/chef/node/common_api.rb +1 -1
- data/lib/chef/node/mixin/state_tracking.rb +5 -2
- data/lib/chef/node_map.rb +2 -2
- data/lib/chef/org.rb +1 -1
- data/lib/chef/platform/rebooter.rb +3 -1
- data/lib/chef/policy_builder/expand_node_object.rb +1 -1
- data/lib/chef/property.rb +5 -5
- data/lib/chef/provider.rb +4 -4
- data/lib/chef/provider/launchd.rb +1 -1
- data/lib/chef/provider/link.rb +6 -0
- data/lib/chef/provider/mount.rb +2 -0
- data/lib/chef/provider/mount/mount.rb +1 -1
- data/lib/chef/provider/ohai.rb +5 -3
- data/lib/chef/provider/package/cab.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +2 -2
- data/lib/chef/provider/package/easy_install.rb +2 -2
- data/lib/chef/provider/package/msu.rb +162 -0
- data/lib/chef/provider/package/powershell.rb +114 -0
- data/lib/chef/provider/package/yum.rb +1 -1
- data/lib/chef/provider/yum_repository.rb +6 -7
- data/lib/chef/provider_resolver.rb +2 -2
- data/lib/chef/providers.rb +2 -0
- data/lib/chef/resource.rb +3 -5
- data/lib/chef/resource/apt_update.rb +1 -1
- data/lib/chef/resource/chef_gem.rb +2 -3
- data/lib/chef/resource/file/verification.rb +1 -1
- data/lib/chef/resource/launchd.rb +48 -8
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/msu_package.rb +47 -0
- data/lib/chef/resource/ohai.rb +5 -25
- data/lib/chef/resource/powershell_package.rb +41 -0
- data/lib/chef/resource/reboot.rb +1 -1
- data/lib/chef/resource/user.rb +2 -2
- data/lib/chef/resource_builder.rb +4 -4
- data/lib/chef/resource_resolver.rb +2 -3
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/rest.rb +1 -1
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_context.rb +3 -3
- data/lib/chef/shell/ext.rb +2 -2
- data/lib/chef/user.rb +3 -3
- data/lib/chef/user_v1.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/security.rb +12 -12
- data/spec/data/sample_msu1.xml +10 -0
- data/spec/data/sample_msu2.xml +14 -0
- data/spec/data/sample_msu3.xml +16 -0
- data/spec/functional/rebooter_spec.rb +3 -3
- data/spec/functional/resource/link_spec.rb +62 -1
- data/spec/functional/resource/msu_package_spec.rb +84 -0
- data/spec/functional/resource/registry_spec.rb +3 -3
- data/spec/functional/resource/rpm_spec.rb +7 -10
- data/spec/integration/solo/solo_spec.rb +50 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/support/platform_helpers.rb +16 -8
- data/spec/unit/application/exit_code_spec.rb +3 -15
- data/spec/unit/data_collector_spec.rb +6 -16
- data/spec/unit/deprecated_spec.rb +59 -0
- data/spec/unit/deprecation_spec.rb +1 -8
- data/spec/unit/handler_spec.rb +2 -2
- data/spec/unit/knife/client_delete_spec.rb +16 -0
- data/spec/unit/knife/configure_spec.rb +1 -1
- data/spec/unit/knife/cookbook_metadata_spec.rb +116 -113
- data/spec/unit/knife/core/bootstrap_context_spec.rb +55 -5
- data/spec/unit/knife/node_delete_spec.rb +19 -10
- data/spec/unit/mixin/shell_out_spec.rb +0 -1
- data/spec/unit/node/immutable_collections_spec.rb +5 -0
- data/spec/unit/node/vivid_mash_spec.rb +11 -0
- data/spec/unit/node_spec.rb +2 -2
- data/spec/unit/provider/launchd_spec.rb +81 -3
- data/spec/unit/provider/mount/mount_spec.rb +1 -1
- data/spec/unit/provider/mount_spec.rb +7 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +5 -5
- data/spec/unit/provider/package/easy_install_spec.rb +6 -6
- data/spec/unit/provider/package/msu_spec.rb +283 -0
- data/spec/unit/provider/package/powershell_spec.rb +337 -0
- data/spec/unit/provider/service/macosx_spec.rb +1 -1
- data/spec/unit/provider/subversion_spec.rb +9 -0
- data/spec/unit/provider/user/linux_spec.rb +7 -1
- data/spec/unit/recipe_spec.rb +43 -11
- data/spec/unit/resource/apt_update_spec.rb +17 -25
- data/spec/unit/resource/file/verification_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +2 -1
- data/spec/unit/resource/msu_package_spec.rb +49 -0
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/powershell_package_spec.rb +68 -0
- data/spec/unit/resource_reporter_spec.rb +4 -4
- data/spec/unit/run_status_spec.rb +1 -1
- data/tasks/announce.rb +58 -0
- data/tasks/changelog.rb +26 -6
- data/tasks/templates/prerelease.md.erb +35 -0
- data/tasks/templates/release.md.erb +34 -0
- metadata +21 -4
@@ -37,7 +37,7 @@ class Chef
|
|
37
37
|
# method_missing manually. Not a fan. Not. A. Fan.
|
38
38
|
#
|
39
39
|
if respond_to?(method_symbol)
|
40
|
-
Chef.
|
40
|
+
Chef.deprecated(:internal_api, "Calling method_missing(#{method_symbol.inspect}) directly is deprecated in Chef 12 and will be removed in Chef 13. Use public_send() or send() instead.")
|
41
41
|
return send(method_symbol, *args, &block)
|
42
42
|
end
|
43
43
|
|
@@ -46,7 +46,7 @@ class Chef
|
|
46
46
|
# never called. DEPRECATED.
|
47
47
|
#
|
48
48
|
if run_context.definitions.has_key?(method_symbol.to_sym)
|
49
|
-
Chef.
|
49
|
+
Chef.deprecated(:internal_api, "Definition #{method_symbol} (#{run_context.definitions[method_symbol.to_sym]}) was added to the run_context without calling Chef::DSL::Definitions.add_definition(#{method_symbol.to_sym.inspect}). This will become required in Chef 13.")
|
50
50
|
Chef::DSL::Definitions.add_definition(method_symbol)
|
51
51
|
return send(method_symbol, *args, &block)
|
52
52
|
end
|
data/lib/chef/dsl/resources.rb
CHANGED
@@ -36,14 +36,14 @@ class Chef
|
|
36
36
|
begin
|
37
37
|
module_eval(<<-EOM, __FILE__, __LINE__ + 1)
|
38
38
|
def #{dsl_name}(*args, &block)
|
39
|
-
Chef.
|
39
|
+
Chef.deprecated(:internal_api, "Cannot create resource #{dsl_name} with more than one argument. All arguments except the name (\#{args[0].inspect}) will be ignored. This will cause an error in Chef 13. Arguments: \#{args}") if args.size > 1
|
40
40
|
declare_resource(#{dsl_name.inspect}, args[0], caller[0], &block)
|
41
41
|
end
|
42
42
|
EOM
|
43
43
|
rescue SyntaxError
|
44
44
|
# Handle the case where dsl_name has spaces, etc.
|
45
45
|
define_method(dsl_name.to_sym) do |*args, &block|
|
46
|
-
Chef.
|
46
|
+
Chef.deprecated(:internal_api, "Cannot create resource #{dsl_name} with more than one argument. All arguments except the name (#{args[0].inspect}) will be ignored. This will cause an error in Chef 13. Arguments: #{args}") if args.size > 1
|
47
47
|
declare_resource(dsl_name, args[0], caller[0], &block)
|
48
48
|
end
|
49
49
|
end
|
data/lib/chef/environment.rb
CHANGED
@@ -217,7 +217,7 @@ class Chef
|
|
217
217
|
end
|
218
218
|
|
219
219
|
def self.json_create(o)
|
220
|
-
Chef.
|
220
|
+
Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::Environment#from_hash")
|
221
221
|
from_hash(o)
|
222
222
|
end
|
223
223
|
|
data/lib/chef/exceptions.rb
CHANGED
@@ -262,7 +262,7 @@ class Chef
|
|
262
262
|
|
263
263
|
class ChildConvergeError < RuntimeError; end
|
264
264
|
|
265
|
-
class DeprecatedFeatureError < RuntimeError
|
265
|
+
class DeprecatedFeatureError < RuntimeError
|
266
266
|
def initalize(message)
|
267
267
|
super("#{message} (raising error due to treat_deprecation_warnings_as_errors being set)")
|
268
268
|
end
|
data/lib/chef/formatters/base.rb
CHANGED
@@ -213,7 +213,17 @@ class Chef
|
|
213
213
|
end
|
214
214
|
|
215
215
|
def deprecation(message, location = caller(2..2)[0])
|
216
|
-
|
216
|
+
out = if is_structured_deprecation?(message)
|
217
|
+
message.inspect
|
218
|
+
else
|
219
|
+
"#{message} at #{location}"
|
220
|
+
end
|
221
|
+
|
222
|
+
Chef::Log.deprecation(out)
|
223
|
+
end
|
224
|
+
|
225
|
+
def is_structured_deprecation?(deprecation)
|
226
|
+
deprecation.kind_of?(Chef::Deprecated::Base)
|
217
227
|
end
|
218
228
|
|
219
229
|
def is_formatter?
|
data/lib/chef/formatters/doc.rb
CHANGED
@@ -61,9 +61,10 @@ class Chef
|
|
61
61
|
if !deprecations.empty?
|
62
62
|
puts_line ""
|
63
63
|
puts_line "Deprecated features used!"
|
64
|
-
deprecations.each do |message,
|
64
|
+
deprecations.each do |message, details|
|
65
|
+
locations = details[:locations]
|
65
66
|
if locations.size == 1
|
66
|
-
puts_line " #{message} at
|
67
|
+
puts_line " #{message} at 1 location:"
|
67
68
|
else
|
68
69
|
puts_line " #{message} at #{locations.size} locations:"
|
69
70
|
end
|
@@ -74,6 +75,9 @@ class Chef
|
|
74
75
|
prefix = " "
|
75
76
|
end
|
76
77
|
end
|
78
|
+
unless details[:url].nil?
|
79
|
+
puts_line " See #{details[:url]} for further details."
|
80
|
+
end
|
77
81
|
end
|
78
82
|
puts_line ""
|
79
83
|
end
|
@@ -416,8 +420,13 @@ class Chef
|
|
416
420
|
end
|
417
421
|
|
418
422
|
# Save deprecations to the screen until the end
|
419
|
-
|
420
|
-
|
423
|
+
if is_structured_deprecation?(message)
|
424
|
+
url = message.url
|
425
|
+
message = message.message
|
426
|
+
end
|
427
|
+
|
428
|
+
deprecations[message] ||= { url: url, locations: Set.new }
|
429
|
+
deprecations[message][:locations] << location
|
421
430
|
end
|
422
431
|
|
423
432
|
def indent
|
data/lib/chef/key.rb
CHANGED
@@ -223,7 +223,7 @@ class Chef
|
|
223
223
|
end
|
224
224
|
|
225
225
|
def json_create(json)
|
226
|
-
Chef.
|
226
|
+
Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::Key#from_json or one of the load_by methods.")
|
227
227
|
Chef::Key.from_json(json)
|
228
228
|
end
|
229
229
|
|
@@ -32,29 +32,32 @@ class Chef
|
|
32
32
|
:long => "--delete-validators",
|
33
33
|
:description => "Force deletion of client if it's a validator"
|
34
34
|
|
35
|
-
banner "knife client delete CLIENT (options)"
|
35
|
+
banner "knife client delete [CLIENT[,CLIENT]] (options)"
|
36
36
|
|
37
37
|
def run
|
38
|
-
@
|
39
|
-
|
40
|
-
if @client_name.nil?
|
38
|
+
if @name_args.length == 0
|
41
39
|
show_usage
|
42
|
-
ui.fatal("You must specify
|
40
|
+
ui.fatal("You must specify at least one client name")
|
43
41
|
exit 1
|
44
42
|
end
|
45
43
|
|
46
|
-
|
47
|
-
|
44
|
+
@name_args.each do |client_name|
|
45
|
+
delete_client(client_name)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def delete_client(client_name)
|
50
|
+
delete_object(Chef::ApiClientV1, client_name, "client") do
|
51
|
+
object = Chef::ApiClientV1.load(client_name)
|
48
52
|
if object.validator
|
49
53
|
unless config[:delete_validators]
|
50
|
-
ui.fatal("You must specify --delete-validators to delete the validator client #{
|
54
|
+
ui.fatal("You must specify --delete-validators to delete the validator client #{client_name}")
|
51
55
|
exit 2
|
52
56
|
end
|
53
57
|
end
|
54
58
|
object.destroy
|
55
59
|
end
|
56
60
|
end
|
57
|
-
|
58
61
|
end
|
59
62
|
end
|
60
63
|
end
|
data/lib/chef/knife/configure.rb
CHANGED
@@ -133,7 +133,7 @@ EOH
|
|
133
133
|
|
134
134
|
def ask_user_for_config
|
135
135
|
server_name = guess_servername
|
136
|
-
@chef_server = config[:chef_server_url] || ask_question("Please enter the chef server URL: ", :default => "https://#{server_name}
|
136
|
+
@chef_server = config[:chef_server_url] || ask_question("Please enter the chef server URL: ", :default => "https://#{server_name}/organizations/myorg")
|
137
137
|
if config[:initial]
|
138
138
|
@new_client_name = config[:node_name] || ask_question("Please enter a name for the new user: ", :default => Etc.getlogin)
|
139
139
|
@admin_client_name = config[:admin_client_name] || ask_question("Please enter the existing admin name: ", :default => "admin")
|
@@ -67,12 +67,36 @@ class Chef
|
|
67
67
|
@trusted_certs ||= trusted_certs_content
|
68
68
|
end
|
69
69
|
|
70
|
+
def get_log_location
|
71
|
+
if !(@chef_config[:config_log_location].class == IO ) && (@chef_config[:config_log_location].nil? || @chef_config[:config_log_location].to_s.empty?)
|
72
|
+
"STDOUT"
|
73
|
+
elsif @chef_config[:config_log_location].equal?(:win_evt)
|
74
|
+
raise "The value :win_evt is not supported for config_log_location on Linux Platforms \n"
|
75
|
+
elsif @chef_config[:config_log_location].equal?(:syslog)
|
76
|
+
":syslog"
|
77
|
+
elsif @chef_config[:config_log_location].equal?(STDOUT)
|
78
|
+
"STDOUT"
|
79
|
+
elsif @chef_config[:config_log_location].equal?(STDERR)
|
80
|
+
"STDERR"
|
81
|
+
elsif @chef_config[:config_log_location]
|
82
|
+
%Q{"#{@chef_config[:config_log_location]}"}
|
83
|
+
else
|
84
|
+
"STDOUT"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
70
88
|
def config_content
|
71
89
|
client_rb = <<-CONFIG
|
72
|
-
log_location STDOUT
|
73
90
|
chef_server_url "#{@chef_config[:chef_server_url]}"
|
74
91
|
validation_client_name "#{@chef_config[:validation_client_name]}"
|
75
92
|
CONFIG
|
93
|
+
|
94
|
+
if !(@chef_config[:config_log_level].nil? || @chef_config[:config_log_level].empty?)
|
95
|
+
client_rb << %Q{log_level :#{@chef_config[:config_log_level]}\n}
|
96
|
+
end
|
97
|
+
|
98
|
+
client_rb << "log_location #{get_log_location}\n"
|
99
|
+
|
76
100
|
if @config[:chef_node_name]
|
77
101
|
client_rb << %Q{node_name "#{@config[:chef_node_name]}"\n}
|
78
102
|
else
|
@@ -51,7 +51,7 @@ class Chef
|
|
51
51
|
Chef::Log.debug("Using autogenerated hashed command manifest #{plugin_manifest_path}")
|
52
52
|
Knife::SubcommandLoader::HashedCommandLoader.new(chef_config_dir, plugin_manifest)
|
53
53
|
elsif custom_manifest?
|
54
|
-
Chef.
|
54
|
+
Chef.deprecated(:internal_api, "Using custom manifest #{plugin_manifest_path} is deprecated. Please use a `knife rehash` autogenerated manifest instead.")
|
55
55
|
Knife::SubcommandLoader::CustomManifestLoader.new(chef_config_dir, plugin_manifest)
|
56
56
|
else
|
57
57
|
Knife::SubcommandLoader::GemGlobLoader.new(chef_config_dir)
|
@@ -90,7 +90,7 @@ class Chef
|
|
90
90
|
# Deprecated and un-used instance variable.
|
91
91
|
@env = env
|
92
92
|
unless env.nil?
|
93
|
-
Chef.
|
93
|
+
Chef.deprecated(:internal_api, "The env argument to Chef::Knife::SubcommandLoader is deprecated. If you are using env to inject/mock HOME, consider mocking Chef::Util::PathHelper.home instead.")
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -154,7 +154,7 @@ class Chef
|
|
154
154
|
# to get in the past.
|
155
155
|
#
|
156
156
|
def subcommand_files
|
157
|
-
Chef.
|
157
|
+
Chef.deprecated :internal_api, "Using Chef::Knife::SubcommandLoader directly is deprecated.
|
158
158
|
Please use Chef::Knife::SubcommandLoader.for_config(chef_config_dir, env)"
|
159
159
|
@subcommand_files ||= if Chef::Knife::SubcommandLoader.plugin_manifest?
|
160
160
|
Chef::Knife::SubcommandLoader::CustomManifestLoader.new(chef_config_dir, env).subcommand_files
|
data/lib/chef/knife/core/ui.rb
CHANGED
@@ -186,7 +186,7 @@ class Chef
|
|
186
186
|
|
187
187
|
if parse_output
|
188
188
|
if object_class.nil?
|
189
|
-
Chef.
|
189
|
+
Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please pass in the class to inflate or use #edit_hash")
|
190
190
|
Chef::JSONCompat.from_json(output)
|
191
191
|
else
|
192
192
|
object_class.from_hash(Chef::JSONCompat.parse(output))
|
@@ -27,18 +27,18 @@ class Chef
|
|
27
27
|
require "chef/json_compat"
|
28
28
|
end
|
29
29
|
|
30
|
-
banner "knife node delete NODE (options)"
|
30
|
+
banner "knife node delete [NODE[,NODE]] (options)"
|
31
31
|
|
32
32
|
def run
|
33
|
-
@
|
34
|
-
|
35
|
-
if @node_name.nil?
|
33
|
+
if @name_args.length == 0
|
36
34
|
show_usage
|
37
|
-
ui.fatal("You must specify
|
35
|
+
ui.fatal("You must specify at least one node name")
|
38
36
|
exit 1
|
39
37
|
end
|
40
38
|
|
41
|
-
|
39
|
+
@name_args.each do |node_name|
|
40
|
+
delete_object(Chef::Node, node_name)
|
41
|
+
end
|
42
42
|
end
|
43
43
|
|
44
44
|
end
|
data/lib/chef/log.rb
CHANGED
@@ -65,7 +65,7 @@ class Chef
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def method_missing(method_name, *args, &block)
|
68
|
-
|
68
|
+
deprecated_msg(caller[0..3])
|
69
69
|
@target.send(method_name, *args, &block)
|
70
70
|
end
|
71
71
|
|
@@ -75,7 +75,7 @@ class Chef
|
|
75
75
|
|
76
76
|
private
|
77
77
|
|
78
|
-
def
|
78
|
+
def deprecated_msg(*called_from)
|
79
79
|
called_from = called_from.flatten
|
80
80
|
log("Accessing #{@ivar_name} by the variable @#{@ivar_name} is deprecated. Support will be removed in a future release.")
|
81
81
|
log("Please update your cookbooks to use #{@ivar_name} in place of @#{@ivar_name}. Accessed from:")
|
@@ -101,20 +101,14 @@ class Chef
|
|
101
101
|
|
102
102
|
def deprecated_attr_reader(name, alternative, level = :warn)
|
103
103
|
define_method(name) do
|
104
|
-
Chef.
|
105
|
-
Chef.log_deprecation(alternative)
|
106
|
-
Chef.log_deprecation("Called from:")
|
107
|
-
caller[0..3].each { |c| Chef.log_deprecation(c) }
|
104
|
+
Chef.deprecated(:internal_api, "#{self.class}.#{name} is deprecated. Support will be removed in a future release. #{alternative}")
|
108
105
|
instance_variable_get("@#{name}")
|
109
106
|
end
|
110
107
|
end
|
111
108
|
|
112
109
|
def deprecated_attr_writer(name, alternative, level = :warn)
|
113
110
|
define_method("#{name}=") do |value|
|
114
|
-
Chef.
|
115
|
-
Chef.log_deprecation(alternative)
|
116
|
-
Chef.log_deprecation("Called from:")
|
117
|
-
caller[0..3].each { |c| Chef.log_deprecation(c) }
|
111
|
+
Chef.deprecated(:internal_api, "Writing to #{self.class}.#{name} with #{name}= is deprecated. Support will be removed in a future release. #{alternative}")
|
118
112
|
instance_variable_set("@#{name}", value)
|
119
113
|
end
|
120
114
|
end
|
@@ -21,31 +21,31 @@ class Chef
|
|
21
21
|
module Mixin
|
22
22
|
module PowershellTypeCoercions
|
23
23
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
24
|
+
def type_coercion(value)
|
25
|
+
case value
|
26
|
+
when Integer, Float
|
27
|
+
value.to_s
|
28
|
+
when FalseClass
|
29
|
+
"$false"
|
30
|
+
when TrueClass
|
31
|
+
"$true"
|
32
|
+
when Hash, Chef::Node::ImmutableMash
|
33
|
+
translate_hash(value)
|
34
|
+
when Array, Chef::Node::ImmutableArray
|
35
|
+
translate_array(value)
|
36
|
+
end
|
35
37
|
end
|
36
38
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
40
|
-
if translation
|
41
|
-
translation[:type].call(value)
|
42
|
-
elsif value.respond_to? :to_psobject
|
39
|
+
def psobject_conversion(value)
|
40
|
+
if value.respond_to?(:to_psobject)
|
43
41
|
"(#{value.to_psobject})"
|
44
|
-
else
|
45
|
-
safe_string(value.to_s)
|
46
42
|
end
|
47
43
|
end
|
48
44
|
|
45
|
+
def translate_type(value)
|
46
|
+
type_coercion(value) || psobject_conversion(value) || safe_string(value.to_s)
|
47
|
+
end
|
48
|
+
|
49
49
|
private
|
50
50
|
|
51
51
|
def translate_hash(x)
|
data/lib/chef/mixin/shell_out.rb
CHANGED
@@ -118,7 +118,7 @@ class Chef
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def deprecate_option(old_option, new_option)
|
121
|
-
Chef.
|
121
|
+
Chef.deprecated :internal_api, "Chef::Mixin::ShellOut option :#{old_option} is deprecated. Use :#{new_option}"
|
122
122
|
end
|
123
123
|
|
124
124
|
def io_for_live_stream
|
data/lib/chef/node.rb
CHANGED
@@ -201,7 +201,7 @@ class Chef
|
|
201
201
|
end
|
202
202
|
|
203
203
|
def set
|
204
|
-
Chef.
|
204
|
+
Chef.deprecated(:attributes, "node.set is deprecated and will be removed in Chef 14, please use node.default/node.override (or node.normal only if you really need persistence)")
|
205
205
|
normal
|
206
206
|
end
|
207
207
|
|
@@ -509,7 +509,7 @@ class Chef
|
|
509
509
|
|
510
510
|
# Create a Chef::Node from JSON
|
511
511
|
def self.json_create(o)
|
512
|
-
Chef.
|
512
|
+
Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::Node#from_hash")
|
513
513
|
from_hash(o)
|
514
514
|
end
|
515
515
|
|
data/lib/chef/node/attribute.rb
CHANGED
@@ -430,7 +430,7 @@ class Chef
|
|
430
430
|
end
|
431
431
|
|
432
432
|
def set_unless(*args)
|
433
|
-
Chef.
|
433
|
+
Chef.deprecated(:attributes, "node.set_unless is deprecated and will be removed in Chef 14, please use node.default_unless/node.override_unless (or node.normal_unless if you really need persistence)")
|
434
434
|
return Decorator::Unchain.new(self, :default_unless) unless args.length > 0
|
435
435
|
write(:normal, *args) if read(*args[0...-1]).nil?
|
436
436
|
end
|
@@ -481,15 +481,14 @@ class Chef
|
|
481
481
|
if symbol == :to_ary
|
482
482
|
merged_attributes.send(symbol, *args)
|
483
483
|
elsif args.empty?
|
484
|
-
|
485
|
-
Chef.log_deprecation %q{method access to node attributes (node.foo.bar) is deprecated and will be removed in Chef 13, please use bracket syntax (node["foo"]["bar"])}
|
484
|
+
Chef.deprecated(:attributes, %q{method access to node attributes (node.foo.bar) is deprecated and will be removed in Chef 13, please use bracket syntax (node["foo"]["bar"])})
|
486
485
|
if key?(symbol)
|
487
486
|
self[symbol]
|
488
487
|
else
|
489
488
|
raise NoMethodError, "Undefined method or attribute `#{symbol}' on `node'"
|
490
489
|
end
|
491
490
|
elsif symbol.to_s =~ /=$/
|
492
|
-
Chef.
|
491
|
+
Chef.deprecated(:attributes, %q{method setting of node attributes (node.foo="bar") is deprecated and will be removed in Chef 13, please use bracket syntax (node["foo"]="bar")})
|
493
492
|
key_to_set = symbol.to_s[/^(.+)=$/, 1]
|
494
493
|
self[key_to_set] = (args.length == 1 ? args[0] : args)
|
495
494
|
else
|
data/lib/chef/node/common_api.rb
CHANGED
@@ -24,7 +24,7 @@ class Chef
|
|
24
24
|
# method-style access to attributes
|
25
25
|
|
26
26
|
def valid_container?(obj, key)
|
27
|
-
return obj.is_a?(Hash) || (obj.is_a?(Array) && key.is_a?(
|
27
|
+
return obj.is_a?(Hash) || (obj.is_a?(Array) && key.is_a?(Integer))
|
28
28
|
end
|
29
29
|
|
30
30
|
private :valid_container?
|
@@ -34,14 +34,17 @@ class Chef
|
|
34
34
|
@__precedence__ = precedence
|
35
35
|
end
|
36
36
|
|
37
|
-
def [](
|
37
|
+
def [](*args)
|
38
38
|
ret = super
|
39
|
+
key = args.first
|
39
40
|
next_path = [ __path__, convert_key(key) ].flatten.compact
|
40
41
|
copy_state_to(ret, next_path)
|
41
42
|
end
|
42
43
|
|
43
|
-
def []=(
|
44
|
+
def []=(*args)
|
44
45
|
ret = super
|
46
|
+
key = args.first
|
47
|
+
value = args.last
|
45
48
|
next_path = [ __path__, convert_key(key) ].flatten.compact
|
46
49
|
send_attribute_changed_event(next_path, value)
|
47
50
|
copy_state_to(ret, next_path)
|