2010-09-29 13:22:30 -07:00
|
|
|
require 'fog/core/credentials'
|
2010-06-23 17:22:44 -07:00
|
|
|
|
2010-02-11 21:41:37 -08:00
|
|
|
module Fog
|
|
|
|
class << self
|
|
|
|
|
2011-05-24 17:31:05 -07:00
|
|
|
def available_providers
|
2011-10-20 10:52:36 -05:00
|
|
|
@available_providers ||= Fog.providers.values.select {|provider| Kernel.const_get(provider).available?}.sort
|
2011-02-09 16:39:37 -08:00
|
|
|
end
|
|
|
|
|
2010-02-11 21:41:37 -08:00
|
|
|
end
|
2010-09-21 11:11:15 -07:00
|
|
|
|
|
|
|
class Bin
|
|
|
|
class << self
|
|
|
|
|
|
|
|
def available?
|
|
|
|
availability = true
|
|
|
|
for service in services
|
|
|
|
begin
|
2010-12-06 19:49:58 -08:00
|
|
|
service = self.class_for(service)
|
|
|
|
availability &&= service.requirements.all? { |requirement| Fog.credentials.include?(requirement) }
|
|
|
|
rescue ArgumentError => e
|
2011-09-02 12:30:10 -05:00
|
|
|
Fog::Logger.warning(e.message)
|
2010-12-06 19:49:58 -08:00
|
|
|
availability = false
|
|
|
|
rescue => e
|
2010-09-21 11:11:15 -07:00
|
|
|
availability = false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if availability
|
|
|
|
for service in services
|
2010-12-06 19:49:58 -08:00
|
|
|
for collection in self.class_for(service).collections
|
2010-09-21 15:57:27 -07:00
|
|
|
unless self.respond_to?(collection)
|
|
|
|
self.class_eval <<-EOS, __FILE__, __LINE__
|
|
|
|
def self.#{collection}
|
|
|
|
self[:#{service}].#{collection}
|
|
|
|
end
|
|
|
|
EOS
|
|
|
|
end
|
2010-09-21 11:11:15 -07:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
availability
|
|
|
|
end
|
|
|
|
|
|
|
|
def collections
|
|
|
|
services.map {|service| self[service].collections}.flatten.sort_by {|service| service.to_s}
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2010-04-03 00:29:42 -07:00
|
|
|
end
|
2010-09-21 11:11:15 -07:00
|
|
|
|
2011-01-07 15:41:51 -08:00
|
|
|
require 'fog/bin/aws'
|
|
|
|
require 'fog/bin/bluebox'
|
|
|
|
require 'fog/bin/brightbox'
|
2011-08-02 11:58:18 -04:00
|
|
|
require 'fog/bin/cloudstack'
|
2011-10-01 01:46:05 +04:00
|
|
|
require 'fog/bin/clodo'
|
2011-03-09 17:03:15 -08:00
|
|
|
require 'fog/bin/dnsimple'
|
2011-05-30 00:41:27 +01:00
|
|
|
require 'fog/bin/dnsmadeeasy'
|
2011-07-14 19:22:43 -05:00
|
|
|
require 'fog/bin/dynect'
|
2011-02-17 10:44:46 -08:00
|
|
|
require 'fog/bin/ecloud'
|
2011-08-10 15:03:51 +02:00
|
|
|
require 'fog/bin/glesys'
|
2011-01-07 15:41:51 -08:00
|
|
|
require 'fog/bin/go_grid'
|
|
|
|
require 'fog/bin/google'
|
2011-06-15 02:10:54 -04:00
|
|
|
require 'fog/bin/hp'
|
2011-12-02 10:27:44 -08:00
|
|
|
require 'fog/bin/ibm'
|
2012-02-10 23:10:49 +08:00
|
|
|
require 'fog/bin/joyent'
|
2011-06-28 15:47:16 +02:00
|
|
|
require 'fog/bin/libvirt'
|
2011-01-07 15:41:51 -08:00
|
|
|
require 'fog/bin/linode'
|
|
|
|
require 'fog/bin/local'
|
2012-03-01 18:54:49 -08:00
|
|
|
require 'fog/bin/bare_metal_cloud'
|
2011-04-17 10:43:30 +10:00
|
|
|
require 'fog/bin/ninefold'
|
2011-01-07 15:41:51 -08:00
|
|
|
require 'fog/bin/rackspace'
|
2011-09-29 14:10:21 -04:00
|
|
|
require 'fog/bin/openstack'
|
2012-02-02 14:58:46 +02:00
|
|
|
require 'fog/bin/ovirt'
|
2011-01-07 15:41:51 -08:00
|
|
|
require 'fog/bin/slicehost'
|
2011-04-27 21:49:56 -04:00
|
|
|
require 'fog/bin/stormondemand'
|
2011-01-07 15:41:51 -08:00
|
|
|
require 'fog/bin/terremark'
|
2011-05-24 11:17:16 +10:00
|
|
|
require 'fog/bin/vcloud'
|
2011-03-09 17:03:15 -08:00
|
|
|
require 'fog/bin/virtual_box'
|
2011-09-16 14:57:00 +02:00
|
|
|
require 'fog/bin/vmfusion'
|
2011-08-29 20:04:04 -07:00
|
|
|
require 'fog/bin/vsphere'
|
2011-01-19 15:47:35 -05:00
|
|
|
require 'fog/bin/voxel'
|
2012-04-02 13:25:03 +02:00
|
|
|
require 'fog/bin/xenserver'
|
2011-01-07 15:41:51 -08:00
|
|
|
require 'fog/bin/zerigo'
|