Sha256: 721d95b04880dbd86ccd56d3dc99f6a8083325dd4c6cbbb88b1e64df2dd7005d

Contents?: true

Size: 1.03 KB

Versions: 246

Compression:

Stored size: 1.03 KB

Contents

module Bosh
  module Blobstore
    class Client
      PROVIDER_NAMES = %w[dav simple s3 swift atmos local]

      def self.create(blobstore_provider, options = {})
        unless PROVIDER_NAMES.include?(blobstore_provider)
          raise BlobstoreError,
            "Unknown client provider '#{blobstore_provider}', " +
            "available providers are: #{PROVIDER_NAMES}"
        end
        blobstore_client_constantize(blobstore_provider).new(options)
      end

      def self.safe_create(provider, options = {})
        wrapped_client = create(provider, options)
        sha1_client    = Sha1VerifiableBlobstoreClient.new(wrapped_client)
        retryable      = Retryable.new(tries: 3, sleep: 0.5, on: [BlobstoreError])
        RetryableBlobstoreClient.new(sha1_client, retryable)
      end

      private

      def self.blobstore_client_constantize(base_string)
        class_string = base_string.capitalize + (base_string == 'local' ? '' : 'Blobstore') + 'Client'
        Bosh::Blobstore.const_get class_string
      end
    end
  end
end

Version data entries

246 entries across 246 versions & 1 rubygems

Version Path
blobstore_client-1.3012.0 lib/blobstore_client/client.rb
blobstore_client-1.3010.0 lib/blobstore_client/client.rb
blobstore_client-1.3008.0 lib/blobstore_client/client.rb
blobstore_client-1.3004.0 lib/blobstore_client/client.rb
blobstore_client-1.3003.0 lib/blobstore_client/client.rb
blobstore_client-1.3001.0 lib/blobstore_client/client.rb
blobstore_client-1.3000.0 lib/blobstore_client/client.rb
blobstore_client-1.2999.0 lib/blobstore_client/client.rb
blobstore_client-1.2992.0 lib/blobstore_client/client.rb
blobstore_client-1.2989.0 lib/blobstore_client/client.rb
blobstore_client-1.2986.0 lib/blobstore_client/client.rb
blobstore_client-1.2983.0 lib/blobstore_client/client.rb
blobstore_client-1.2982.0 lib/blobstore_client/client.rb
blobstore_client-1.2981.0 lib/blobstore_client/client.rb
blobstore_client-1.2980.0 lib/blobstore_client/client.rb
blobstore_client-1.2978.0 lib/blobstore_client/client.rb
blobstore_client-1.2977.0 lib/blobstore_client/client.rb
blobstore_client-1.2976.0 lib/blobstore_client/client.rb
blobstore_client-1.2975.0 lib/blobstore_client/client.rb
blobstore_client-1.2972.0 lib/blobstore_client/client.rb