Class: Cosmos::ReducerModel
- Defined in:
- lib/cosmos/models/reducer_model.rb
Overview
Tracks the files which are being stored in S3 for data reduction purposes. Files are stored in a Redis set by spliting their filenames and storing in a set named SCOPE__TARGET__reducer__TYPE, e.g. DEFAULT__INST__reducer__decom Where TYPE can be ‘decom’, ‘minute’, or ‘hour’. ‘day’ is not necessary because day is the final reduction state. As files are reduced they are removed from the set. Thus the sets contain the active set of files to be reduced.
Class Method Summary collapse
Class Method Details
.add_file(s3_key) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/cosmos/models/reducer_model.rb', line 30 def self.add_file(s3_key) # s3_key is formatted like STARTTIME__ENDTIME__SCOPE__TARGET__PACKET__TYPE.bin # e.g. 20211229191610578229500__20211229192610563836500__DEFAULT__INST__HEALTH_STATUS__rt__decom.bin _, _, scope, target, _ = s3_key.split('__') case s3_key when /__decom\.bin$/ Store.sadd("#{scope}__#{target}__reducer__decom", s3_key) when /__minute\.bin$/ Store.sadd("#{scope}__#{target}__reducer__minute", s3_key) when /__hour\.bin$/ Store.sadd("#{scope}__#{target}__reducer__hour", s3_key) end # No else clause because add_file is called with raw files which are ignored end |
.all_files(type:, target:, scope:) ⇒ Object
61 62 63 |
# File 'lib/cosmos/models/reducer_model.rb', line 61 def self.all_files(type:, target:, scope:) Store.smembers("#{scope}__#{target}__reducer__#{type.downcase}").sort end |
.rm_file(s3_key) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/cosmos/models/reducer_model.rb', line 45 def self.rm_file(s3_key) _, _, scope, target, _ = s3_key.split('__') case s3_key when /__decom\.bin$/ Store.srem("#{scope}__#{target}__reducer__decom", s3_key) when /__minute\.bin$/ Store.srem("#{scope}__#{target}__reducer__minute", s3_key) when /__hour\.bin$/ Store.srem("#{scope}__#{target}__reducer__hour", s3_key) else # We should only remove files that were previously in the set # Thus if we don't match the s3_key it is an error raise "Unknown file #{s3_key}" end end |