Michel Loiseleur
2009-Nov-13 11:46 UTC
[Ovirt-devel] [PATCH server] Replace the occurence of the type @qmfc.object(Qmf::Query.new(:class => "xxx", 'key' => search_key)) for @qmfc.object(Qmf::Query.new(:class => "xxx"), 'key' => search_key) else the search on the key is not functionnal.
This fix db-omatic that cannot recover the node on wich the vm run for example.
We have not investigate far away but that can be due to a change on the ruby-qmf
API.
Signed-off-by: Michel Loiseleur <mloiseleur at linagora.com>
---
src/db-omatic/db_omatic.rb | 10 ++++++----
src/libvirt-list.rb | 6 +++---
src/matahari-list.rb | 4 ++--
3 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/src/db-omatic/db_omatic.rb b/src/db-omatic/db_omatic.rb
index 686ad71..da11bfa 100755
--- a/src/db-omatic/db_omatic.rb
+++ b/src/db-omatic/db_omatic.rb
@@ -198,7 +198,7 @@ class DbOmatic < Qmf::ConsoleHandler
if state == Vm::STATE_STOPPED
@logger.info "VM has moved to stopped, clearing VM
attributes."
- qmf_vm = @qmfc.object(Qmf::Query.new(:class =>
"domain", 'uuid' => vm.uuid))
+ qmf_vm = @qmfc.object(Qmf::Query.new(:class =>
"domain"), 'uuid' => vm.uuid)
if qmf_vm
@logger.info "Deleting VM #{vm.description}."
result = qmf_vm.undefine
@@ -210,12 +210,14 @@ class DbOmatic < Qmf::ConsoleHandler
# If we are running, update the node that the domain is running on
elsif state == Vm::STATE_RUNNING
@logger.info "VM is running, determine the node it is running
on"
- qmf_vm = @qmfc.object(Qmf::Query.new(:class =>
"domain", 'uuid' => vm.uuid))
+ qmf_vm = @qmfc.object(Qmf::Query.new(:class =>
"domain"), 'uuid' => vm.uuid)
if qmf_vm
qmf_host = @qmfc.object(Qmf::Query.new(:class =>
"node", :object_id => qmf_vm.node))
db_host = Host.find(:first, :conditions => ['hostname =
?', qmf_host.hostname])
@logger.info "VM #{vm.description} is running on node
#{db_host.hostname}"
vm.host_id = db_host.id
+ elsif
+ @logger.info "Cannot find in QMF the node corresponding to
#{domain['name']} "
end
end
@@ -276,7 +278,7 @@ class DbOmatic < Qmf::ConsoleHandler
# Double check to make sure this host is still up.
begin
- qmf_host = @qmfc.objects(Qmf::Query.new(:class =>
"node", 'hostname' => host_info['hostname']))
+ qmf_host = @qmfc.objects(Qmf::Query.new(:class =>
"node"), 'hostname' => host_info['hostname'])
if !qmf_host
@logger.info "Host
#{host_info['hostname']} is not up after waiting 20 seconds, skipping
dead VM check."
else
@@ -483,7 +485,7 @@ class DbOmatic < Qmf::ConsoleHandler
# them to stopped. VMs that exist as QMF objects will get set
appropriately when the objects
# appear on the bus.
begin
- qmf_vm = @qmfc.object(Qmf::Query.new(:class =>
"domain", 'uuid' => db_vm.uuid))
+ qmf_vm = @qmfc.object(Qmf::Query.new(:class =>
"domain"), 'uuid' => db_vm.uuid)
if qmf_vm == nil
set_stopped = true
end
diff --git a/src/libvirt-list.rb b/src/libvirt-list.rb
index c81926a..f4df672 100755
--- a/src/libvirt-list.rb
+++ b/src/libvirt-list.rb
@@ -33,7 +33,7 @@ nodes.each do |node|
end
# Find any domains that on the current node.
- domains = qmfc.objects(Qmf::Query.new(:class => "domain",
'node' => node.object_id))
+ domains = qmfc.objects(Qmf::Query.new(:class => "domain"),
'node' => node.object_id)
domains.each do |domain|
r = domain.getXMLDesc()
puts "getXMLDesc() status: #{r.status}"
@@ -48,7 +48,7 @@ nodes.each do |node|
end
end
- pools = qmfc.objects(Qmf::Query.new(:class => "pool",
'node' => node.object_id))
+ pools = qmfc.objects(Qmf::Query.new(:class => "pool"),
'node' => node.object_id)
pools.each do |pool|
puts " pool: #{pool.name}"
for (key, val) in pool.properties
@@ -63,7 +63,7 @@ nodes.each do |node|
end
# Find volumes that are part of the pool.
- volumes = qmfc.objects(Qmf::Query.new(:class => "volume",
'pool' => pool.object_id))
+ volumes = qmfc.objects(Qmf::Query.new(:class => "volume"),
'pool' => pool.object_id)
volumes.each do |volume|
puts " volume: #{volume.name}"
for (key, val) in volume.properties
diff --git a/src/matahari-list.rb b/src/matahari-list.rb
index 8795019..6671f7a 100755
--- a/src/matahari-list.rb
+++ b/src/matahari-list.rb
@@ -33,7 +33,7 @@ hosts.each do |host|
end
# List cpus for current host
- cpus = qmfc.objects(Qmf::Query.new(:class => 'cpu',
'host' => host.object_id))
+ cpus = qmfc.objects(Qmf::Query.new(:class => 'cpu'),
'host' => host.object_id)
cpus.each do |cpu|
puts ' CPU:'
for (key, val) in cpu.properties
@@ -42,7 +42,7 @@ hosts.each do |host|
end # cpus.each
# List nics for current host
- nics = qmfc.objects(Qmf::Query.new(:class => 'nic',
'host' => host.object_id))
+ nics = qmfc.objects(Qmf::Query.new(:class => 'nic'),
'host' => host.object_id)
nics.each do |nic|
puts ' NIC: '
for (key, val) in nic.properties
--
1.6.2.5
Ian Main
2009-Nov-23 20:16 UTC
[Ovirt-devel] [PATCH server] Replace the occurence of the type @qmfc.object(Qmf::Query.new(:class => "xxx", 'key' => search_key)) for @qmfc.object(Qmf::Query.new(:class => "xxx"), 'key' => search_key) else the search on the key is not functionnal.
On Fri, 13 Nov 2009 11:46:52 +0000 Michel Loiseleur <mloiseleur at linagora.com> wrote:> This fix db-omatic that cannot recover the node on wich the vm run for example. > > We have not investigate far away but that can be due to a change on the ruby-qmf API. > > Signed-off-by: Michel Loiseleur <mloiseleur at linagora.com>ACK Thanks Michel for catching that for me. :) I'll push this shortly. I also talked to Ted Ross and he's going to look into that bug soon. Ian
Possibly Parallel Threads
- [PATCH server] Update daemons to use new QMF.
- [PATCH] Fix dbomatic state changes.
- [PATCH server] Fixed db-omatic to update the host for a running vm when the object_props callback is fired.
- Qmf::Query Hang in db-omatic
- [PATCH server] Add svc_vm_actions method to VmService.