Class: ChefCLI::PolicyfileServices::CleanPolicies
- Inherits:
 - 
      Object
      
        
- Object
 - ChefCLI::PolicyfileServices::CleanPolicies
 
 
- Defined in:
 - lib/chef-cli/policyfile_services/clean_policies.rb
 
Defined Under Namespace
Classes: Orphan
Instance Attribute Summary collapse
- 
  
    
      #chef_config  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute chef_config.
 - 
  
    
      #ui  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute ui.
 
Instance Method Summary collapse
- #http_client ⇒ Object
 - 
  
    
      #initialize(config: nil, ui: nil)  ⇒ CleanPolicies 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of CleanPolicies.
 - #orphaned_policies ⇒ Object
 - #policy_lister ⇒ Object
 - #run ⇒ Object
 
Constructor Details
#initialize(config: nil, ui: nil) ⇒ CleanPolicies
Returns a new instance of CleanPolicies.
      31 32 33 34  | 
    
      # File 'lib/chef-cli/policyfile_services/clean_policies.rb', line 31 def initialize(config: nil, ui: nil) @chef_config = config @ui = ui end  | 
  
Instance Attribute Details
#chef_config ⇒ Object (readonly)
Returns the value of attribute chef_config.
      28 29 30  | 
    
      # File 'lib/chef-cli/policyfile_services/clean_policies.rb', line 28 def chef_config @chef_config end  | 
  
#ui ⇒ Object (readonly)
Returns the value of attribute ui.
      29 30 31  | 
    
      # File 'lib/chef-cli/policyfile_services/clean_policies.rb', line 29 def ui @ui end  | 
  
Instance Method Details
#http_client ⇒ Object
      77 78 79 80 81  | 
    
      # File 'lib/chef-cli/policyfile_services/clean_policies.rb', line 77 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  | 
  
#orphaned_policies ⇒ Object
      63 64 65 66 67 68 69 70 71  | 
    
      # File 'lib/chef-cli/policyfile_services/clean_policies.rb', line 63 def orphaned_policies policy_lister.policies_by_name.keys.inject([]) do |orphans, policy_name| orphans + policy_lister.orphaned_revisions(policy_name).map do |revision_id| Orphan.new(policy_name, revision_id) end end rescue => e raise PolicyfileCleanError.new("Failed to list policies for cleaning.", e) end  | 
  
#policy_lister ⇒ Object
      73 74 75  | 
    
      # File 'lib/chef-cli/policyfile_services/clean_policies.rb', line 73 def policy_lister @policy_lister ||= Policyfile::Lister.new(config: chef_config) end  | 
  
#run ⇒ Object
      36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61  | 
    
      # File 'lib/chef-cli/policyfile_services/clean_policies.rb', line 36 def run revisions_to_remove = orphaned_policies if revisions_to_remove.empty? ui.err("No policy revisions deleted") return true end results = revisions_to_remove.map do |policy| [ remove_policy(policy), policy ] end failures = results.select { |result, _policy| result.is_a?(Exception) } unless failures.empty? details = failures.map do |result, policy| "- #{policy.policy_name} (#{policy.revision_id}): #{result.class} #{result}" end = "Failed to delete some policy revisions:\n" + details.join("\n") + "\n" raise PolicyfileCleanError.new(, MultipleErrors.new("multiple errors")) end true end  |