Class: Duracloud::SyncValidation
- Inherits:
-
Hashie::Dash
- Object
- Hashie::Dash
- Duracloud::SyncValidation
- Defined in:
- lib/duracloud/sync_validation.rb
Direct Known Subclasses
Defined Under Namespace
Classes: CheckResult
Constant Summary collapse
- TWO_SPACES =
' '
- MD5_CSV_OPTS =
{ col_sep: TWO_SPACES }.freeze
- MANIFEST_CSV_OPTS =
{ col_sep: "\t", headers: true, return_headers: false }.freeze
- MISSING =
"MISSING"
- CHANGED =
"CHANGED"
- FOUND =
"FOUND"
Class Method Summary collapse
Instance Method Summary collapse
- #audit ⇒ Object
- #call ⇒ Object
- #convert_manifest ⇒ Object
- #download_manifest ⇒ Object
- #in_work_dir ⇒ Object
- #recheck ⇒ Object
Class Method Details
.call(*args) ⇒ Object
22 23 24 |
# File 'lib/duracloud/sync_validation.rb', line 22 def self.call(*args) new(*args).call end |
Instance Method Details
#audit ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/duracloud/sync_validation.rb', line 60 def audit outfile = File.join(FileUtils.pwd, audit_filename) infile = File.join(FileUtils.pwd, converted_manifest_filename) pid = spawn("md5deep", "-X", infile, "-l", "-r", ".", chdir: content_dir, out: outfile) Process.wait(pid) case $?.exitstatus when 0 true when 1, 2 recheck when 64, 128 raise Error, "md5deep error." else raise Error, "Unknown error." end end |
#call ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/duracloud/sync_validation.rb', line 36 def call in_work_dir do download_manifest convert_manifest audit end end |
#convert_manifest ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/duracloud/sync_validation.rb', line 52 def convert_manifest File.open(converted_manifest_filename, "w") do |f| CSV.foreach(manifest_filename, MANIFEST_CSV_OPTS) do |row| f.puts [ row[2], row[1] ].join(TWO_SPACES) end end end |
#download_manifest ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/duracloud/sync_validation.rb', line 44 def download_manifest File.open(manifest_filename, "w") do |manifest| Manifest.download(space_id, store_id) do |chunk| manifest.write(chunk) end end end |
#in_work_dir ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/duracloud/sync_validation.rb', line 26 def in_work_dir if work_dir FileUtils.cd(work_dir) { yield } else Dir.mktmpdir("#{space_id}-validation-") do |tmpdir| FileUtils.cd(tmpdir) { yield } end end end |
#recheck ⇒ Object
77 78 79 80 81 82 83 84 85 86 |
# File 'lib/duracloud/sync_validation.rb', line 77 def recheck success = true recheck_file do |csv| do_recheck.each do |result| csv << result.to_a success &&= result.found? end end success end |