You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by ma...@redhat.com on 2013/02/26 17:54:33 UTC

[PATCH] Deltacloud - rework 'valid_credentials' - moved to base_driver where possible

From: marios <ma...@redhat.com>

Drivers can override this where needed - like e.g. in ec2 driver where just
creating a handle to the aws service (via the appoxy/aws rubygem) isn't enough
to determine that credentials are not valid.

Signed-off-by: marios <ma...@redhat.com>
---
 .../lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb   |  9 ---------
 server/lib/deltacloud/drivers/base_driver.rb                 | 12 ++++++++++++
 server/lib/deltacloud/drivers/mock/mock_driver.rb            | 10 +---------
 server/lib/deltacloud/drivers/openstack/openstack_driver.rb  |  9 ---------
 server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb  |  9 ---------
 server/lib/deltacloud/drivers/terremark/terremark_driver.rb  |  8 --------
 server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb      | 12 ------------
 7 files changed, 13 insertions(+), 56 deletions(-)

diff --git a/server/lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb b/server/lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb
index 4a24760..be919e8 100644
--- a/server/lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb
+++ b/server/lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb
@@ -61,15 +61,6 @@ class ArubacloudDriver < Deltacloud::BaseDriver
     architecture ['x86_64', 'i386']
   end
 
-  def valid_credentials?(credentials)
-    begin
-      new_client(credentials)
-    rescue
-      return false
-    end
-    true
-  end
-
   def realms(credentials, opts=nil)
     client = new_client(credentials)
     safely do
diff --git a/server/lib/deltacloud/drivers/base_driver.rb b/server/lib/deltacloud/drivers/base_driver.rb
index 1bb80d5..e346e7c 100644
--- a/server/lib/deltacloud/drivers/base_driver.rb
+++ b/server/lib/deltacloud/drivers/base_driver.rb
@@ -286,6 +286,18 @@ module Deltacloud
     def configured_providers
       []
     end
+
+    def valid_credentials?(credentials)
+      begin
+        new_client(credentials)
+      rescue  Deltacloud::Exceptions::AuthenticationFailure
+        return false
+      rescue => e
+        safely { raise e }
+      end
+      true
+    end
+
   end
 
 end
diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb b/server/lib/deltacloud/drivers/mock/mock_driver.rb
index fe930c2..f4e86c1 100644
--- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
+++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
@@ -578,15 +578,6 @@ module Deltacloud::Drivers::Mock
       metric
     end
 
-    def valid_credentials?(credentials)
-      begin
-        check_credentials(credentials)
-        return true
-      rescue
-      end
-      return false
-    end
-
     private
 
     def check_credentials(credentials)
@@ -596,6 +587,7 @@ module Deltacloud::Drivers::Mock
         end
       end
     end
+    alias :new_client :check_credentials
 
     #Mock allocation of 'new' address
     #There is a synchronization problem (but it's the mock driver,
diff --git a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
index 356d835..5b420bb 100644
--- a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
+++ b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
@@ -237,15 +237,6 @@ module Deltacloud
 
         alias_method :stop_instance, :destroy_instance
 
-        def valid_credentials?(credentials)
-          begin
-            new_client(credentials)
-          rescue
-            return false
-          end
-          true
-        end
-
         def buckets(credentials, opts={})
           os = new_client(credentials, "object-store")
           buckets = []
diff --git a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
index 8082767..24ae55d 100644
--- a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
+++ b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
@@ -181,15 +181,6 @@ class RackspaceDriver < Deltacloud::BaseDriver
     insts
   end
 
-  def valid_credentials?(credentials)
-    begin
-      new_client(credentials)
-    rescue
-      return false
-    end
-    true
-  end
-
   define_instance_states do
     start.to( :pending )          .on( :create )
     pending.to( :running )        .automatically
diff --git a/server/lib/deltacloud/drivers/terremark/terremark_driver.rb b/server/lib/deltacloud/drivers/terremark/terremark_driver.rb
index 1d3f4ce..30d092b 100644
--- a/server/lib/deltacloud/drivers/terremark/terremark_driver.rb
+++ b/server/lib/deltacloud/drivers/terremark/terremark_driver.rb
@@ -197,14 +197,6 @@ def destroy_instance(credentials, id)
   end
 end
 
-def valid_credentials?(credentials)
-  begin
-    new_client(credentials)
-  rescue
-    return false
-  end
-  true
-end
 
 #--
 # PRIVATE METHODS:
diff --git a/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb b/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb
index 272f471..0f9978e 100644
--- a/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb
+++ b/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb
@@ -390,18 +390,6 @@ module Deltacloud::Drivers::Vsphere
 
     end
 
-    def valid_credentials?(credentials)
-      begin
-        RbVmomi::VIM.connect(:host => host_endpoint, :user => credentials.user, :password => credentials.password, :insecure => true) && true
-      rescue RbVmomi::Fault::InvalidLogin
-        return false
-      rescue => e
-        safely do
-          raise e
-        end
-      end
-    end
-
     #######
     private
     #######
-- 
1.7.11.7


Re: [PATCH] Deltacloud - rework 'valid_credentials' - moved to base_driver where possible

Posted by Michal Fojtik <mf...@redhat.com>.
On 02/26, marios@redhat.com wrote:

ACK.


