[Ovirt-devel] [PATCH server] Add more debugging to storage tasks

Ian Main imain at redhat.com
Fri May 29 16:18:48 UTC 2009


This patch adds more debug calling in storage related tasks.

Signed-off-by: Ian Main <imain at redhat.com>
---
 src/task-omatic/task_storage.rb |   29 ++++++++++++++++++-----------
 src/task-omatic/taskomatic.rb   |   18 +++++++++---------
 2 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/src/task-omatic/task_storage.rb b/src/task-omatic/task_storage.rb
index cdc0043..bfffa36 100644
--- a/src/task-omatic/task_storage.rb
+++ b/src/task-omatic/task_storage.rb
@@ -92,11 +92,12 @@ class LibvirtPool
 
   attr_reader :remote_pool
 
-  def initialize(type, name = nil)
+  def initialize(type, name = nil, logger = nil)
     @remote_pool = nil
     @build_on_start = true
     @remote_pool_defined = false
     @remote_pool_started = false
+    @logger = logger
 
     if name == nil
       @name = type + "-" + String.random_alphanumeric
@@ -124,11 +125,13 @@ class LibvirtPool
       xml_desc = result.description
       if self.xmlequal?(Document.new(xml_desc).root)
         @remote_pool = pool
+        @logger.debug("Found existing storage pool #{pool.name} on host: #{node.hostname}")
         break
       end
     end
 
     if @remote_pool == nil
+      @logger.debug("Defining new storage pool: #{@xml.to_s} on host: #{node.hostname}")
       result = node.storagePoolDefineXML(@xml.to_s, :timeout => 60 * 2)
       raise "Error creating pool: #{result.text}" unless result.status == 0
       @remote_pool = session.object(:object_id => result.pool)
@@ -137,6 +140,7 @@ class LibvirtPool
       # we need this because we don't want to "build" LVM pools, which would
       # destroy existing data
       if @build_on_start
+        @logger.debug("Building remote pool #{@remote_pool.name}")
         result = @remote_pool.build(:timeout => 60 * 2)
         raise "Error building pool: #{result.text}" unless result.status == 0
       end
@@ -193,11 +197,11 @@ class LibvirtPool
     return false
   end
 
-  def self.factory(pool)
+  def self.factory(pool, logger)
     if pool[:type] == "IscsiStoragePool"
-      return IscsiLibvirtPool.new(pool.ip_addr, pool[:target], pool[:port])
+      return IscsiLibvirtPool.new(pool.ip_addr, pool[:target], pool[:port], logger)
     elsif pool[:type] == "NfsStoragePool"
-      return NFSLibvirtPool.new(pool.ip_addr, pool.export_path)
+      return NFSLibvirtPool.new(pool.ip_addr, pool.export_path, logger)
     elsif pool[:type] == "LvmStoragePool"
       # OK, if this is LVM storage, there are two cases we need to care about:
       # 1) this is a LUN with LVM already on it.  In this case, all we need to
@@ -212,7 +216,7 @@ class LibvirtPool
       phys_volume = StorageVolume.find(:first, :conditions =>
                                        [ "lvm_pool_id = ?", pool.id])
       return LVMLibvirtPool.new(pool.vg_name, phys_volume.path,
-                                pool.state == StoragePool::STATE_PENDING_SETUP)
+                                pool.state == StoragePool::STATE_PENDING_SETUP, logger)
     else
       raise "Unknown storage pool type " + pool[:type].to_s
     end
@@ -220,9 +224,9 @@ class LibvirtPool
 end
 
 class IscsiLibvirtPool < LibvirtPool
-  def initialize(ip_addr, target, port)
+  def initialize(ip_addr, target, port, logger)
     mount = "#{ip_addr}-#{target}-#{port}"
-    super('iscsi', mount)
+    super('iscsi', mount, logger)
 
     @type = 'iscsi'
     @ipaddr = ip_addr
@@ -242,9 +246,9 @@ class IscsiLibvirtPool < LibvirtPool
 end
 
 class NFSLibvirtPool < LibvirtPool
-  def initialize(ip_addr, export_path)
+  def initialize(ip_addr, export_path, logger)
     target = "#{ip_addr}-#{export_path.tr('/', '_')}"
-    super('netfs', target)
+    super('netfs', target, logger)
 
     @type = 'netfs'
     @host = ip_addr
@@ -276,6 +280,7 @@ class NFSLibvirtPool < LibvirtPool
     # however.  We want to have non-sparse files for performance reasons.
     @vol_xml.root.add_element("allocation").add_text('0')
 
