[Ovirt-devel] [PATCH] added hardware_pool and vm_pool to tasks to facilitate pool-level task summaries.

Scott Seago sseago at redhat.com
Mon Aug 25 14:06:55 UTC 2008


Signed-off-by: Scott Seago <sseago at redhat.com>
---
 wui/src/app/models/hardware_pool.rb          |    1 +
 wui/src/app/models/host_task.rb              |    4 ++
 wui/src/app/models/storage_task.rb           |    4 ++
 wui/src/app/models/task.rb                   |    2 +
 wui/src/app/models/vm_resource_pool.rb       |    1 +
 wui/src/app/models/vm_task.rb                |    7 +++
 wui/src/db/migrate/016_add_pools_to_tasks.rb |   58 ++++++++++++++++++++++++++
 7 files changed, 77 insertions(+), 0 deletions(-)
 create mode 100644 wui/src/db/migrate/016_add_pools_to_tasks.rb

diff --git a/wui/src/app/models/hardware_pool.rb b/wui/src/app/models/hardware_pool.rb
index 276779f..3678420 100644
--- a/wui/src/app/models/hardware_pool.rb
+++ b/wui/src/app/models/hardware_pool.rb
@@ -19,6 +19,7 @@
 
 class HardwarePool < Pool
 
+  has_many :tasks, :dependent => :nullify, :order => "id ASC"
   def all_storage_volumes
     StorageVolume.find(:all, :include => {:storage_pool => :hardware_pool}, :conditions => "pools.id = #{id}")
   end
diff --git a/wui/src/app/models/host_task.rb b/wui/src/app/models/host_task.rb
index 5cce5b9..ae597b0 100644
--- a/wui/src/app/models/host_task.rb
+++ b/wui/src/app/models/host_task.rb
@@ -21,4 +21,8 @@ class HostTask < Task
   belongs_to :host
 
   ACTION_CLEAR_VMS = "clear_vms"
+
+  def after_initialize
+    self.hardware_pool = host.hardware_pool if self.host
+  end
 end
diff --git a/wui/src/app/models/storage_task.rb b/wui/src/app/models/storage_task.rb
index 5d67b98..e57b6de 100644
--- a/wui/src/app/models/storage_task.rb
+++ b/wui/src/app/models/storage_task.rb
@@ -21,4 +21,8 @@ class StorageTask < Task
   belongs_to :storage_pool
 
   ACTION_REFRESH_POOL = "refresh_pool"
+
+  def after_initialize
+    self.hardware_pool = storage_pool.hardware_pool if self.storage_pool
+  end
 end
diff --git a/wui/src/app/models/task.rb b/wui/src/app/models/task.rb
index 7960056..a7faaf0 100644
--- a/wui/src/app/models/task.rb
+++ b/wui/src/app/models/task.rb
@@ -18,6 +18,8 @@
 # also available at http://www.gnu.org/copyleft/gpl.html.
 
 class Task < ActiveRecord::Base
+  belongs_to :hardware_pool
+  belongs_to :vm_resource_pool
 
   STATE_QUEUED       = "queued"
   STATE_RUNNING      = "running"
diff --git a/wui/src/app/models/vm_resource_pool.rb b/wui/src/app/models/vm_resource_pool.rb
index d3f7d43..fff6dac 100644
--- a/wui/src/app/models/vm_resource_pool.rb
+++ b/wui/src/app/models/vm_resource_pool.rb
@@ -19,6 +19,7 @@
 
 class VmResourcePool < Pool
 
+  has_many :tasks, :dependent => :nullify, :order => "id ASC"
   def get_type_label
     "Virtual Machine Pool"
   end
diff --git a/wui/src/app/models/vm_task.rb b/wui/src/app/models/vm_task.rb
index 3f52478..ab96e6f 100644
--- a/wui/src/app/models/vm_task.rb
+++ b/wui/src/app/models/vm_task.rb
@@ -107,6 +107,13 @@ class VmTask < Task
                                                      PRIV_OBJECT_HW_POOL],
                                       :popup_action => 'migrate'} }
 
+  def after_initialize
+    if self.vm
+      self.vm_resource_pool = vm.vm_resource_pool
+      self.hardware_pool = vm.get_hardware_pool
+    end
+  end
+
   def self.valid_actions_for_vm_state(state, vm=nil, user=nil)
     actions = []
     ACTIONS.each do |action, hash|
diff --git a/wui/src/db/migrate/016_add_pools_to_tasks.rb b/wui/src/db/migrate/016_add_pools_to_tasks.rb
new file mode 100644
index 0000000..58ff83d
--- /dev/null
+++ b/wui/src/db/migrate/016_add_pools_to_tasks.rb
@@ -0,0 +1,58 @@
+#
+# Copyright (C) 2008 Red Hat, Inc.
+# Written by Scott Seago <sseago at redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA  02110-1301, USA.  A copy of the GNU General Public License is
+# also available at http://www.gnu.org/copyleft/gpl.html.
+
+class AddPoolsToTasks < ActiveRecord::Migration
+  def self.up
+    add_column :tasks, :vm_resource_pool_id, :integer
+    add_column :tasks, :hardware_pool_id, :integer
+    execute "alter table tasks add constraint fk_tasks_vm_pools
+             foreign key (vm_resource_pool_id) references pools(id)"
+    execute "alter table tasks add constraint fk_tasks_hw_pools
+             foreign key (hardware_pool_id) references pools(id)"
+    Task.transaction do
+      VmTask.find(:all).each do |task|
+        vm = task.vm
+        if vm
+          task.vm_resource_pool = vm.vm_resource_pool
+          task.hardware_pool = vm.get_hardware_pool
+          task.save!
+        end
+      end
+      StorageTask.find(:all).each  do |task|
+        pool = task.storage_pool
+        if pool
+          task.hardware_pool = pool.hardware_pool
+          task.save!
+        end
+      end
+      HostTask.find(:all).each do |task|
+        host = task.host
+        if host
+          task.hardware_pool = host.hardware_pool
+          task.save!
+        end
+      end
+    end
+  end
+
+  def self.down
+    remove_column :tasks, :vm_resource_pool_id
+    remove_column :tasks, :hardware_pool_id
+  end
+end
-- 
1.5.5.1




More information about the ovirt-devel mailing list