[Ovirt-devel] [PATCH server] Fix Vm.paged_with_perms

Jason Guiditta jguiditt at redhat.com
Wed Jul 1 01:03:16 UTC 2009


This fixes the sorting for cloud view by uptime, so sort
link should be ok to be enabled now.

Signed-off-by: Jason Guiditta <jguiditt at redhat.com>
---
 src/app/models/vm.rb     |   16 ++++++++++------
 src/test/unit/vm_test.rb |    6 ++++++
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/app/models/vm.rb b/src/app/models/vm.rb
index 393f8fc..c22a02e 100644
--- a/src/app/models/vm.rb
+++ b/src/app/models/vm.rb
@@ -420,19 +420,23 @@ class Vm < ActiveRecord::Base
     return i
   end
 
+  def self.calc_uptime
+    "case when state='running' then
+       (cast(total_uptime || ' sec' as interval) +
+        (now() - total_uptime_timestamp))
+     else cast(total_uptime || ' sec' as interval)
+     end as calc_uptime"
+  end
+
   # Make method for calling paginated vms easier for clients.
   # TODO: Might want to have an optional param for per_page var
   def self.paged_with_perms(user, priv, page, order)
-    Vm.paginate(:include => [{:vm_resource_pool =>
+    Vm.paginate(:joins => [{:vm_resource_pool =>
                               {:permissions => {:role => :privileges}}}],
                 :conditions => ["privileges.name=:priv
                            and permissions.uid=:user",
                          { :user => user, :priv => priv }],
-                :select => "*, case when state='running' then
-                                 (cast(total_uptime || ' sec' as interval) +
-                                  (now() - total_uptime_timestamp))
-                               else cast(total_uptime || ' sec' as interval)
-                               end as calc_uptime",
+                :select => calc_uptime,
                 :per_page => 5,
                 :page => page,
                 :order => order)
diff --git a/src/test/unit/vm_test.rb b/src/test/unit/vm_test.rb
index a5d6b3d..d405640 100644
--- a/src/test/unit/vm_test.rb
+++ b/src/test/unit/vm_test.rb
@@ -195,4 +195,10 @@ class VmTest < ActiveSupport::TestCase
   def test_paginated_results
     assert_equal 5, Vm.paged_with_perms('ovirtadmin', Privilege::VIEW, 1, 'vms.id').size
   end
+
+  def test_paginated_results_sorting
+    vms = Vm.paged_with_perms('ovirtadmin', Privilege::VIEW, 1, 'calc_uptime')
+     assert_equal(5, vms.size)
+     assert_equal('00:00:00',vms[0].calc_uptime)
+  end
 end
-- 
1.6.0.6




More information about the ovirt-devel mailing list