In kvm_vm.py:
def get_image_filename(params, root_dir):
    ...
    ...
    image_name = params.get("image_name", "image")
    image_format = params.get("image_format", "qcow2")
    image_filename = "%s.%s" % (image_name, image_format)
    image_filename = kvm_utils.get_path(root_dir, image_filename)


If assign image_name as "/tmp/img" in configure file, it will be changed to
"images//tmp/img" by "image_name.* ?<= images/". Then the second argument of
kvm_utils.get_path() will always starts with "images/", this function could not
return right "/tmp/img.qcow2". This patch will join root_dir with "images/"
first, and analyze whether the rest part is absolute path.

Same problem also exists on ISO name.

Signed-off-by: Amos Kong <[email protected]>
---
 client/tests/kvm/kvm_vm.py |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/client/tests/kvm/kvm_vm.py b/client/tests/kvm/kvm_vm.py
index 8985f25..5ece6ed 100755
--- a/client/tests/kvm/kvm_vm.py
+++ b/client/tests/kvm/kvm_vm.py
@@ -23,10 +23,26 @@ def get_image_filename(params, root_dir):
     image_name = params.get("image_name", "image")
     image_format = params.get("image_format", "qcow2")
     image_filename = "%s.%s" % (image_name, image_format)
-    image_filename = kvm_utils.get_path(root_dir, image_filename)
+    n = image_filename.index('/') + 1
+    image_filename = kvm_utils.get_path(os.path.join(root_dir,
+                                       image_filename[:n]), image_filename[n:])
     return image_filename
 
 
+def get_iso_filename(params, root_dir):
+    """
+    Generate an iso path from params and root_dir.
+
+    @param params: Dictionary containing the test parameters.
+    @param root_dir: Base directory for relative filenames.
+    """
+    iso = params.get("cdrom")
+    n = iso.index('/') + 1
+    iso = kvm_utils.get_path(os.path.join(root_dir, iso[:n]), iso[n:])
+
+    return iso
+
+
 def create_image(params, root_dir):
     """
     Create an image using qemu_image.
@@ -303,7 +319,7 @@ class VM:
 
         iso = params.get("cdrom")
         if iso:
-            iso = kvm_utils.get_path(root_dir, iso)
+            iso = get_iso_filename(params, root_dir)
             qemu_cmd += " -cdrom %s" % iso
 
         soundhw = params.get("soundcards")
@@ -377,7 +393,7 @@ class VM:
         # Verify the md5sum of the ISO image
         iso = params.get("cdrom")
         if iso:
-            iso = kvm_utils.get_path(root_dir, iso)
+            iso = get_iso_filename(params, root_dir)
             if not os.path.exists(iso):
                 logging.error("ISO file not found: %s" % iso)
                 return False
-- 
1.5.5.6

_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to