[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