class ChefDK::PolicyfileServices::ShowPolicy
Attributes
chef_config[R]
policy_group[R]
policy_name[R]
ui[R]
Public Class Methods
new(config: nil, ui: nil, policy_name: nil, policy_group: nil, show_orphans: false, summary_diff: false, pager: false)
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 69 def initialize(config: nil, ui: nil, policy_name: nil, policy_group: nil, show_orphans: false, summary_diff: false, pager: false) @chef_config = config @ui = ui @policy_name = policy_name @policy_group = policy_group @show_orphans = show_orphans @summary_diff = summary_diff @enable_pager = pager end
Public Instance Methods
display_all_policies()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 128 def display_all_policies if policy_lister.empty? ui.err("No policies or policy groups exist on the server") return end if policy_lister.policies_by_name.empty? ui.err("No policies exist on the server") return end policy_lister.revision_ids_by_group_for_each_policy do |policy_name, rev_id_by_group| report.h1(policy_name) if rev_id_by_group.empty? ui.err("Policy #{policy_name} is not assigned to any groups") ui.err("") else rev_ids_for_report = format_rev_ids_for_report(rev_id_by_group) report.table_list(rev_ids_for_report) end if show_orphans? orphans = policy_lister.orphaned_revisions(policy_name) unless orphans.empty? report.h2("Orphaned:") formatted_orphans = orphans.map { |id| shorten_rev_id(id) } report.list(formatted_orphans) end end end end
display_policy_revision()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 122 def display_policy_revision lock = Policyfile::ComparisonBase::PolicyGroup.new(policy_group, policy_name, http_client).lock pager = Pager.new(enable_pager: enable_pager?) pager.with_pager { |p| p.ui.msg(FFI_Yajl::Encoder.encode(lock, pretty: true)) } end
display_single_policy()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 160 def display_single_policy report.h1(policy_name) rev_id_by_group = policy_lister.revision_ids_by_group_for(policy_name) if rev_id_by_group.empty? || rev_id_by_group.all? { |_k, rev| rev.nil? } ui.err("No policies named '#{policy_name}' are associated with a policy group") ui.err("") elsif show_summary_diff? unique_rev_ids = rev_id_by_group.unique_revision_ids revision_info = policy_lister.revision_info_for(policy_name, unique_rev_ids) ljust_size = rev_id_by_group.max_group_name_length + 2 cbs_with_differing_ids = revision_info.cbs_with_differing_ids rev_id_by_group.each do |group_name, rev_id| heading = "#{group_name}:".ljust(ljust_size) + shorten_rev_id(rev_id) report.h2(heading) differing_cbs_version_info = cbs_with_differing_ids.inject({}) do |cb_version_info, cb_name| version, identifier = revision_info.cb_info_for(rev_id, cb_name) cb_info_for_report = if !version.nil? "#{version} (#{shorten_rev_id(identifier)})" else "*NONE*" end cb_version_info[cb_name] = cb_info_for_report cb_version_info end report.table_list(differing_cbs_version_info) end else rev_ids_for_report = format_rev_ids_for_report(rev_id_by_group) report.table_list(rev_ids_for_report) end if show_orphans? orphans = policy_lister.orphaned_revisions(policy_name) unless orphans.empty? report.h2("Orphaned:") formatted_orphans = orphans.map { |id| shorten_rev_id(id) } report.list(formatted_orphans) end end end
enable_pager?()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 110 def enable_pager? @enable_pager end
http_client()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 218 def http_client @http_client ||= Chef::ServerAPI.new(chef_config.chef_server_url, signing_key_filename: chef_config.client_key, client_name: chef_config.node_name) end
policy_lister()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 118 def policy_lister @policy_info_fetcher ||= Policyfile::Lister.new(config: chef_config) end
report()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 114 def report @report ||= ReportPrinter.new(ui) end
run()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 79 def run if show_policy_revision? display_policy_revision elsif show_all_policies? display_all_policies else display_single_policy end true rescue PolicyfileNestedException raise rescue => e raise PolicyfileListError.new("Failed to list policyfile data from the server", e) end
shorten_rev_id(revision_id)
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 214 def shorten_rev_id(revision_id) revision_id[0, 10] end
show_all_policies?()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 98 def show_all_policies? !policy_name end
show_orphans?()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 102 def show_orphans? @show_orphans end
show_policy_revision?()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 94 def show_policy_revision? !!policy_group end
show_summary_diff?()
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 106 def show_summary_diff? @summary_diff end
Private Instance Methods
format_rev_ids_for_report(rev_id_by_group)
click to toggle source
# File lib/chef-dk/policyfile_services/show_policy.rb, line 226 def format_rev_ids_for_report(rev_id_by_group) rev_id_by_group.format_revision_ids do |rev_id| rev_id ? rev_id[0, 10] : "*NOT APPLIED*" end end