[PATCH] KVM Test: Call postprocess_vm before postprocess_image.

2011-08-04 Thread fyang
From: Feng Yang fy...@redhat.com

Current we call postprocess_image befor postprocess_vm.
If exception is thrown in postprocess_image, postprocess_vm will
be skipped. So vm could not be killed, it may fail following case
 in same loop.

Signed-off-by: Feng Yang fy...@redhat.com
---
 client/virt/virt_env_process.py |   25 -
 1 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/client/virt/virt_env_process.py b/client/virt/virt_env_process.py
index 12918eb..8fd5c21 100644
--- a/client/virt/virt_env_process.py
+++ b/client/virt/virt_env_process.py
@@ -163,7 +163,7 @@ def process_command(test, params, env, command, 
command_timeout,
 raise
 
 
-def process(test, params, env, image_func, vm_func):
+def process(test, params, env, image_func, vm_func, vm_first=False):
 
 Pre- or post-process VMs and images according to the instructions in 
params.
 Call image_func for each image listed in params and vm_func for each VM.
@@ -177,13 +177,20 @@ def process(test, params, env, image_func, vm_func):
 # Get list of VMs specified for this test
 for vm_name in params.objects(vms):
 vm_params = params.object_params(vm_name)
-# Get list of images specified for this VM
-for image_name in vm_params.objects(images):
-image_params = vm_params.object_params(image_name)
-# Call image_func for each image
-image_func(test, image_params)
-# Call vm_func for each vm
-vm_func(test, vm_params, env, vm_name)
+if not vm_first:
+# Get list of images specified for this VM
+for image_name in vm_params.objects(images):
+image_params = vm_params.object_params(image_name)
+# Call image_func for each image
+image_func(test, image_params)
+# Call vm_func for each vm
+vm_func(test, vm_params, env, vm_name)
+else:
+vm_func(test, vm_params, env, vm_name)
+for image_name in vm_params.objects(images):
+image_params = vm_params.object_params(image_name)
+image_func(test, image_params)
+
 
 
 @error.context_aware
@@ -293,7 +300,7 @@ def postprocess(test, params, env):
 error.context(postprocessing)
 
 # Postprocess all VMs and images
-process(test, params, env, postprocess_image, postprocess_vm)
+process(test, params, env, postprocess_image, postprocess_vm, 
vm_first=True)
 
 # Terminate the screendump thread
 global _screendump_thread, _screendump_thread_termination_event
-- 
1.7.1

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Autotest] [PATCH] KVM Test: Call postprocess_vm before postprocess_image.

2011-08-04 Thread Lucas Meneghel Rodrigues

On 08/04/2011 04:18 AM, fy...@redhat.com wrote:

From: Feng Yangfy...@redhat.com

Current we call postprocess_image befor postprocess_vm.
If exception is thrown in postprocess_image, postprocess_vm will
be skipped. So vm could not be killed, it may fail following case
  in same loop.


Looks good to me, applied, thanks!

http://autotest.kernel.org/changeset/5520


Signed-off-by: Feng Yangfy...@redhat.com
---
  client/virt/virt_env_process.py |   25 -
  1 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/client/virt/virt_env_process.py b/client/virt/virt_env_process.py
