Scott Seago
2008-Aug-25 14:06 UTC
[Ovirt-devel] [PATCH] added hardware_pool and vm_pool to tasks to facilitate pool-level task summaries.
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
Steve Linabery
2008-Aug-27 19:16 UTC
[Ovirt-devel] [PATCH] added hardware_pool and vm_pool to tasks to facilitate pool-level task summaries.
On Mon, Aug 25, 2008 at 10:06:55AM -0400, Scott Seago wrote:> > 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 > > _______________________________________________ > Ovirt-devel mailing list > Ovirt-devel at redhat.com > https://www.redhat.com/mailman/listinfo/ovirt-develWorks for me. ACK!