summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinay Satish <vinay.satish@progress.com>2021-10-11 17:08:13 +0530
committerVinay Satish <vinay.satish@progress.com>2021-10-13 20:28:52 +0530
commit61773ed71ac6cd7c01718e70ed8b59fcb581ecf1 (patch)
treecb15c631f60fcef9db1076e688880f91b63c6aab
parentacb62bfdd88e236bd9ea8af1f07e959f55824392 (diff)
downloadchef-zero-zei/update_policy_revision_API.tar.gz
updating the policy_revision_endpoint to add policy_group_listzei/update_policy_revision_API
Signed-off-by: Vinay Satish <vinay.satish@progress.com>
-rw-r--r--lib/chef_zero/endpoints/policy_revision_endpoint.rb28
1 files changed, 27 insertions, 1 deletions
diff --git a/lib/chef_zero/endpoints/policy_revision_endpoint.rb b/lib/chef_zero/endpoints/policy_revision_endpoint.rb
index be19fdc..479a233 100644
--- a/lib/chef_zero/endpoints/policy_revision_endpoint.rb
+++ b/lib/chef_zero/endpoints/policy_revision_endpoint.rb
@@ -7,7 +7,33 @@ module ChefZero
# GET /organizations/ORG/policies/NAME/revisions/REVISION
def get(request)
data = parse_json(get_data(request))
- data = ChefData::DataNormalizer.normalize_policy(data, request.rest_path[3], request.rest_path[5])
+ data[:policy_group_list] = Array.new
+
+ # extracting policy name and revision
+ request_policy_name = request.rest_path[3]
+ request_policy_revision = request.rest_path[5]
+
+ # updating the request to fetch the policy group list
+ request.rest_path[2] = "policy_groups"
+ request.rest_path = request.rest_path.slice(0,3)
+
+ list_data(request).each do |group_name|
+ group_path = request.rest_path + [group_name]
+
+ # fetching all the policies associated with each group
+ policy_list = list_data(request, group_path + ["policies"])
+ policy_list.each do |policy_name|
+ revision_id = parse_json(get_data(request, group_path + ["policies", policy_name]))
+
+ # if the name and revision matchs, we add the group to the response
+ if (policy_name == request_policy_name) && (revision_id == request_policy_revision)
+ policy_group_list = data[:policy_group_list]
+ data[:policy_group_list] = [group_name] + policy_group_list
+ end
+ end
+ end
+
+ data = ChefData::DataNormalizer.normalize_policy(data, request_policy_name, request_policy_revision)
json_response(200, data)
end