lib/fog/storm_on_demand/compute.rb in fog-maestrodev-1.8.0.20130114204828 vs lib/fog/storm_on_demand/compute.rb in fog-maestrodev-1.14.0.20130806165225
- old
+ new
@@ -1,49 +1,68 @@
require 'fog/storm_on_demand'
require 'fog/compute'
+require 'fog/storm_on_demand/shared'
module Fog
module Compute
class StormOnDemand < Fog::Service
- API_URL = 'https://api.stormondemand.com'
-
requires :storm_on_demand_username, :storm_on_demand_password
recognizes :storm_on_demand_auth_url
model_path 'fog/storm_on_demand/models/compute'
model :config
collection :configs
model :image
collection :images
model :server
collection :servers
- model :balancer
- collection :balancers
- model :private_ip
- collection :private_ips
- model :stat
- collection :stats
model :template
collection :templates
+ model :product
+ collection :products
+ model :notification
+ collection :notifications
request_path 'fog/storm_on_demand/requests/compute'
request :clone_server
request :delete_server
request :reboot_server
request :list_servers
request :get_server
request :create_server
request :resize_server
- request :remove_balancer_node
- request :add_balancer_node
- request :list_balancers
+ request :server_history
+ request :shutdown_server
+ request :start_server
+ request :server_status
+ request :update_server
+
request :list_configs
+ request :get_config_details
+
request :list_templates
+ request :get_template_details
+ request :restore_template
+
request :list_images
- request :get_stats
- request :list_private_ips
+ request :create_image
+ request :delete_image
+ request :get_image_details
+ request :update_image
+ request :restore_image
+
+ request :get_product
+ request :get_product_code
+ request :list_products
+ request :get_product_price
+ request :get_product_starting_price
+
+ request :list_notifications
+ request :current_notifications
+ request :get_notification
+ request :resolve_notification
class Mock
def self.data
@data ||= Hash.new do |hash, key|
@@ -82,54 +101,10 @@
end
class Real
- 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}/#{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?('full_error')
- raise(Fog::Compute::StormOnDemand::Error, response.body.inspect)
- end
- response
- end
+ include Fog::StormOnDemand::RealShared
end
end
end
end