diff --git a/lib/fog/aws.rb b/lib/fog/aws.rb index 2bbde77d3..9322c525c 100644 --- a/lib/fog/aws.rb +++ b/lib/fog/aws.rb @@ -5,20 +5,20 @@ module Fog extend Fog::Provider - service(:auto_scaling, 'aws/auto_scaling') - service(:cdn, 'aws/cdn') - service(:compute, 'aws/compute') - service(:cloud_formation, 'aws/cloud_formation') - service(:cloud_watch, 'aws/cloud_watch') - service(:dns, 'aws/dns') - service(:elb, 'aws/elb') - service(:iam, 'aws/iam') - service(:rds, 'aws/rds') - service(:ses, 'aws/ses') - service(:simpledb, 'aws/simpledb') - service(:sns, 'aws/sns') - service(:sqs, 'aws/sqs') - service(:storage, 'aws/storage') + service(:auto_scaling, 'aws/auto_scaling', 'AutoScaling') + service(:cdn, 'aws/cdn', 'CDN') + service(:compute, 'aws/compute', 'Compute') + service(:cloud_formation, 'aws/cloud_formation', 'CloudFormation') + service(:cloud_watch, 'aws/cloud_watch', 'CloudWatch') + service(:dns, 'aws/dns', 'DNS') + service(:elb, 'aws/elb', 'ELB') + service(:iam, 'aws/iam', 'IAM') + service(:rds, 'aws/rds', 'RDS') + service(:ses, 'aws/ses', 'SES') + service(:simpledb, 'aws/simpledb', 'SimpleDB') + service(:sns, 'aws/sns', 'SNS') + service(:sqs, 'aws/sqs', 'SQS') + service(:storage, 'aws/storage', 'Storage') def self.indexed_param(key, values) params = {} diff --git a/lib/fog/bluebox.rb b/lib/fog/bluebox.rb index f06c09789..b59cd948c 100644 --- a/lib/fog/bluebox.rb +++ b/lib/fog/bluebox.rb @@ -5,8 +5,8 @@ module Fog extend Fog::Provider - service(:compute, 'bluebox/compute') - service(:dns, 'bluebox/dns') + service(:compute, 'bluebox/compute', 'Compute') + service(:dns, 'bluebox/dns', 'DNS') end end diff --git a/lib/fog/brightbox.rb b/lib/fog/brightbox.rb index c20ef4ace..99f5f5478 100644 --- a/lib/fog/brightbox.rb +++ b/lib/fog/brightbox.rb @@ -4,7 +4,7 @@ module Fog module Brightbox extend Fog::Provider - service(:compute, 'brightbox/compute') + service(:compute, 'brightbox/compute', 'Compute') end end diff --git a/lib/fog/core/provider.rb b/lib/fog/core/provider.rb index d2ec11c3f..c8b8328ce 100644 --- a/lib/fog/core/provider.rb +++ b/lib/fog/core/provider.rb @@ -10,19 +10,20 @@ module Fog Fog.providers << base.to_s.split('::').last end - def service(new_service, path) + def [](service_key) + eval(@services_registry[service_key]).new + end + + def service(new_service, path, constant_string) Fog.services[new_service] ||= [] Fog.services[new_service] |= [self.to_s.split('::').last.downcase.to_sym] - self.services |= [new_service] + @services_registry ||= {} + @services_registry[new_service] = [self.to_s, constant_string].join('::') require File.join('fog', path) end def services - @services ||= [] - end - - def services=(new_services) - @services = new_services + @services_registry.keys end end diff --git a/lib/fog/dnsimple.rb b/lib/fog/dnsimple.rb index 16bba4a65..81ce6fa52 100644 --- a/lib/fog/dnsimple.rb +++ b/lib/fog/dnsimple.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:dns, 'dnsimple/dns') + service(:dns, 'dnsimple/dns', 'DNS') end end diff --git a/lib/fog/dnsmadeeasy.rb b/lib/fog/dnsmadeeasy.rb index 2c0270e3a..052f6cf55 100644 --- a/lib/fog/dnsmadeeasy.rb +++ b/lib/fog/dnsmadeeasy.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:dns, 'dnsmadeeasy/dns') + service(:dns, 'dnsmadeeasy/dns', 'DNS') end end diff --git a/lib/fog/dynect.rb b/lib/fog/dynect.rb index 0e9ff8cb0..21bd9d238 100644 --- a/lib/fog/dynect.rb +++ b/lib/fog/dynect.rb @@ -7,7 +7,7 @@ module Fog module Dynect extend Fog::Provider - service(:dns, 'dynect/dns') + service(:dns, 'dynect/dns', 'DNS') class Mock def self.job_id diff --git a/lib/fog/ecloud.rb b/lib/fog/ecloud.rb index bddb0f15d..3031c450e 100644 --- a/lib/fog/ecloud.rb +++ b/lib/fog/ecloud.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:compute, 'ecloud/compute') + service(:compute, 'ecloud/compute', 'Compute') end end diff --git a/lib/fog/glesys.rb b/lib/fog/glesys.rb index e99229fdc..f7d3d32a4 100644 --- a/lib/fog/glesys.rb +++ b/lib/fog/glesys.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:compute, 'glesys/compute') + service(:compute, 'glesys/compute', 'Compute') end end diff --git a/lib/fog/go_grid.rb b/lib/fog/go_grid.rb index b86f71947..4878d2a50 100644 --- a/lib/fog/go_grid.rb +++ b/lib/fog/go_grid.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:compute, 'go_grid/compute') + service(:compute, 'go_grid/compute', 'Compute') end end diff --git a/lib/fog/google.rb b/lib/fog/google.rb index 2f154df7e..2e3029679 100644 --- a/lib/fog/google.rb +++ b/lib/fog/google.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:storage, 'google/storage') + service(:storage, 'google/storage', 'Storage') class Mock diff --git a/lib/fog/libvirt.rb b/lib/fog/libvirt.rb index 543636a44..c1a13f065 100644 --- a/lib/fog/libvirt.rb +++ b/lib/fog/libvirt.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:compute, 'libvirt/compute') + service(:compute, 'libvirt/compute', 'Compute') end end diff --git a/lib/fog/linode.rb b/lib/fog/linode.rb index f072bf077..60bdd67da 100644 --- a/lib/fog/linode.rb +++ b/lib/fog/linode.rb @@ -3,8 +3,8 @@ require(File.expand_path(File.join(File.dirname(__FILE__), 'core'))) module Fog module Linode extend Fog::Provider - service(:compute, 'linode/compute') - service(:dns, 'linode/dns') + service(:compute, 'linode/compute', 'Compute') + service(:dns, 'linode/dns', 'DNS') end end diff --git a/lib/fog/local.rb b/lib/fog/local.rb index d008fa002..3bc976acc 100644 --- a/lib/fog/local.rb +++ b/lib/fog/local.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:storage, 'local/storage') + service(:storage, 'local/storage', 'Storage') end end diff --git a/lib/fog/new_servers.rb b/lib/fog/new_servers.rb index a3f257f67..9a7382657 100644 --- a/lib/fog/new_servers.rb +++ b/lib/fog/new_servers.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:compute, 'new_servers/compute') + service(:compute, 'new_servers/compute', 'Compute') end end diff --git a/lib/fog/ninefold.rb b/lib/fog/ninefold.rb index b55e8e172..31ce37270 100644 --- a/lib/fog/ninefold.rb +++ b/lib/fog/ninefold.rb @@ -5,8 +5,8 @@ module Fog extend Fog::Provider - service(:compute, 'ninefold/compute') - service(:storage, 'ninefold/storage') + service(:compute, 'ninefold/compute', 'Compute') + service(:storage, 'ninefold/storage', 'Storage') end end diff --git a/lib/fog/rackspace.rb b/lib/fog/rackspace.rb index 8532d0af7..5543e8287 100644 --- a/lib/fog/rackspace.rb +++ b/lib/fog/rackspace.rb @@ -42,11 +42,11 @@ module Fog end end - service(:cdn, 'rackspace/cdn') - service(:compute, 'rackspace/compute') - service(:dns, 'rackspace/dns') - service(:storage, 'rackspace/storage') - service(:load_balancers, 'rackspace/load_balancers') + service(:cdn, 'rackspace/cdn', 'CDN') + service(:compute, 'rackspace/compute', 'Compute') + service(:dns, 'rackspace/dns', 'DNS') + service(:storage, 'rackspace/storage', 'Storage') + service(:load_balancers, 'rackspace/load_balancers', 'LoadBalancers') def self.authenticate(options, connection_options = {}) rackspace_auth_url = options[:rackspace_auth_url] || "auth.api.rackspacecloud.com" diff --git a/lib/fog/slicehost.rb b/lib/fog/slicehost.rb index cc702c6b9..3a004c748 100644 --- a/lib/fog/slicehost.rb +++ b/lib/fog/slicehost.rb @@ -5,8 +5,8 @@ module Fog extend Fog::Provider - service(:compute, 'slicehost/compute') - service(:dns, 'slicehost/dns') + service(:compute, 'slicehost/compute', 'Compute') + service(:dns, 'slicehost/dns', 'DNS') end end diff --git a/lib/fog/storm_on_demand.rb b/lib/fog/storm_on_demand.rb index 1e5d36d28..c6563b378 100644 --- a/lib/fog/storm_on_demand.rb +++ b/lib/fog/storm_on_demand.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:compute, 'storm_on_demand/compute') + service(:compute, 'storm_on_demand/compute', 'Compute') end end diff --git a/lib/fog/vcloud.rb b/lib/fog/vcloud.rb index 323fd5fbc..c9c5ad4a0 100644 --- a/lib/fog/vcloud.rb +++ b/lib/fog/vcloud.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:compute, 'vcloud/compute') + service(:compute, 'vcloud/compute', 'Compute') end end diff --git a/lib/fog/virtual_box.rb b/lib/fog/virtual_box.rb index 03d8efec2..a806503e9 100644 --- a/lib/fog/virtual_box.rb +++ b/lib/fog/virtual_box.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:compute, 'virtual_box/compute') + service(:compute, 'virtual_box/compute', 'Compute') end end diff --git a/lib/fog/vmfusion.rb b/lib/fog/vmfusion.rb index b311e4668..4372c21ed 100644 --- a/lib/fog/vmfusion.rb +++ b/lib/fog/vmfusion.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:compute, 'vmfusion/compute') + service(:compute, 'vmfusion/compute', 'Compute') end end diff --git a/lib/fog/voxel.rb b/lib/fog/voxel.rb index 0f852b9fd..2ff744da7 100644 --- a/lib/fog/voxel.rb +++ b/lib/fog/voxel.rb @@ -6,7 +6,7 @@ module Fog extend Fog::Provider - service(:compute, 'voxel/compute') + service(:compute, 'voxel/compute', 'Compute') def self.create_signature(secret, options) to_sign = options.keys.map { |k| k.to_s }.sort.map { |k| "#{k}#{options[k.to_sym]}" }.join("") diff --git a/lib/fog/vsphere.rb b/lib/fog/vsphere.rb index 104e15740..2d8fd32a0 100644 --- a/lib/fog/vsphere.rb +++ b/lib/fog/vsphere.rb @@ -11,7 +11,7 @@ module Fog class NotFound < ServiceError; end end - service(:compute, 'vsphere/compute') + service(:compute, 'vsphere/compute', 'Compute') end end diff --git a/lib/fog/zerigo.rb b/lib/fog/zerigo.rb index 78725eac8..7acf6788e 100644 --- a/lib/fog/zerigo.rb +++ b/lib/fog/zerigo.rb @@ -5,7 +5,7 @@ module Fog extend Fog::Provider - service(:dns, 'zerigo/dns') + service(:dns, 'zerigo/dns', 'DNS') end end