index 12918eb..8fd5c21 100644
--- a/client/virt/virt_env_process.py
+++ b/client/virt/virt_env_process.py
@@ -163,7 +163,7 @@ def process_command(test, params, env, command, 
command_timeout,
  raise


-def process(test, params, env, image_func, vm_func):
+def process(test, params, env, image_func, vm_func, vm_first=False):
  
  Pre- or post-process VMs and images according to the instructions in 
params.
  Call image_func for each image listed in params and vm_func for each VM.
@@ -177,13 +177,20 @@ def process(test, params, env, image_func, vm_func):
  # Get list of VMs specified for this test
  for vm_name in params.objects(vms):
  vm_params = params.object_params(vm_name)
-# Get list of images specified for this VM
-for image_name in vm_params.objects(images):
-image_params = vm_params.object_params(image_name)
-# Call image_func for each image
-image_func(test, image_params)
-# Call vm_func for each vm
-vm_func(test, vm_params, env, vm_name)
+if not vm_first:
+# Get list of images specified for this VM
+for image_name in vm_params.objects(images):
+image_params = vm_params.object_params(image_name)
+# Call image_func for each image
+image_func(test, image_params)
+# Call vm_func for each vm
+vm_func(test, vm_params, env, vm_name)
+else:
+vm_func(test, vm_params, env, vm_name)
+for image_name in vm_params.objects(images):
+image_params = vm_params.object_params(image_name)
+image_func(test, image_params)
+


  @error.context_aware
@@ -293,7 +300,7 @@ def postprocess(test, params, env):
  error.context(postprocessing)

  # Postprocess all VMs and images
-process(test, params, env, postprocess_image, postprocess_vm)
+process(test, params, env, postprocess_image, postprocess_vm, 
vm_first=True)

  # Terminate the screendump thread
  global _screendump_thread, _screendump_thread_termination_event


--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] KVM Test: Call postprocess_vm before postprocess_image.

2011-08-04 Thread Amos Kong
On Thu, Aug 04, 2011 at 03:18:30PM +0800, fy...@redhat.com wrote:
 From: Feng Yang fy...@redhat.com
 
 Current we call postprocess_image befor postprocess_vm.
 If exception is thrown in postprocess_image, postprocess_vm will
 be skipped. So vm could not be killed, it may fail following case
  in same loop.
 
 Signed-off-by: Feng Yang fy...@redhat.com
 ---
  client/virt/virt_env_process.py |   25 -
  1 files changed, 16 insertions(+), 9 deletions(-)
 
 diff --git a/client/virt/virt_env_process.py b/client/virt/virt_env_process.py
 index 12918eb..8fd5c21 100644
 --- a/client/virt/virt_env_process.py
 +++ b/client/virt/virt_env_process.py
 @@ -163,7 +163,7 @@ def process_command(test, params, env, command, 
 command_timeout,
  raise
  
  
 -def process(test, params, env, image_func, vm_func):
 +def process(test, params, env, image_func, vm_func, vm_first=False):
  
  Pre- or post-process VMs and images according to the instructions in 
 params.
  Call image_func for each image listed in params and vm_func for each VM.
 @@ -177,13 +177,20 @@ def process(test, params, env, image_func, vm_func):
  # Get list of VMs specified for this test
  for vm_name in params.objects(vms):
  vm_params = params.object_params(vm_name)
 -# Get list of images specified for this VM
 -for image_name in vm_params.objects(images):
 -image_params = vm_params.object_params(image_name)
 -# Call image_func for each image
 -image_func(test, image_params)
 -# Call vm_func for each vm
 -vm_func(test, vm_params, env, vm_name)
 +if not vm_first:
 +# Get list of images specified for this VM
 +for image_name in vm_params.objects(images):
 +image_params = vm_params.object_params(image_name)
 +# Call image_func for each image
 +image_func(test, image_params)
 +# Call vm_func for each vm
 +vm_func(test, vm_params, env, vm_name)
 +else:
 +vm_func(test, vm_params, env, vm_name)
 +for image_name in vm_params.objects(images):
 +image_params = vm_params.object_params(image_name)
 +image_func(test, image_params)
 +

 if vm_first:
 vm_func(test, vm_params, env, vm_name)

 # Get list of images specified for this VM
 for image_name in vm_params.objects(images):
 image_params = vm_params.object_params(image_name)
 # Call image_func for each image
 image_func(test, image_params)

 if not vm_first:
 vm_func(test, vm_params, env, vm_name)


However, I'm ok for Feng's fix.
Acked-by: Amos Kong ak...@redhat.com

  @error.context_aware
 @@ -293,7 +300,7 @@ def postprocess(test, params, env):
  error.context(postprocessing)
  
  # Postprocess all VMs and images
 -process(test, params, env, postprocess_image, postprocess_vm)
 +process(test, params, env, postprocess_image, postprocess_vm, 
 vm_first=True)
  
  # Terminate the screendump thread
  global _screendump_thread, _screendump_thread_termination_event
 -- 
 1.7.1
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html