Class: Longleaf::RegisterEvent
- Inherits:
-
Object
- Object
- Longleaf::RegisterEvent
- Includes:
- EventStatusTracking
- Defined in:
- lib/longleaf/events/register_event.rb
Overview
Event to register a file with longleaf
Instance Method Summary collapse
-
#initialize(file_rec:, app_manager:, force: false, checksums: nil) ⇒ RegisterEvent
constructor
A new instance of RegisterEvent.
-
#perform ⇒ Object
Perform a registration event on the given file.
- #populate_file_properties ⇒ Object private
-
#retain_existing_properties ⇒ Object
private
Copy a subset of properties from an existing metadata record to the new record.
Methods included from EventStatusTracking
#record_failure, #record_success, #return_status, #track_failure, #track_status, #track_success
Methods included from Logging
#initialize_logger, initialize_logger, #logger, logger
Constructor Details
#initialize(file_rec:, app_manager:, force: false, checksums: nil) ⇒ RegisterEvent
Returns a new instance of RegisterEvent
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/longleaf/events/register_event.rb', line 17 def initialize(file_rec:, app_manager:, force: false, checksums: nil) raise ArgumentError.new('Must provide a file_rec parameter') if file_rec.nil? raise ArgumentError.new('Parameter file_rec must be a FileRecord') \ unless file_rec.is_a?(FileRecord) raise ArgumentError.new('Must provide an ApplicationConfigManager') if app_manager.nil? raise ArgumentError.new('Parameter app_manager must be an ApplicationConfigManager') \ unless app_manager.is_a?(ApplicationConfigManager) @app_manager = app_manager @file_rec = file_rec @force = force @checksums = checksums end |
Instance Method Details
#perform ⇒ Object
Perform a registration event on the given file
33 34 35 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 62 63 64 |
# File 'lib/longleaf/events/register_event.rb', line 33 def perform begin # Only need to re-register file if the force flag is provided if @file_rec. && !@force raise RegistrationError.new("Unable to register '#{@file_rec.path}', it is already registered.") end # create metadata record md_rec = MetadataRecord.new(registered: Time.now.utc.iso8601(3)) @file_rec. = md_rec # retain significant details from former record if @file_rec. retain_existing_properties end populate_file_properties md_rec.checksums.merge!(@checksums) unless @checksums.nil? # persist the metadata @app_manager.md_manager.persist(@file_rec) record_success(EventNames::REGISTER, @file_rec.path) rescue RegistrationError => err record_failure(EventNames::REGISTER, @file_rec.path, err.) rescue InvalidStoragePathError => err record_failure(EventNames::REGISTER, @file_rec.path, err.) end return_status end |
#populate_file_properties ⇒ Object (private)
67 68 69 70 71 72 73 |
# File 'lib/longleaf/events/register_event.rb', line 67 def populate_file_properties md_rec = @file_rec. # Set file properties md_rec.last_modified = File.mtime(@file_rec.path).utc.iso8601(3) md_rec.file_size = File.size(@file_rec.path) end |
#retain_existing_properties ⇒ Object (private)
Copy a subset of properties from an existing metadata record to the new record
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/longleaf/events/register_event.rb', line 76 def retain_existing_properties md_rec = @file_rec. old_md = MetadataDeserializer.deserialize(file_path: @file_rec., digest_algs: @file_rec.storage_location.) # Copy custom properties old_md.properties.each { |name, value| md_rec.properties[name] = value } # Copy stale-replicas flag per service old_md.list_services.each do |serv_name| serv_rec = old_md.service(serv_name) stale_replicas = serv_rec.stale_replicas if stale_replicas new_service = md_rec.service(serv_name) new_service.stale_replicas = stale_replicas unless new_service.nil? end end end |