Sha256: 1d9ce4dca3de5a5dad86379612fcc9da86464fb9e30456c7227fe133c3b69ae5

Contents?: true

Size: 1.82 KB

Versions: 3

Compression:

Stored size: 1.82 KB

Contents

require 'deltacloud/method_serializer'

# Create 'mock' version of original driver client/gem:

module Mock

  class S3 < RightAws::S3
    include MethodSerializer::Cache

    def self.cached_methods
      [
        :buckets
      ]
    end

    MethodSerializer::Cache::wrap_methods(self, :cache_dir => File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'tests', 'ec2', 'support'))
  end

  class ELB < AWS::ELB::Base
    include MethodSerializer::Cache

    def self.cached_methods
      [
        :describe_load_balancers
      ]
    end

    MethodSerializer::Cache::wrap_methods(self, :cache_dir => File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'tests', 'ec2', 'support'))

  end

  class EC2 < AWS::EC2::Base

    include MethodSerializer::Cache

    def self.cached_methods
      [
        :describe_images,
        :describe_availability_zones,
        :describe_keypairs,
        :create_keypair,
        :run_instances,
        :describe_instances,
        :reboot_instances,
        :terminate_instances,
        :delete_keypair
      ]
    end

    MethodSerializer::Cache::wrap_methods(self, :cache_dir => File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'tests', 'ec2', 'support'))
  end
end


# Replace original client with mock client
Deltacloud::Drivers::EC2::EC2Driver.class_eval do
  alias_method :original_new_client, :new_client
  alias_method :original_s3_client, :s3_client

  def new_client(credentials, provider = :ec2)
    if provider == :elb
      Mock::ELB.new(
        :access_key_id => credentials.user,
        :secret_access_key => credentials.password
      )
    else
      Mock::EC2.new(
        :access_key_id => credentials.user,
        :secret_access_key => credentials.password
      )
    end
  end

  def s3_client(credentials)
    Mock::S3.new(credentials.user, credentials.password)
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
deltacloud-core-0.1.2 lib/deltacloud/base_driver/mock_driver.rb
deltacloud-core-0.1.1 lib/deltacloud/base_driver/mock_driver.rb
deltacloud-core-0.1.0 lib/deltacloud/base_driver/mock_driver.rb