diff options
author | John Keiser <john@johnkeiser.com> | 2016-08-02 12:37:22 -0700 |
---|---|---|
committer | John Keiser <john@johnkeiser.com> | 2016-08-03 10:39:53 -0700 |
commit | 5311384c4a35dc24b73e9d564ba1290910aecdcd (patch) | |
tree | e2da9f4a6c3949b6aa2294cf0e8af7b85abbd25b | |
parent | af65e95bb59223b6fb67133875b3e85cc83b4c78 (diff) | |
download | chef-5311384c4a35dc24b73e9d564ba1290910aecdcd.tar.gz |
Fix #4619: node.automatic[:foo] >= 10 sets node.automatic[:foo][">"] to 10
-rw-r--r-- | lib/chef/node/attribute.rb | 16 | ||||
-rw-r--r-- | lib/chef/node/attribute_collections.rb | 8 | ||||
-rw-r--r-- | lib/chef/resource/freebsd_package.rb | 2 |
3 files changed, 17 insertions, 9 deletions
diff --git a/lib/chef/node/attribute.rb b/lib/chef/node/attribute.rb index f5fe89251d..91c7621074 100644 --- a/lib/chef/node/attribute.rb +++ b/lib/chef/node/attribute.rb @@ -523,12 +523,16 @@ class Chef else raise NoMethodError, "Undefined method or attribute `#{symbol}' on `node'" end - elsif symbol.to_s =~ /=$/ - Chef.log_deprecation %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")} - key_to_set = symbol.to_s[/^(.+)=$/, 1] - self[key_to_set] = (args.length == 1 ? args[0] : args) - else - raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'" + elsif symbol.to_s =~ /^\w/ + if symbol.to_s.end_with?("=") + Chef.log_deprecation %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")} + key_to_set = symbol.to_s[/^(.+)=$/, 1] + self[key_to_set] = (args.length == 1 ? args[0] : args) + else + raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'. To set an attribute, use `#{symbol}=value' instead." + else + raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'." + end end end diff --git a/lib/chef/node/attribute_collections.rb b/lib/chef/node/attribute_collections.rb index b739ea8490..d26ae5175a 100644 --- a/lib/chef/node/attribute_collections.rb +++ b/lib/chef/node/attribute_collections.rb @@ -164,11 +164,15 @@ class Chef super elsif args.empty? self[symbol] - elsif symbol.to_s =~ /=$/ + elsif symbol.to_s =~ /^\w.*=$/ key_to_set = symbol.to_s[/^(.+)=$/, 1] self[key_to_set] = (args.length == 1 ? args[0] : args) else - raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'. To set an attribute, use `#{symbol}=value' instead." + if symbol.to_s =~ /\w/ + raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'. To set an attribute, use `#{symbol}=value' instead." + else + raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'." + end end end diff --git a/lib/chef/resource/freebsd_package.rb b/lib/chef/resource/freebsd_package.rb index 540774e864..a94dd0a928 100644 --- a/lib/chef/resource/freebsd_package.rb +++ b/lib/chef/resource/freebsd_package.rb @@ -45,7 +45,7 @@ class Chef def ships_with_pkgng? # It was not until __FreeBSD_version 1000017 that pkgng became # the default binary package manager. See '/usr/ports/Mk/bsd.port.mk'. - node.automatic[:os_version].to_i >= 1000017 + node[:os_version].to_i >= 1000017 end def assign_provider |