Scott Seago
2009-Jan-29 14:35 UTC
[Ovirt-devel] [PATCH] fixed a couple random smart pool UI bugs:
1. the 'add storage' flexigrid for smart pools was broken due to an
error in generating the :conditions block
2. the pulldown list for smart pools was showing the DirectoryPools for each
user rather than the smart pools themselves.
Signed-off-by: Scott Seago <sseago at redhat.com>
---
src/app/controllers/smart_pools_controller.rb | 7 ++++++-
src/app/models/smart_pool.rb | 22 ++++++++++++----------
2 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/src/app/controllers/smart_pools_controller.rb
b/src/app/controllers/smart_pools_controller.rb
index cbfbd1c..f5f3c9d 100644
--- a/src/app/controllers/smart_pools_controller.rb
+++ b/src/app/controllers/smart_pools_controller.rb
@@ -76,7 +76,12 @@ class SmartPoolsController < PoolController
def storage_pools_json
args = items_json_internal(StoragePool, :tagged_storage_pools)
conditions = args[:find_opts][:conditions]
- conditions[0] = "(storage_pools.type != 'LvmStoragePool') and
(#{conditions[0]})"
+ storage_conditions = "storage_pools.type !=
'LvmStoragePool'"
+ if conditions[0]
+ conditions[0] = "(#{storage_conditions}) and
(#{conditions[0]})"
+ else
+ conditions[0] = storage_conditions
+ end
super(args)
end
diff --git a/src/app/models/smart_pool.rb b/src/app/models/smart_pool.rb
index 7df26fa..ca55a2e 100644
--- a/src/app/models/smart_pool.rb
+++ b/src/app/models/smart_pool.rb
@@ -75,22 +75,24 @@ class SmartPool < Pool
def self.smart_pools_for_user(user)
nested_pools = DirectoryPool.get_smart_root.full_set_nested(
:privilege => Permission::PRIV_MODIFY, :user =>
user,
- :smart_pool_set => true)
+ :smart_pool_set => true)[0][:children]
user_pools = []
other_pools = []
- nested_pools.each do |pool_element|
- pool = pool_element[:obj]
- if pool.hasChildren
- if pool.name == user
+ if nested_pools
+ nested_pools.each do |pool_element|
+ pool = pool_element[:obj]
+ if pool.hasChildren
+ if pool.name == user
pool_element[:children].each do |child_element|
child_pool = child_element[:obj]
user_pools <<[child_pool.name, child_pool.id]
end
- else
- if pool_element.has_key?(:children)
- pool_element[:children].each do |child_element|
- child_pool = child_element[:obj]
- other_pools << [pool.name + " > " +
child_pool.name, child_pool.id]
+ else
+ if pool_element.has_key?(:children)
+ pool_element[:children].each do |child_element|
+ child_pool = child_element[:obj]
+ other_pools << [pool.name + " > " +
child_pool.name, child_pool.id]
+ end
end
end
end
--
1.6.0.6
Jason Guiditta
2009-Jan-30 20:14 UTC
[Ovirt-devel] [PATCH] fixed a couple random smart pool UI bugs:
On Thu, 2009-01-29 at 14:35 +0000, Scott Seago wrote:> 1. the 'add storage' flexigrid for smart pools was broken due to an error in generating the :conditions block > 2. the pulldown list for smart pools was showing the DirectoryPools for each user rather than the smart pools themselves. > > Signed-off-by: Scott Seago <sseago at redhat.com> > --- > src/app/controllers/smart_pools_controller.rb | 7 ++++++- > src/app/models/smart_pool.rb | 22 ++++++++++++---------- > 2 files changed, 18 insertions(+), 11 deletions(-) > > diff --git a/src/app/controllers/smart_pools_controller.rb b/src/app/controllers/smart_pools_controller.rb > index cbfbd1c..f5f3c9d 100644 > --- a/src/app/controllers/smart_pools_controller.rb > +++ b/src/app/controllers/smart_pools_controller.rb > @@ -76,7 +76,12 @@ class SmartPoolsController < PoolController > def storage_pools_json > args = items_json_internal(StoragePool, :tagged_storage_pools) > conditions = args[:find_opts][:conditions] > - conditions[0] = "(storage_pools.type != 'LvmStoragePool') and (#{conditions[0]})" > + storage_conditions = "storage_pools.type != 'LvmStoragePool'" > + if conditions[0] > + conditions[0] = "(#{storage_conditions}) and (#{conditions[0]})" > + else > + conditions[0] = storage_conditions > + end > super(args) > end > > diff --git a/src/app/models/smart_pool.rb b/src/app/models/smart_pool.rb > index 7df26fa..ca55a2e 100644 > --- a/src/app/models/smart_pool.rb > +++ b/src/app/models/smart_pool.rb > @@ -75,22 +75,24 @@ class SmartPool < Pool > def self.smart_pools_for_user(user) > nested_pools = DirectoryPool.get_smart_root.full_set_nested( > :privilege => Permission::PRIV_MODIFY, :user => user, > - :smart_pool_set => true) > + :smart_pool_set => true)[0][:children] > user_pools = [] > other_pools = [] > - nested_pools.each do |pool_element| > - pool = pool_element[:obj] > - if pool.hasChildren > - if pool.name == user > + if nested_pools > + nested_pools.each do |pool_element| > + pool = pool_element[:obj] > + if pool.hasChildren > + if pool.name == user > pool_element[:children].each do |child_element| > child_pool = child_element[:obj] > user_pools <<[child_pool.name, child_pool.id] > end > - else > - if pool_element.has_key?(:children) > - pool_element[:children].each do |child_element| > - child_pool = child_element[:obj] > - other_pools << [pool.name + " > " + child_pool.name, child_pool.id] > + else > + if pool_element.has_key?(:children) > + pool_element[:children].each do |child_element| > + child_pool = child_element[:obj] > + other_pools << [pool.name + " > " + child_pool.name, child_pool.id] > + end > end > end > endACK, this solves the problems I was seeing. -j