Class: Debci::StorageLimit
- Inherits:
-
Object
- Object
- Debci::StorageLimit
- Defined in:
- lib/debci/storage_limit.rb
Defined Under Namespace
Classes: CLI
Instance Method Summary collapse
Instance Method Details
#cleanup_package(package) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/debci/storage_limit.rb', line 26 def cleanup_package(package) keep = true storage = 0 package.jobs.order("date DESC").in_batches.each do |subset| subset.each do |job| storage += job.disk_usage keep = false if storage > storage_limit unless keep job.cleanup Debci.log('Cleaned up files for job %<job_id>s (%<job>s)' % { job_id: job.run_id, job: job }) end end end end |
#run ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/debci/storage_limit.rb', line 11 def run expiration = Time.now - Debci.config.data_retention.days packages = Debci::Package.find_by_sql(" SELECT packages.* FROM packages JOIN jobs ON packages.id = jobs.package_id WHERE date > '#{expiration}' GROUP BY packages.id HAVING sum(jobs.log_size + jobs.artifacts_size) >= #{storage_limit} ") packages.each do |package| self.cleanup_package(package) end end |