class ChefCLI::Policyfile::Lister
Attributes
config[R]
policy_lock_content[RW]
Public Class Methods
new(config: nil)
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 115 def initialize(config: nil) @config = config @policies_by_name = nil @policies_by_group = nil @policy_lock_content = {} @active_revisions = nil end
Public Instance Methods
active_revisions()
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 172 def active_revisions @active_revisions ||= policies_by_group.inject(Set.new) do |set, (_group, policy_name_rev_id_map)| policy_name_rev_id_map.each do |policy_name, rev_id| set << rev_id end set end end
empty?()
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 181 def empty? policies_by_name.empty? && policies_by_group.empty? end
http_client()
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 185 def http_client @http_client ||= Chef::ServerAPI.new(config.chef_server_url, signing_key_filename: config.client_key, client_name: config.node_name) end
orphaned_revisions(policy_name)
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 164 def orphaned_revisions(policy_name) orphans = [] policies_by_name[policy_name].each do |rev_id, _data| orphans << rev_id unless active_revisions.include?(rev_id) end orphans end
policies_by_group()
click to toggle source
A Hash with the following format:
"dev" => { "appserver" => "1111111111111111111111111111111111111111111111111111111111111111", "load-balancer" => "5555555555555555555555555555555555555555555555555555555555555555", "db" => "9999999999999999999999999999999999999999999999999999999999999999" }
# File lib/chef-cli/policyfile/lister.rb, line 140 def policies_by_group @policies_by_group || fetch_policy_lists @policies_by_group end
policies_by_name()
click to toggle source
A Hash with the following format
{ "appserver" => { "1111111111111111111111111111111111111111111111111111111111111111" => {}, "2222222222222222222222222222222222222222222222222222222222222222" => {} },
# File lib/chef-cli/policyfile/lister.rb, line 129 def policies_by_name @policies_by_name || fetch_policy_lists @policies_by_name end
revision_ids_by_group_for(policy_name)
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 156 def revision_ids_by_group_for(policy_name) map = policies_by_group.inject({}) do |rev_id_map, (group_name, rev_id_map_for_group)| rev_id_map[group_name] = rev_id_map_for_group[policy_name] rev_id_map end PolicyGroupRevIDMap.new(policy_name, map) end
revision_ids_by_group_for_each_policy() { |policy_name, rev_id_by_group| ... }
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 149 def revision_ids_by_group_for_each_policy policies_by_name.each do |policy_name, _policies| rev_id_by_group = revision_ids_by_group_for(policy_name) yield policy_name, rev_id_by_group end end
revision_info_for(policy_name, _revision_id_list)
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 145 def revision_info_for(policy_name, _revision_id_list) RevIDLockDataMap.new(policy_name, policy_lock_content[policy_name]) end
set!(policies_by_name, policies_by_group)
click to toggle source
@api private Sets internal copy of policyfile data to policies_by_name
and policies_by_group. Used for internal testing.
# File lib/chef-cli/policyfile/lister.rb, line 194 def set!(policies_by_name, policies_by_group) @policies_by_name = policies_by_name @policies_by_group = policies_by_group @active_revisions = nil end
Private Instance Methods
fetch_policy_lists()
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 202 def fetch_policy_lists policy_list_data = http_client.get("policies") set_policies_by_name_from_api(policy_list_data) policy_group_data = http_client.get("policy_groups") set_policies_by_group_from_api(policy_group_data) end
set_policies_by_group_from_api(policy_group_data)
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 217 def set_policies_by_group_from_api(policy_group_data) @policies_by_group = policy_group_data.inject({}) do |map, (policy_group, policy_info)| map[policy_group] = (policy_info["policies"] || []).inject({}) do |rev_map, (policy_name, rev_info)| rev_map[policy_name] = rev_info["revision_id"]; rev_map end map end end
set_policies_by_name_from_api(policy_list_data)
click to toggle source
# File lib/chef-cli/policyfile/lister.rb, line 210 def set_policies_by_name_from_api(policy_list_data) @policies_by_name = policy_list_data.inject({}) do |map, (policy_name, policy_info)| map[policy_name] = policy_info["revisions"] map end end