You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2012/10/08 13:15:32 UTC

[PATCH core] Core: Pass all query params to :index operation

From: Michal Fojtik <mf...@redhat.com>

* Fixes problem when feature with extra param is defined
  and this params is not correctly passed to the driver
  method.

Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/deltacloud/drivers/features.rb          |    7 +++++++
 server/lib/deltacloud/drivers/mock/mock_driver.rb  |    4 +++-
 server/lib/deltacloud/helpers/deltacloud_helper.rb |   14 +++-----------
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/server/lib/deltacloud/drivers/features.rb b/server/lib/deltacloud/drivers/features.rb
index bc8bb5b..5fc8cfd 100644
--- a/server/lib/deltacloud/drivers/features.rb
+++ b/server/lib/deltacloud/drivers/features.rb
@@ -65,6 +65,13 @@ module Deltacloud
         end
       end
 
+      feature :realm_filter, :for => :instances do
+        description "Filter instances by realm"
+        operation :index do
+          param :realm_id, :string, :optional
+        end
+      end
+
       feature :user_name, :for => :instances do
         description "Allow to set user-defined name for the instance"
         operation :create do
diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb b/server/lib/deltacloud/drivers/mock/mock_driver.rb
index e765a9f..e50d4b1 100644
--- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
+++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
@@ -80,6 +80,7 @@ module Deltacloud::Drivers::Mock
     feature :instances, :user_data
     feature :instances, :authentication_key
     feature :instances, :metrics
+    feature :instances, :realm_filter
     feature :images, :user_name
     feature :images, :user_description
 
@@ -162,12 +163,13 @@ module Deltacloud::Drivers::Mock
       end
     end
 
-    def instances(credentials, opts=nil)
+    def instances(credentials, opts={})
       check_credentials( credentials )
       instances = @client.build_all(Instance)
       instances = filter_on( instances, :owner_id, :owner_id => credentials.user )
       instances = filter_on( instances, :id, opts )
       instances = filter_on( instances, :state, opts )
+      instances = filter_on( instances, :realm_id, opts)
       instances
     end
 
diff --git a/server/lib/deltacloud/helpers/deltacloud_helper.rb b/server/lib/deltacloud/helpers/deltacloud_helper.rb
index 69d74a3..ab4a0c0 100644
--- a/server/lib/deltacloud/helpers/deltacloud_helper.rb
+++ b/server/lib/deltacloud/helpers/deltacloud_helper.rb
@@ -33,18 +33,10 @@ module Deltacloud::Helpers
     end
 
     def filter_all(model)
-      filter = {}
-      filter.merge!(:id => params[:id]) if params[:id]
-      filter.merge!(:architecture => params[:architecture]) if params[:architecture]
-      filter.merge!(:owner_id => params[:owner_id]) if params[:owner_id]
-      filter.merge!(:state => params[:state]) if params[:state]
-      filter = {} if filter.keys.size.eql?(0)
       begin
-        @benchmark = Benchmark.measure do
-          @elements = driver.send(model.to_sym, credentials, filter)
-        end
-      rescue
-        @exception = $!
+        @benchmark = Benchmark.measure { @elements = driver.send(model.to_sym, credentials, params) }
+      rescue => e
+        @exception = e
       end
       if @elements
         headers['X-Backend-Runtime'] = @benchmark.real.to_s
-- 
1.7.10.2


RE: [PATCH core] Core: Pass all query params to :index operation

Posted by "Koper, Dies" <di...@fast.au.fujitsu.com>.
ACK

Cheers,
Dies Koper

> -----Original Message-----
> From: mfojtik@redhat.com [mailto:mfojtik@redhat.com]
> Sent: Monday, 8 October 2012 10:16 PM
> To: dev@deltacloud.apache.org
> Subject: [PATCH core] Core: Pass all query params to :index operation
> 
> From: Michal Fojtik <mf...@redhat.com>
> 
> * Fixes problem when feature with extra param is defined
>   and this params is not correctly passed to the driver
>   method.
> 
> Signed-off-by: Michal fojtik <mf...@redhat.com>
> ---
>  server/lib/deltacloud/drivers/features.rb          |    7 +++++++
>  server/lib/deltacloud/drivers/mock/mock_driver.rb  |    4 +++-
>  server/lib/deltacloud/helpers/deltacloud_helper.rb |   14
+++-----------
>  3 files changed, 13 insertions(+), 12 deletions(-)
> 
> diff --git a/server/lib/deltacloud/drivers/features.rb
> b/server/lib/deltacloud/drivers/features.rb
> index bc8bb5b..5fc8cfd 100644
> --- a/server/lib/deltacloud/drivers/features.rb
> +++ b/server/lib/deltacloud/drivers/features.rb
> @@ -65,6 +65,13 @@ module Deltacloud
>          end
>        end
> 
> +      feature :realm_filter, :for => :instances do
> +        description "Filter instances by realm"
> +        operation :index do
> +          param :realm_id, :string, :optional
> +        end
> +      end
> +
>        feature :user_name, :for => :instances do
>          description "Allow to set user-defined name for the instance"
>          operation :create do
> diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb
> b/server/lib/deltacloud/drivers/mock/mock_driver.rb
> index e765a9f..e50d4b1 100644
> --- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
> +++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
> @@ -80,6 +80,7 @@ module Deltacloud::Drivers::Mock
>      feature :instances, :user_data
>      feature :instances, :authentication_key
>      feature :instances, :metrics
> +    feature :instances, :realm_filter
>      feature :images, :user_name
>      feature :images, :user_description
> 
> @@ -162,12 +163,13 @@ module Deltacloud::Drivers::Mock
>        end
>      end
> 
> -    def instances(credentials, opts=nil)
> +    def instances(credentials, opts={})
>        check_credentials( credentials )
>        instances = @client.build_all(Instance)
>        instances = filter_on( instances, :owner_id, :owner_id =>
credentials.user )
>        instances = filter_on( instances, :id, opts )
>        instances = filter_on( instances, :state, opts )
> +      instances = filter_on( instances, :realm_id, opts)
>        instances
>      end
> 
> diff --git a/server/lib/deltacloud/helpers/deltacloud_helper.rb
> b/server/lib/deltacloud/helpers/deltacloud_helper.rb
> index 69d74a3..ab4a0c0 100644
> --- a/server/lib/deltacloud/helpers/deltacloud_helper.rb
> +++ b/server/lib/deltacloud/helpers/deltacloud_helper.rb
> @@ -33,18 +33,10 @@ module Deltacloud::Helpers
>      end
> 
>      def filter_all(model)
> -      filter = {}
> -      filter.merge!(:id => params[:id]) if params[:id]
> -      filter.merge!(:architecture => params[:architecture]) if
> params[:architecture]
> -      filter.merge!(:owner_id => params[:owner_id]) if
params[:owner_id]
> -      filter.merge!(:state => params[:state]) if params[:state]
> -      filter = {} if filter.keys.size.eql?(0)
>        begin
> -        @benchmark = Benchmark.measure do
> -          @elements = driver.send(model.to_sym, credentials, filter)
> -        end
> -      rescue
> -        @exception = $!
> +        @benchmark = Benchmark.measure { @elements =
> driver.send(model.to_sym, credentials, params) }
> +      rescue => e
> +        @exception = e
>        end
>        if @elements
>          headers['X-Backend-Runtime'] = @benchmark.real.to_s
> --
> 1.7.10.2
>