class Proxy::OpenSCAP::StorageFS

Public Instance Methods

delete_arf_file() click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 31
def delete_arf_file
  path = "#{@path_to_dir}/#{@namespace}/#{@cname}/#{@id}"
  raise FileNotFound, "Can't find path #{path}" if !File.directory?(path) || File.zero?(path)
  FileUtils.rm_r path
  {:id => @id, :deleted => true}.to_json
end
get_arf_file(digest) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 38
def get_arf_file(digest)
  file = File.open(get_path digest)
  { :size => File.size(file), :xml => file.read }
end
get_arf_xml(digest) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 27
def get_arf_xml(digest)
  get_arf_file(digest)[:xml]
end
get_path(digest) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 43
def get_path(digest)
  full_path = @path + digest
  raise FileNotFound, "Can't find path #{full_path}" if !File.file?(full_path) || File.zero?(full_path)
  full_path
end
list_dirs(path) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 54
def list_dirs(path)
  Pathname.new(path).children.select(&:directory?)
end
move_corrupted(digest, spooldir) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 22
def move_corrupted(digest, spooldir)
  source = "#{spooldir}/#{@namespace}/#{@cname}/#{@id}/#{@date}"
  move "#{source}/#{digest}", StoreCorruptedError
end
spool_errors() click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 49
def spool_errors
  path = "#{@path_to_dir}/#{@namespace}"
  { :errors_count => File.exists?(path) ? list_dirs(path).count : 0 }
end
store_archive(data) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 6
def store_archive(data)
  store(data, StoreReportError)
end
store_corrupted(data) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 18
def store_corrupted(data)
  store(data, StoreCorruptedError)
end
store_failed(data) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 14
def store_failed(data)
  store(data, StoreFailedError)
end
store_spool(data) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 10
def store_spool(data)
  store(data, StoreSpoolError)
end

Private Instance Methods

create_directory() click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 67
def create_directory
  begin
    FileUtils.mkdir_p @path
  rescue StandardError => e
    logger.error "Could not create '#{@path}' directory: #{e.message}"
    raise e
  end
  @path
end
move(source, error_type) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 77
def move(source, error_type)
  begin
    create_directory
    FileUtils.mv source, @path
  rescue StandardError => e
    raise error_type, "Could not move file: #{e.message}"
  end
end
store(data, error_type) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 86
def store(data, error_type)
  begin
    create_directory
  rescue StandardError => e
    raise error_type, "Could not fulfill request: #{e.message}"
  end

  begin
    target_path = store_arf(@path, data)
  rescue StandardError => e
    raise error_type, "Could not store file: #{e.message}"
  end

  logger.debug "File #{target_path} stored in reports dir."
end
store_arf(spool_arf_dir, data) click to toggle source
# File lib/smart_proxy_openscap/storage_fs.rb, line 60
def store_arf(spool_arf_dir, data)
  filename = Digest::SHA256.hexdigest data
  target_path = spool_arf_dir + filename
  File.open(target_path,'w') { |f| f.write(data) }
  target_path
end