Sha256: 2238053058388de6c02e0b73d02d629b11a4cca973c6f13bfa7983e44b9250ec
Contents?: true
Size: 1.92 KB
Versions: 1
Compression:
Stored size: 1.92 KB
Contents
module Astrails module Safe class Rcloud < Sink protected def active? container && username && api_key end def path @path ||= expand(config[:rcloud, :path] || config[:local, :path] || ":kind/:id") end def save raise RuntimeError, "pipe-streaming not supported for Rackspace Cloudfiles." unless @backup.path # needed in cleanup even on dry run rcf = CloudFiles::Connection.new(username, api_key) puts "Uploading #{container}:#{full_path}" if $_VERBOSE || $DRY_RUN unless $DRY_RUN || $LOCAL benchmark = Benchmark.realtime do if rcf.container_exists?(container) rcont = rcf.container(container) else rcont = rcf.create_container(container) end rfile = rcont.create_object(full_path) rfile.load_from_filename(@backup.path) end puts "...done" if $_VERBOSE puts("Upload took " + sprintf("%.2f", benchmark) + " second(s).") if $_VERBOSE end end def cleanup return if $LOCAL return unless keep = @config[:keep, :rcloud] rcf = CloudFiles::Connection.new(username, api_key) rcont = rcf.container(container) puts "listing files: #{container}:#{base}*" if $_VERBOSE rfiles = rcont.objects_detail(:prefix => base) puts rfiles.collect {|x| x[0]} if $_VERBOSE files = rfiles. collect {|x| x[0]}. sort cleanup_with_limit(files, keep) do |f| puts "removing Rackspace Cloudfile #{container}:#{f}" if $DRY_RUN || $_VERBOSE rcont.delete_object(f) unless $DRY_RUN || $LOCAL end end def container @config[:rcloud, :container] end def username @config[:rcloud, :username] end def api_key @config[:rcloud, :api_key] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bostonlogic-safe-0.3.0 | lib/astrails/safe/rcloud.rb |