From 106dc86b0672093e7c96236d40a7b7473f2e5092 Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal Date: Sat, 16 Feb 2013 16:55:43 +0530 Subject: [PATCH 1/3] [openstack] Register the image service --- lib/fog/openstack.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/fog/openstack.rb b/lib/fog/openstack.rb index d37d2b849..8b7dc5488 100644 --- a/lib/fog/openstack.rb +++ b/lib/fog/openstack.rb @@ -42,6 +42,7 @@ module Fog end service(:compute , 'openstack/compute' , 'Compute' ) + service(:image, 'openstack/image', 'Image') service(:identity, 'openstack/identity', 'Identity') service(:network, 'openstack/network', 'Network') service(:storage, 'openstack/storage', 'Storage') From 9dc15001cebab5eeffe8fdaf5cbd2e5b2f8f0496 Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal Date: Sat, 16 Feb 2013 16:57:23 +0530 Subject: [PATCH 2/3] [fog] Typo fixed in identity --- lib/fog/identity.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fog/identity.rb b/lib/fog/identity.rb index 50cccdc7c..37fa5df8e 100644 --- a/lib/fog/identity.rb +++ b/lib/fog/identity.rb @@ -20,7 +20,7 @@ module Fog end def self.providers - Fog.services[:idenity] + Fog.services[:identity] end end From eb0545b7241c61248428c1cda96f7143a83ceaa3 Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal Date: Sat, 16 Feb 2013 16:58:38 +0530 Subject: [PATCH 3/3] [fog] Cleanup: Use the service registry for requiring libs where possible --- lib/fog/cdn.rb | 17 ++++-------- lib/fog/compute.rb | 68 ++++----------------------------------------- lib/fog/dns.rb | 37 +++++------------------- lib/fog/identity.rb | 7 +++-- lib/fog/image.rb | 11 ++++---- lib/fog/network.rb | 11 ++++---- lib/fog/storage.rb | 32 ++++----------------- lib/fog/volume.rb | 12 ++++---- 8 files changed, 42 insertions(+), 153 deletions(-) diff --git a/lib/fog/cdn.rb b/lib/fog/cdn.rb index 4d2a78749..6dac14e52 100644 --- a/lib/fog/cdn.rb +++ b/lib/fog/cdn.rb @@ -7,19 +7,12 @@ module Fog def self.new(attributes) attributes = attributes.dup # prevent delete from having side effects - case provider = attributes.delete(:provider).to_s.downcase.to_sym - when :aws - require 'fog/aws/cdn' - Fog::CDN::AWS.new(attributes) - when :hp - require 'fog/hp/cdn' - Fog::CDN::HP.new(attributes) - when :rackspace - require 'fog/rackspace/cdn' - Fog::CDN::Rackspace.new(attributes) - else - raise ArgumentError.new("#{provider} is not a recognized cdn provider") + provider = attributes.delete(:provider).to_s.downcase.to_sym + if self.providers.include?(provider) + require "fog/#{provider}/cdn" + return Fog::CDN.const_get(Fog.providers[provider]).new(attributes) end + raise ArgumentError.new("#{provider} is not a recognized cdn provider") end def self.providers diff --git a/lib/fog/compute.rb b/lib/fog/compute.rb index 5733a7577..a6a23471a 100644 --- a/lib/fog/compute.rb +++ b/lib/fog/compute.rb @@ -9,46 +9,11 @@ module Fog attributes = attributes.dup # prevent delete from having side effects provider = attributes.delete(:provider).to_s.downcase.to_sym + case provider - when :aws - require 'fog/aws/compute' - Fog::Compute::AWS.new(attributes) - when :bluebox - require 'fog/bluebox/compute' - Fog::Compute::Bluebox.new(attributes) - when :brightbox - require 'fog/brightbox/compute' - Fog::Compute::Brightbox.new(attributes) - when :cloudstack - require 'fog/cloudstack/compute' - Fog::Compute::Cloudstack.new(attributes) - when :clodo - require 'fog/clodo/compute' - Fog::Compute::Clodo.new(attributes) - when :ecloud - require 'fog/ecloud/compute' - Fog::Compute::Ecloud.new(attributes) - when :glesys - require 'fog/glesys/compute' - Fog::Compute::Glesys.new(attributes) when :gogrid require 'fog/go_grid/compute' Fog::Compute::GoGrid.new(attributes) - when :hp - require 'fog/hp/compute' - Fog::Compute::HP.new(attributes) - when :ibm - require 'fog/ibm/compute' - Fog::Compute::IBM.new(attributes) - when :joyent - require 'fog/joyent/compute' - Fog::Compute::Joyent.new(attributes) - when :libvirt - require 'fog/libvirt/compute' - Fog::Compute::Libvirt.new(attributes) - when :linode - require 'fog/linode/compute' - Fog::Compute::Linode.new(attributes) when :new_servers require 'fog/bare_metal_cloud/compute' Fog::Logger.deprecation "`new_servers` is deprecated. Please use `bare_metal_cloud` instead." @@ -56,15 +21,6 @@ module Fog when :baremetalcloud require 'fog/bare_metal_cloud/compute' Fog::Compute::BareMetalCloud.new(attributes) - when :ninefold - require 'fog/ninefold/compute' - Fog::Compute::Ninefold.new(attributes) - when :openstack - require 'fog/openstack/compute' - Fog::Compute::OpenStack.new(attributes) - when :ovirt - require 'fog/ovirt/compute' - Fog::Compute::Ovirt.new(attributes) when :rackspace version = attributes.delete(:version) version = version.to_s.downcase.to_sym unless version.nil? @@ -76,31 +32,17 @@ module Fog require 'fog/rackspace/compute' Fog::Compute::Rackspace.new(attributes) end - when :serverlove - require 'fog/serverlove/compute' - Fog::Compute::Serverlove.new(attributes) when :stormondemand require 'fog/storm_on_demand/compute' Fog::Compute::StormOnDemand.new(attributes) - when :vcloud - require 'fog/vcloud/compute' - Fog::Vcloud::Compute.new(attributes) when :virtualbox require 'fog/virtual_box/compute' Fog::Compute::VirtualBox.new(attributes) - when :vmfusion - require 'fog/vmfusion/compute' - Fog::Compute::Vmfusion.new(attributes) - when :voxel - require 'fog/voxel/compute' - Fog::Compute::Voxel.new(attributes) - when :vsphere - require 'fog/vsphere/compute' - Fog::Compute::Vsphere.new(attributes) - when :xenserver - require 'fog/xenserver/compute' - Fog::Compute::XenServer.new(attributes) else + if self.providers.include?(provider) + require "fog/#{provider}/compute" + return Fog::Compute.const_get(Fog.providers[provider]).new(attributes) + end raise ArgumentError.new("#{provider} is not a recognized compute provider") end end diff --git a/lib/fog/dns.rb b/lib/fog/dns.rb index cf003f2ce..09284af53 100644 --- a/lib/fog/dns.rb +++ b/lib/fog/dns.rb @@ -7,37 +7,14 @@ module Fog def self.new(attributes) attributes = attributes.dup # prevent delete from having side effects - case provider = attributes.delete(:provider).to_s.downcase.to_sym - when :aws - require 'fog/aws/dns' - Fog::DNS::AWS.new(attributes) - when :bluebox - require 'fog/bluebox/dns' - Fog::DNS::Bluebox.new(attributes) - when :dnsimple - require 'fog/dnsimple/dns' - Fog::DNS::DNSimple.new(attributes) - when :dnsmadeeasy - require 'fog/dnsmadeeasy/dns' - Fog::DNS::DNSMadeEasy.new(attributes) - when :dreamhost - require 'fog/dreamhost/dns' - Fog::DNS::Dreamhost.new(attributes) - when :dynect - require 'fog/dynect/dns' - Fog::DNS::Dynect.new(attributes) - when :linode - require 'fog/linode/dns' - Fog::DNS::Linode.new(attributes) - when :zerigo - require 'fog/zerigo/dns' - Fog::DNS::Zerigo.new(attributes) - when :rackspace - require 'fog/rackspace/dns' - Fog::DNS::Rackspace.new(attributes) - else - raise ArgumentError.new("#{provider} is not a recognized dns provider") + provider = attributes.delete(:provider).to_s.downcase.to_sym + + if self.providers.include?(provider) + require "fog/#{provider}/dns" + return Fog::DNS.const_get(Fog.providers[provider]).new(attributes) end + + raise ArgumentError.new("#{provider} is not a recognized dns provider") end def self.providers diff --git a/lib/fog/identity.rb b/lib/fog/identity.rb index 37fa5df8e..2d628fac1 100644 --- a/lib/fog/identity.rb +++ b/lib/fog/identity.rb @@ -11,10 +11,11 @@ module Fog when :rackspace require 'fog/rackspace/identity' Fog::Rackspace::Identity.new(attributes) - when :openstack - require 'fog/openstack/identity' - Fog::Identity::OpenStack.new(attributes) else + if self.providers.include?(provider) + require "fog/#{provider}/identity" + return Fog::Identity.const_get(Fog.providers[provider]).new(attributes) + end raise ArgumentError.new("#{provider} has no identity service") end end diff --git a/lib/fog/image.rb b/lib/fog/image.rb index 203b22433..c505c2599 100644 --- a/lib/fog/image.rb +++ b/lib/fog/image.rb @@ -7,13 +7,12 @@ module Fog def self.new(attributes) attributes = attributes.dup # Prevent delete from having side effects - case provider = attributes.delete(:provider).to_s.downcase.to_sym - when :openstack - require 'fog/openstack/image' - Fog::Image::OpenStack.new(attributes) - else - raise ArgumentError.new("#{provider} has no identity service") + provider = attributes.delete(:provider).to_s.downcase.to_sym + if self.providers.include?(provider) + require "fog/#{provider}/image" + return Fog::Image.const_get(Fog.providers[provider]).new(attributes) end + raise ArgumentError.new("#{provider} has no identity service") end def self.providers diff --git a/lib/fog/network.rb b/lib/fog/network.rb index 35b845fe5..15cc9fc79 100644 --- a/lib/fog/network.rb +++ b/lib/fog/network.rb @@ -9,13 +9,12 @@ module Fog attributes = attributes.dup # Prevent delete from having side effects provider = attributes.delete(:provider).to_s.downcase.to_sym - case provider - when :openstack - require 'fog/openstack/network' - Fog::Network::OpenStack.new(attributes) - else - raise ArgumentError.new("#{provider} has no network service") + if self.providers.include?(provider) + require "fog/#{provider}/network" + return Fog::Network.const_get(Fog.providers[provider]).new(attributes) end + + raise ArgumentError.new("#{provider} has no network service") end def self.providers diff --git a/lib/fog/storage.rb b/lib/fog/storage.rb index 4d51e60f7..c8562d4c0 100644 --- a/lib/fog/storage.rb +++ b/lib/fog/storage.rb @@ -8,37 +8,15 @@ module Fog def self.new(attributes) attributes = attributes.dup # prevent delete from having side effects case provider = attributes.delete(:provider).to_s.downcase.to_sym - when :atmos - require 'fog/atmos/storage' - Fog::Storage::Atmos.new(attributes) - when :aws - require 'fog/aws/storage' - Fog::Storage::AWS.new(attributes) - when :google - require 'fog/google/storage' - Fog::Storage::Google.new(attributes) - when :hp - require 'fog/hp/storage' - Fog::Storage::HP.new(attributes) - when :ibm - require 'fog/ibm/storage' - Fog::Storage::IBM.new(attributes) when :internetarchive require 'fog/internet_archive/storage' Fog::Storage::InternetArchive.new(attributes) - when :local - require 'fog/local/storage' - Fog::Storage::Local.new(attributes) - when :ninefold - require 'fog/ninefold/storage' - Fog::Storage::Ninefold.new(attributes) - when :rackspace - require 'fog/rackspace/storage' - Fog::Storage::Rackspace.new(attributes) - when :openstack - require 'fog/openstack/storage' - Fog::Storage::OpenStack.new(attributes) else + if self.providers.include?(provider) + require "fog/#{provider}/storage" + return Fog::Storage.const_get(Fog.providers[provider]).new(attributes) + end + raise ArgumentError.new("#{provider} is not a recognized storage provider") end end diff --git a/lib/fog/volume.rb b/lib/fog/volume.rb index 4a2903241..99ca8cf54 100644 --- a/lib/fog/volume.rb +++ b/lib/fog/volume.rb @@ -7,13 +7,13 @@ module Fog def self.new(attributes) attributes = attributes.dup # Prevent delete from having side effects - case provider = attributes.delete(:provider).to_s.downcase.to_sym - when :openstack - require 'fog/openstack/volume' - Fog::Volume::OpenStack.new(attributes) - else - raise ArgumentError.new("#{provider} has no identity service") + provider = attributes.delete(:provider).to_s.downcase.to_sym + if self.providers.include?(provider) + require "fog/#{provider}/volume" + return Fog::Volume.const_get(Fog.providers[provider]).new(attributes) end + + raise ArgumentError.new("#{provider} has no identity service") end def self.providers