On 09/18/2012 12:25 AM, Chris Evich wrote:
On 09/14/2012 12:17 AM, Yiqiao Pu wrote:
On 09/14/2012 03:44 AM, Chris Evich wrote:
On 09/13/2012 01:51 PM, Lucas Meneghel Rodrigues wrote:
From: Yiqiao Pu<[email protected]>
Make kvm_vm create vm following the parameters, not the env,
otherwise the cases runs in a queue will create vm always
follow the first case's nic configuration.
Signed-off-by: Yiqiao Pu<[email protected]>
---
client/tests/virt/virttest/kvm_vm.py | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/client/tests/virt/virttest/kvm_vm.py
b/client/tests/virt/virttest/kvm_vm.py
index 98dad8e..18f107c 100644
--- a/client/tests/virt/virttest/kvm_vm.py
+++ b/client/tests/virt/virttest/kvm_vm.py
@@ -904,6 +904,11 @@ class VM(virt_vm.BaseVM):
# Clone this VM using the new params
vm = self.clone(name, params, root_dir, copy_state=True)
+ # Update the virtnet with params
+ params_virtnet = utils_misc.VirtNet(params, name, self.instance)
+ if vm.virtnet != params_virtnet:
+ vm.virtnet = params_virtnet
+
qemu_binary = utils_misc.get_path(os.path.join(root_dir,
params.get("vm_type")),
params.get("qemu_binary", "qemu"))
@@ -1435,6 +1440,10 @@ class VM(virt_vm.BaseVM):
name = self.name
params = self.params
root_dir = self.root_dir
+ # Update the virtnet with params
+ params_virtnet = utils_misc.VirtNet(params, name, self.instance)
+ if self.virtnet != params_virtnet:
+ self.virtnet = params_virtnet
# Verify the md5sum of the ISO images
for cdrom in params.objects("cdroms"):
@@ -2619,11 +2628,22 @@ class VM(virt_vm.BaseVM):
"""
if (self.__make_qemu_command() !=
self.__make_qemu_command(name, params, basedir)):
- logging.debug("VM params in env don't match requested, restarting.")
- return True
+ restart = True
+ else:
+ for i, nic in enumerate(params.objects('nics')):
+ if (self.virtnet[i]['netdst'] !=
+ params.object_params('nic').get('netdst')):
+ restart = True
+ else:
+ restart = False
+
+ if restart:
+ logging.debug("VM params in env don't match requested, "
+ "restarting.")
else:
logging.debug("VM params in env do match requested, continuing.")
- return False
+
+ return restart
def pause(self):
"""
Talked with lucas on this. We believe this fix will solve the
root-problem:
https://github.com/kongove/autotest/commit/35bcae3e589a6e5fa6a48e39ea9b58e95ffd32f1#commitcomment-1851180
You're patch may work, but in my experience vm.needs_restart() is VERY
sensitive to messing with __init__ behavior. Amos's patch fixes the
core of the problem by forcing virtnet to always initialize from
params.
Tried Amos's patch but find some problem as the netdst change will not
be catched by that fix. That fix only update the KVMIface related
parameters but not include ParamsNet. So It can not find the bridge
changed.
And another problem I try to fix is after we using tap fd in our command
line the command line will shows no different when only netdst changed.
This may caused problem when there is a set of cases running without
kill vm after test. So any idea about this problem?
Thanks a lot for your review.
_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel
Here, this should help make comparing these in vm.needs_restart() much
easier...
(see attached)
Now you can do "if virtnet1 == virtnet2: ..."
N.B. I didn't commit this to next since I'm not sure if it's still
frozen or not.
Thanks for your patch. And it works well in needs_restart(). And other
places.
_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel
_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel