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
Apparently Analagous 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.