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
>