class Bosh::AwsCliPlugin::S3
Attributes
aws_provider[R]
Public Class Methods
new(credentials)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 4 def initialize(credentials) @aws_provider = AwsProvider.new(credentials) end
Public Instance Methods
bucket_exists?(bucket_name)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 40 def bucket_exists?(bucket_name) bucket_names.include?(bucket_name) end
bucket_names()
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 36 def bucket_names aws_s3.buckets.map &:name end
copy_remote_file(bucket_name, remote_file, file_name)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 62 def copy_remote_file(bucket_name, remote_file, file_name) say("Fetching remote file #{remote_file} from #{bucket_name} bucket") bucket = aws_s3.buckets[bucket_name] object = bucket.objects[remote_file] release_file = Tempfile.new file_name Bosh::Cli::FileWithProgressBar.open(release_file, 'wb') do |f| f.size=object.content_length object.read do |chunk| f.write chunk end end release_file rescue AWS::S3::Errors::NoSuchKey => e new_exception = Exception.new("Can't find #{remote_file} in bucket #{bucket_name}") new_exception.set_backtrace(e.backtrace) raise new_exception end
create_bucket(bucket_name)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 8 def create_bucket(bucket_name) aws_s3.buckets.create(bucket_name) end
delete_bucket(bucket_name)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 18 def delete_bucket(bucket_name) bucket = fetch_bucket(bucket_name) bucket.clear! bucket.delete rescue AWS::S3::Errors::NoSuchBucket end
empty()
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 26 def empty aws_s3.buckets.each do |bucket| begin bucket.delete! rescue AWS::S3::Errors::NoSuchBucket # when the bucket goes away while going through the list end end end
fetch_object_contents(bucket_name, object_name)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 53 def fetch_object_contents(bucket_name, object_name) bucket = fetch_bucket(bucket_name) Bosh::Common.retryable(on: AWS::S3::Errors::NoSuchBucket, tries: 10) do bucket.objects[object_name].read end rescue AWS::S3::Errors::NoSuchKey nil end
move_bucket(old_bucket, new_bucket)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 12 def move_bucket(old_bucket, new_bucket) fetch_bucket(old_bucket).objects.each do |object| object.move_to(object.key, :bucket_name => new_bucket) end end
objects_in_bucket(bucket_name)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 49 def objects_in_bucket(bucket_name) fetch_bucket(bucket_name).objects.map { |object| object.key } end
upload_to_bucket(bucket_name, object_name, io)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 44 def upload_to_bucket(bucket_name, object_name, io) bucket = fetch_bucket(bucket_name) bucket.objects[object_name].write(io) end
Private Instance Methods
aws_s3()
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 88 def aws_s3 aws_provider.s3 end
fetch_bucket(bucket_name)
click to toggle source
# File lib/bosh_cli_plugin_aws/s3.rb, line 84 def fetch_bucket(bucket_name) aws_s3.buckets[bucket_name] end