+    @logger.debug("Creating new volume on pool #{@remote_pool.name} - XML: #{@vol_xml.to_s}")
     result = @remote_pool.createVolumeXML(@vol_xml.to_s)
     raise "Error creating remote pool: #{result.text}" unless result.status == 0
     return result.volume
@@ -289,8 +294,8 @@ class NFSLibvirtPool < LibvirtPool
 end
 
 class LVMLibvirtPool < LibvirtPool
-  def initialize(vg_name, device, build_on_start)
-    super('logical', vg_name)
+  def initialize(vg_name, device, build_on_start, logger)
+    super('logical', vg_name, logger)
 
     @type = 'logical'
     @build_on_start = build_on_start
@@ -302,6 +307,8 @@ class LVMLibvirtPool < LibvirtPool
 
   def create_vol(name, size, owner, group, mode)
     super("logical", name, size, owner, group, mode)
+
+    @logger.debug("Creating new volume on pool #{@remote_pool.name} - XML: #{@vol_xml.to_s}")
     result = @remote_pool.createVolumeXML(@vol_xml.to_s)
     raise "Error creating remote pool: #{result.text}" unless result.status == 0
     return result.volume
diff --git a/src/task-omatic/taskomatic.rb b/src/task-omatic/taskomatic.rb
index da933bf..11d13cb 100755
--- a/src/task-omatic/taskomatic.rb
+++ b/src/task-omatic/taskomatic.rb
@@ -207,7 +207,7 @@ class TaskOmatic
       end
 
       @logger.debug "Verifying mount of pool #{db_pool.ip_addr}:#{db_pool.type}:#{db_pool.target}:#{db_pool.export_path}"
-      libvirt_pool = LibvirtPool.factory(db_pool)
+      libvirt_pool = LibvirtPool.factory(db_pool, @logger)
       libvirt_pool.connect(@session, node)
 
       # OK, the pool should be all set.  The last thing we need to do is get
@@ -631,7 +631,7 @@ class TaskOmatic
     begin
       @logger.info("refresh being done on node #{node.hostname}")
 
-      phys_libvirt_pool = LibvirtPool.factory(db_pool_phys)
+      phys_libvirt_pool = LibvirtPool.factory(db_pool_phys, @logger)
       phys_libvirt_pool.connect(@session, node)
       db_pool_phys.state = StoragePool::STATE_AVAILABLE
       db_pool_phys.save!
@@ -651,14 +651,14 @@ class TaskOmatic
           if not existing_vol
             add_volume_to_db(db_pool_phys, volume);
           else
-            @logger.info "Scanned volume #{volume.name} already exists in db.."
+            @logger.debug "Scanned volume #{volume.name} already exists in db.."
           end
 
           # Now check for an LVM pool carving up this volume.
           lvm_name = volume.childLVMName
           next if lvm_name == ''
 
-          @logger.info "Child LVM exists for this volume - #{lvm_name}"
+          @logger.debug "Child LVM exists for this volume - #{lvm_name}"
           lvm_db_pool = LvmStoragePool.find(:first, :conditions =>
                                           [ "vg_name = ?", lvm_name ])
           if lvm_db_pool == nil
@@ -683,7 +683,7 @@ class TaskOmatic
           physical_vol.lvm_pool_id = lvm_db_pool.id
           physical_vol.save!
 
-          lvm_libvirt_pool = LibvirtPool.factory(lvm_db_pool)
+          lvm_libvirt_pool = LibvirtPool.factory(lvm_db_pool, @logger)
           lvm_libvirt_pool.connect(@session, node)
 
           lvm_volumes = @session.objects(:class => 'volume',
@@ -725,7 +725,7 @@ class TaskOmatic
       end
 
       begin
-        libvirt_pool = LibvirtPool.factory(db_pool)
+        libvirt_pool = LibvirtPool.factory(db_pool, @logger)
 
         begin
           libvirt_pool.connect(@session, node)
@@ -733,9 +733,9 @@ class TaskOmatic
           volume = @session.object(:object_id => volume_id)
           raise "Unable to find newly created volume" unless volume
 
-          @logger.info "  volume:"
+          @logger.debug "  volume:"
           for (key, val) in volume.properties
-            @logger.info "    property: #{key}, #{val}"
+            @logger.debug "    property: #{key}, #{val}"
           end
 
           # FIXME: Should have this too I think..
@@ -790,7 +790,7 @@ class TaskOmatic
       end
 
       begin
-        libvirt_pool = LibvirtPool.factory(db_pool)
+        libvirt_pool = LibvirtPool.factory(db_pool, @logger)
         libvirt_pool.connect(@session, node)
 
         begin
-- 
1.6.0.6




More information about the ovirt-devel mailing list