lib/heirloom/catalog.rb
require 'heirloom/catalog/add.rb'
require 'heirloom/catalog/delete.rb'
require 'heirloom/catalog/list.rb'
require 'heirloom/catalog/setup.rb'
require 'heirloom/catalog/show.rb'
require 'heirloom/catalog/verify.rb'
module Heirloom
class Catalog
def initialize(args)
@config = args[:config]
@name = args[:name]
end
def cleanup(opts = {})
opts[:num_to_keep] ||= 100
opts[:remove_preserved] ||= false
num_cleaned = 0
q = "select * from `#{domain}` where built_at > '2000-01-01T00:00:00.000Z' order by built_at desc"
sdb.select(q, :offset => opts[:num_to_keep]) do |key, item|
unless opts[:remove_preserved]
next if preserved?(item)
end
archive = Archive.new :config => @config, :name => @name, :id => key
archive.destroy
num_cleaned += 1
end
if num_cleaned == 0
Heirloom.log.info "No archives to delete."
else
Heirloom.log.info "#{num_cleaned} archive#{'s' unless num_cleaned == 1} deleted."
end
end
def create_catalog_domain
setup.create_catalog_domain
end
def catalog_domain_exists?
verify.catalog_domain_exists?
end
def entry_exists_in_catalog?(entry)
verify.entry_exists_in_catalog? entry
end
def delete_from_catalog
delete.delete_from_catalog
end
def add_to_catalog(args)
add.add_to_catalog args
end
def regions
show.regions
end
def bucket_prefix
show.bucket_prefix
end
def all
list.all
end
private
def preserved?(item)
item['preserve'] && item['preserve'].include?('true')
end
def sdb
@sdb ||= Heirloom::AWS::SimpleDB.new :config => @config
end
def add
@add ||= Catalog::Add.new :config => @config,
:name => @name
end
def delete
@delete ||= Catalog::Delete.new :config => @config,
:name => @name
end
def list
@list ||= Catalog::List.new :config => @config
end
def setup
@setup ||= Catalog::Setup.new :config => @config
end
def show
@show ||= Catalog::Show.new :config => @config,
:name => @name
end
def verify
@verify ||= Catalog::Verify.new :config => @config
end
def domain
"heirloom_#{@name}"
end
end
end