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