> From: marios <ma...@redhat.com>
> 
> Drivers can override this where needed - like e.g. in ec2 driver where just
> creating a handle to the aws service (via the appoxy/aws rubygem) isn't enough
> to determine that credentials are not valid.
> 
> Signed-off-by: marios <ma...@redhat.com>
> ---
>  .../lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb   |  9 ---------
>  server/lib/deltacloud/drivers/base_driver.rb                 | 12 ++++++++++++
>  server/lib/deltacloud/drivers/mock/mock_driver.rb            | 10 +---------
>  server/lib/deltacloud/drivers/openstack/openstack_driver.rb  |  9 ---------
>  server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb  |  9 ---------
>  server/lib/deltacloud/drivers/terremark/terremark_driver.rb  |  8 --------
>  server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb      | 12 ------------
>  7 files changed, 13 insertions(+), 56 deletions(-)
> 
> diff --git a/server/lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb b/server/lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb
> index 4a24760..be919e8 100644
> --- a/server/lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb
> +++ b/server/lib/deltacloud/drivers/arubacloud/arubacloud_driver.rb
> @@ -61,15 +61,6 @@ class ArubacloudDriver < Deltacloud::BaseDriver
>      architecture ['x86_64', 'i386']
>    end
>  
> -  def valid_credentials?(credentials)
> -    begin
> -      new_client(credentials)
> -    rescue
> -      return false
> -    end
> -    true
> -  end
> -
>    def realms(credentials, opts=nil)
>      client = new_client(credentials)
>      safely do
> diff --git a/server/lib/deltacloud/drivers/base_driver.rb b/server/lib/deltacloud/drivers/base_driver.rb
> index 1bb80d5..e346e7c 100644
> --- a/server/lib/deltacloud/drivers/base_driver.rb
> +++ b/server/lib/deltacloud/drivers/base_driver.rb
> @@ -286,6 +286,18 @@ module Deltacloud
>      def configured_providers
>        []
>      end
> +
> +    def valid_credentials?(credentials)
> +      begin
> +        new_client(credentials)
> +      rescue  Deltacloud::Exceptions::AuthenticationFailure
> +        return false
> +      rescue => e
> +        safely { raise e }
> +      end
> +      true
> +    end
> +
>    end
>  
>  end
> diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb b/server/lib/deltacloud/drivers/mock/mock_driver.rb
> index fe930c2..f4e86c1 100644
> --- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
> +++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
> @@ -578,15 +578,6 @@ module Deltacloud::Drivers::Mock
>        metric
>      end
>  
> -    def valid_credentials?(credentials)
> -      begin
> -        check_credentials(credentials)
> -        return true
> -      rescue
> -      end
> -      return false
> -    end
> -
>      private
>  
>      def check_credentials(credentials)
> @@ -596,6 +587,7 @@ module Deltacloud::Drivers::Mock
>          end
>        end
>      end
> +    alias :new_client :check_credentials
>  
>      #Mock allocation of 'new' address
>      #There is a synchronization problem (but it's the mock driver,
> diff --git a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
> index 356d835..5b420bb 100644
> --- a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
> +++ b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
> @@ -237,15 +237,6 @@ module Deltacloud
>  
>          alias_method :stop_instance, :destroy_instance
>  
> -        def valid_credentials?(credentials)
> -          begin
> -            new_client(credentials)
> -          rescue
> -            return false
> -          end
> -          true
> -        end
> -
>          def buckets(credentials, opts={})
>            os = new_client(credentials, "object-store")
>            buckets = []
> diff --git a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
> index 8082767..24ae55d 100644
> --- a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
> +++ b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
> @@ -181,15 +181,6 @@ class RackspaceDriver < Deltacloud::BaseDriver
>      insts
>    end
>  
> -  def valid_credentials?(credentials)
> -    begin
> -      new_client(credentials)
> -    rescue
> -      return false
> -    end
> -    true
> -  end
> -
>    define_instance_states do
>      start.to( :pending )          .on( :create )
>      pending.to( :running )        .automatically
> diff --git a/server/lib/deltacloud/drivers/terremark/terremark_driver.rb b/server/lib/deltacloud/drivers/terremark/terremark_driver.rb
> index 1d3f4ce..30d092b 100644
> --- a/server/lib/deltacloud/drivers/terremark/terremark_driver.rb
> +++ b/server/lib/deltacloud/drivers/terremark/terremark_driver.rb
> @@ -197,14 +197,6 @@ def destroy_instance(credentials, id)
>    end
>  end
>  
> -def valid_credentials?(credentials)
> -  begin
> -    new_client(credentials)
> -  rescue
> -    return false
> -  end
> -  true
> -end
>  
>  #--
>  # PRIVATE METHODS:
> diff --git a/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb b/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb
> index 272f471..0f9978e 100644
> --- a/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb
> +++ b/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb
> @@ -390,18 +390,6 @@ module Deltacloud::Drivers::Vsphere
>  
>      end
>  
> -    def valid_credentials?(credentials)
> -      begin
> -        RbVmomi::VIM.connect(:host => host_endpoint, :user => credentials.user, :password => credentials.password, :insecure => true) && true
> -      rescue RbVmomi::Fault::InvalidLogin
> -        return false
> -      rescue => e
> -        safely do
> -          raise e
> -        end
> -      end
> -    end
> -
>      #######
>      private
>      #######
> -- 
> 1.7.11.7
> 

-- 
Michal Fojtik <mf...@redhat.com>
Deltacloud API, CloudForms