[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