summaryrefslogtreecommitdiff
path: root/lib/chef/policy_builder
diff options
context:
space:
mode:
authordanielsdeleo <dan@chef.io>2015-09-14 17:25:56 -0700
committerdanielsdeleo <dan@chef.io>2015-09-17 14:29:49 -0700
commite441d37d36eedbd73b37166f982536b8702ff4fb (patch)
treeb6f0c06ca7d10c5c5329ab43f4c878953d281540 /lib/chef/policy_builder
parent2890a01b06d7b341d8483f946eee788063baecc9 (diff)
downloadchef-e441d37d36eedbd73b37166f982536b8702ff4fb.tar.gz
Set the precedence of policyfile attrs and propagate them everywhere
Diffstat (limited to 'lib/chef/policy_builder')
-rw-r--r--lib/chef/policy_builder/policyfile.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/chef/policy_builder/policyfile.rb b/lib/chef/policy_builder/policyfile.rb
index 5bcdd5f52f..ef3b7838cb 100644
--- a/lib/chef/policy_builder/policyfile.rb
+++ b/lib/chef/policy_builder/policyfile.rb
@@ -114,6 +114,7 @@ class Chef
def finish_load_node(node)
@node = node
+ select_policy_name_and_group
validate_policyfile
events.policyfile_loaded(policy)
end
@@ -295,6 +296,48 @@ class Chef
Chef::Config[:policy_name]
end
+ def select_policy_name_and_group
+ policy_name_to_set =
+ policy_name_from_json_attribs ||
+ policy_name_from_config ||
+ policy_name_from_node
+
+ policy_group_to_set =
+ policy_group_from_json_attribs ||
+ policy_group_from_config ||
+ policy_group_from_node
+
+ node.policy_name = policy_name_to_set
+ node.policy_group = policy_group_to_set
+
+ Chef::Config[:policy_name] = policy_name_to_set
+ Chef::Config[:policy_group] = policy_group_to_set
+ end
+
+ def policy_group_from_json_attribs
+ json_attribs["policy_group"]
+ end
+
+ def policy_name_from_json_attribs
+ json_attribs["policy_name"]
+ end
+
+ def policy_group_from_config
+ Chef::Config[:policy_group]
+ end
+
+ def policy_name_from_config
+ Chef::Config[:policy_name]
+ end
+
+ def policy_group_from_node
+ node.policy_group
+ end
+
+ def policy_name_from_node
+ node.policy_name
+ end
+
# Builds a 'cookbook_hash' map of the form
# "COOKBOOK_NAME" => "IDENTIFIER"
#