Class: ForemanInventoryUpload::Async::UploadReportJob
  
  
  
  
  
    - Inherits:
 
    - 
      ShellProcess
      
        
          - Object
 
          
            - Actions::EntryAction
 
          
            - ShellProcess
 
          
            - ForemanInventoryUpload::Async::UploadReportJob
 
          
        
        show all
      
     
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - lib/foreman_inventory_upload/async/upload_report_job.rb
 
  
  
 
  
    
      Class Method Summary
      collapse
    
    
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  #logger, #progress_output, #rescue_strategy_for_self
  
  
  
  
  
  
  
  
  
  #attempts_before_next_interval, #done!, #done?, #invoke_external_task, #poll_external_task, #poll_intervals
  
  
  
  
  
  
  
  
  
  
  
  #hash_to_s
  
  
  
    Class Method Details
    
      
  
  
    .output_label(label)  ⇒ Object 
  
  
  
  
    
      
6
7
8 
     | 
    
      # File 'lib/foreman_inventory_upload/async/upload_report_job.rb', line 6
def self.output_label(label)
  "upload_for_#{label}"
end
     | 
  
 
    
   
  
    Instance Method Details
    
      
    
      
  
  
    #content_disconnected?  ⇒ Boolean 
  
  
  
  
    
      
80
81
82 
     | 
    
      # File 'lib/foreman_inventory_upload/async/upload_report_job.rb', line 80
def content_disconnected?
  Setting[:content_disconnected]
end 
     | 
  
 
    
      
  
  
    #env  ⇒ Object 
  
  
  
  
    
      
48
49
50
51
52
53
54
55
56
57
58
59
60 
     | 
    
      # File 'lib/foreman_inventory_upload/async/upload_report_job.rb', line 48
def env
  env_vars = super.merge(
    'FILES' => filename,
    'CER_PATH' => @cer_path
  )
  http_proxy_string = ForemanRhCloud.http_proxy_string(logger: logger)
  if http_proxy_string
    env_vars['http_proxy'] = http_proxy_string
    env_vars['https_proxy'] = http_proxy_string
  end
  env_vars
end
     | 
  
 
    
      
  
  
    #filename  ⇒ Object 
  
  
  
  
    
      
72
73
74 
     | 
    
      # File 'lib/foreman_inventory_upload/async/upload_report_job.rb', line 72
def filename
  input[:filename]
end 
     | 
  
 
    
      
  
  
    #organization  ⇒ Object 
  
  
  
  
    
      
76
77
78 
     | 
    
      # File 'lib/foreman_inventory_upload/async/upload_report_job.rb', line 76
def organization
  @organization ||= Organization.find(input[:organization_id])
end 
     | 
  
 
    
      
  
  
    #plan(filename, organization_id)  ⇒ Object 
  
  
  
  
    
      
10
11
12
13 
     | 
    
      # File 'lib/foreman_inventory_upload/async/upload_report_job.rb', line 10
def plan(filename, organization_id)
  label = UploadReportJob.output_label(organization_id)
  super(label, filename: filename, organization_id: organization_id)
end 
     | 
  
 
    
      
  
  
    #rh_credentials  ⇒ Object 
  
  
  
  
    
      
62
63
64
65
66
67
68
69
70 
     | 
    
      # File 'lib/foreman_inventory_upload/async/upload_report_job.rb', line 62
def rh_credentials
  @rh_credentials ||= begin
    candlepin_id_certificate = organization.owner_details['upstreamConsumer']['idCert']
    {
      cert: candlepin_id_certificate['cert'],
      key: candlepin_id_certificate['key'],
    }
  end
end
     | 
  
 
    
      
  
  
    #try_execute  ⇒ Object 
  
  
  
  
    
      
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 
     | 
    
      # File 'lib/foreman_inventory_upload/async/upload_report_job.rb', line 15
def try_execute
  if content_disconnected?
    progress_output do |progress_output|
      progress_output.write_line('Upload was stopped since disconnected mode setting is enabled for content on this instance.')
      progress_output.status = "Task aborted, exit 1"
      done!
    end
    return
  end
  unless organization.owner_details&.fetch('upstreamConsumer')&.fetch('idCert')
    logger.info("Skipping organization '#{organization}', no candlepin certificate defined.")
    progress_output do |progress_output|
      progress_output.write_line("Skipping organization #{organization}, no candlepin certificate defined.")
      progress_output.status = "Task aborted, exit 1"
      done!
    end
    return
  end
  Tempfile.create([organization.name, '.pem']) do |cer_file|
    cer_file.write(rh_credentials[:cert])
    cer_file.write(rh_credentials[:key])
    cer_file.flush
    @cer_path = cer_file.path
    super
  end
end
     |