Sha256: 2b9473b4b82d6055cdee1dc3509d6c647baec896ae2c9de24dcda74f8e5497bf

Contents?: true

Size: 1.81 KB

Versions: 48

Compression:

Stored size: 1.81 KB

Contents

module Fog
  module StormOnDemand
    module RealShared

      API_URL = 'https://api.stormondemand.com'
      API_VERSION = 'v1'
      
      def initialize(options={})
        uri = URI.parse(options[:storm_on_demand_auth_url] ||= API_URL)
        @connection_options = options[:connection_options] || {}
        @host       = uri.host
        @path       = uri.path
        @persistent = options[:persistent] || false
        @port       = uri.port
        @scheme     = uri.scheme
        @storm_on_demand_username = options[:storm_on_demand_username]
        @storm_on_demand_password = options[:storm_on_demand_password]
        @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
      end

      def reload
        @connection.reset
      end

      def request(params)
        begin
          response = @connection.request(params.merge!({
            :headers  => {
              'Content-Type' => 'application/json',
              'Authorization' => 'Basic ' << Base64.encode64("#{@storm_on_demand_username}:#{@storm_on_demand_password}").chomp
            }.merge!(params[:headers] || {}),
            :host     => @host,
            :path     => "#{@path}/#{API_VERSION}#{params[:path]}",
            :expects  => 200,
            :method   => :post
          }))
        rescue Excon::Errors::HTTPStatusError => error
          raise case error
          when Excon::Errors::NotFound
            Fog::StormOnDemand::Compute::NotFound.slurp(error)
          else
            error
          end
        end
        unless response.body.empty?
          response.body = Fog::JSON.decode(response.body)
        end
        if response.body.has_key?('error_class')
          raise(Fog::Compute::StormOnDemand::Error, response.body.inspect)
        end
        response
      end
    end
  end
end

Version data entries

48 entries across 48 versions & 3 rubygems

Version Path
fog-maestrodev-1.18.0.20131126122111 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131125111730 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131125083406 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131123105121 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131122203507 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131121075022 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131118164830 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131115184302 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131114200144 lib/fog/storm_on_demand/shared.rb
gapinc-fog-1.12.1.2.1 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131112185232 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.18.0.20131111203459 lib/fog/storm_on_demand/shared.rb
fog-1.18.0 lib/fog/storm_on_demand/shared.rb
fog-1.17.0 lib/fog/storm_on_demand/shared.rb
fog-1.16.0 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.15.0.20130927082724 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.15.0.20130829165835 lib/fog/storm_on_demand/shared.rb
fog-1.15.0 lib/fog/storm_on_demand/shared.rb
gapinc-fog-1.14.0 lib/fog/storm_on_demand/shared.rb
fog-maestrodev-1.14.0.20130806165225 lib/fog/storm_on_demand/shared.rb