Sha256: 0996476c10ecab292a3138e9db9770174b43cd64b0e0fe465c5c2d7d73cc3ed7

Contents?: true

Size: 1.86 KB

Versions: 15

Compression:

Stored size: 1.86 KB

Contents

module Fog
  module Linode
    extend Fog::Service

    requires :linode_api_key

    model_path 'fog/linode/models'

    request_path 'fog/linode/requests'
    request 'avail_datacenters'
    request 'avail_distributions'
    request 'avail_kernels'
    request 'avail_linodeplans'
    request 'avail_stackscripts'
    request 'linode_create'
    request 'linode_delete'
    request 'linode_list'
    request 'linode_reboot'

    class Mock
      include Collections

      def self.data
        @data ||= Hash.new do |hash, key|
          hash[key] = {}
        end
      end

      def self.reset_data(keys=data.keys)
        for key in [*keys]
          data.delete(key)
        end
      end

      def initialize(options={})
        @linode_api_key = options[:linode_api_key]
        @data = self.class.data[@linode_api_key]
      end

    end

    class Real
      include Collections

      def initialize(options={})
        @linode_api_key = options[:linode_api_key]
        @host   = options[:host]    || "api.linode.com"
        @port   = options[:port]    || 443
        @scheme = options[:scheme]  || 'https'
        @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
      end

      def reload
        @connection.reset
      end

      def request(params)
        params[:query] ||= {}
        params[:query].merge!(:api_key => @linode_api_key)

        response = @connection.request(params.merge!({:host => @host}))

        unless response.body.empty?
          response.body = JSON.parse(response.body)
          if data = response.body['ERRORARRAY'].first
            error = case data['ERRORCODE']
            when 5
              Fog::Linode::NotFound
            else
              Fog::Linode::Error
            end
            raise error.new(data['ERRORMESSAGE'])
          end
        end
        response
      end

    end
  end
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
fog-0.2.30 lib/fog/linode.rb
fog-0.2.28 lib/fog/linode.rb
fog-0.2.27 lib/fog/linode.rb
fog-0.2.26 lib/fog/linode.rb
fog-0.2.25 lib/fog/linode.rb
fog-0.2.24 lib/fog/linode.rb
tecnh-fog-0.2.23.vpc lib/fog/linode.rb
fog-0.2.23 lib/fog/linode.rb
fog-0.2.22 lib/fog/linode.rb
fog-0.2.21 lib/fog/linode.rb
fog-0.2.20 lib/fog/linode.rb
fog-0.2.19 lib/fog/linode.rb
fog-0.2.18 lib/fog/linode.rb
fog-0.2.17 lib/fog/linode.rb
fog-0.2.16 lib/fog/linode.rb