Sha256: 5e5bb09b3111f4dd9b6e08cb1bbb96c3e238b549bfef3d37ce84d6f4452fbd16

Contents?: true

Size: 1.08 KB

Versions: 6

Compression:

Stored size: 1.08 KB

Contents

class Chef
  class Knife
    class S3Source
      attr_accessor :url

      def self.fetch(url)
        source = Chef::Knife::S3Source.new
        source.url = url
        source.body
      end

      def body
        bucket_obj.files.get(path).body
      end

      private

      def bucket_obj
        @bucket_obj ||= fog.directories.get(bucket)
      end

      def bucket
        uri = URI(@url)
        if uri.scheme == "s3"
          URI(@url).host
        else
          URI(@url).path.split("/")[1]
        end
      end

      def path
        uri = URI(@url)
        if uri.scheme == "s3"
          URI(@url).path.sub(/^\//, '')
        else
          URI(@url).path.split(bucket).last.sub(/^\//, '')
        end
      end

      def fog
        require 'fog/aws' # lazy load the fog library to speed up the knife run
        @fog ||= Fog::Storage::AWS.new(
          aws_access_key_id: Chef::Config[:knife][:aws_access_key_id],
          aws_secret_access_key: Chef::Config[:knife][:aws_secret_access_key]
        )
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
knife-ec2-0.18.0 lib/chef/knife/s3_source.rb
knife-ec2-0.17.0 lib/chef/knife/s3_source.rb
knife-ec2-0.16.0 lib/chef/knife/s3_source.rb
knife-ec2-0.15.0 lib/chef/knife/s3_source.rb
knife-ec2-0.14.0 lib/chef/knife/s3_source.rb
knife-ec2-0.13.0 lib/chef/knife/s3_source.rb