On 03/21/2012 08:46 PM, Peter Krempa wrote:
For some tests it's not needed to ping the guest in the startup
process.
This patch adds a flag to the start and destroy test to skip such
attempts (that consume a lot of time)
---
repos/domain/destroy.py | 54 ++++++++++++++++++++++++++--------------------
repos/domain/start.py | 50 ++++++++++++++++++++----------------------
2 files changed, 54 insertions(+), 50 deletions(-)
diff --git a/repos/domain/destroy.py b/repos/domain/destroy.py
index f98b602..12399d6 100644
--- a/repos/domain/destroy.py
+++ b/repos/domain/destroy.py
@@ -50,7 +50,10 @@ def destroy(params):
{'guestname': guestname}
logger -- an object of utils/Python/log.py
- guestname -- same as the domain name
+ guestname -- the domain name
+ flags -- optional arguments:
+ noping: Don't do the ping test
+
Return 0 on SUCCESS or 1 on FAILURE
"""
@@ -62,6 +65,7 @@ def destroy(params):
if params_check_result:
return 1
guestname = params['guestname']
+ flags = params['flags']
The 'flags' is optional, then we have to check if the
dictionary of params has key or not
if params.has_key('flags'):
...
otherwise, it will report "KeyError: "
If 'flags' is mandatory, it'd better to to check it in
check_params function.
# Connect to local hypervisor connection URI
util = utils.Utils()
@@ -73,18 +77,19 @@ def destroy(params):
dom_obj = domainAPI.DomainAPI(virconn)
dom_name_list = dom_obj.get_list()
if guestname not in dom_name_list:
- logger.error("guest %s doesn't exist or not be running." %
guestname)
+ logger.error("guest %s doesn't exist or isn't running." %
guestname)
Thanks
conn.close()
logger.info("closed hypervisor connection")
return 1
timeout = 60
logger.info('destroy domain')
- # Get domain ip
- mac = util.get_dom_mac_addr(guestname)
- logger.info("get ip by mac address")
- ip = util.mac_to_ip(mac, 180)
- logger.info("the ip address of guest is %s" % ip)
+ if not("noping" in flags):
+ # Get domain ip
+ mac = util.get_dom_mac_addr(guestname)
+ logger.info("get ip by mac address")
+ ip = util.mac_to_ip(mac, 180)
+ logger.info("the ip address of guest is %s" % ip)
# Destroy domain
try:
@@ -93,30 +98,31 @@ def destroy(params):
except LibvirtAPI, e:
logger.error("API error message: %s, error code is %s" % \
(e.response()['message'],
e.response()['code']))
- logger.error("fail to destroy domain")
+ logger.error("failed to destroy domain")
thanks to correct it.
return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
# Check domain status by ping ip
- while timeout:
- time.sleep(10)
- timeout -= 10
- logger.info(str(timeout) + "s left")
-
- logger.info('ping guest')
-
- if util.do_ping(ip, 30):
- logger.error('The guest is still active, IP: ' + str(ip))
+ if not "noping" in flags:
+ while timeout:
+ time.sleep(10)
+ timeout -= 10
+ logger.info(str(timeout) + "s left")
+
+ logger.info('ping guest')
+
+ if util.do_ping(ip, 30):
+ logger.error('The guest is still active, IP: ' + str(ip))
+ return 1
+ else:
+ logger.info("domain %s was destroyed successfully" %
guestname)
+ break
+
+ if timeout<= 0:
+ logger.error("the domain couldn't be destroyed within 60
seconds.")
return 1
- else:
- logger.info("domain %s is destroied successfully" % guestname)
- break
-
- if timeout<= 0:
- logger.error("the domain couldn't be destroied within 60 secs.")
- return 1
return 0
diff --git a/repos/domain/start.py b/repos/domain/start.py
index 39ac47f..483ea7a 100644
--- a/repos/domain/start.py
+++ b/repos/domain/start.py
@@ -66,7 +66,7 @@ def start(params):
logger -- an object of utils/Python/log.py
mandatory arguments : guestname -- same as the domain name
- optional arguments : flags -- domain create flags<none|start_paused>
+ optional arguments : flags -- domain create flags<none|start_paused|noping>
Return 0 on SUCCESS or 1 on FAILURE
"""
@@ -75,13 +75,11 @@ def start(params):
check_params(params)
domname = params['guestname']
logger = params['logger']
+ flags = params['flags']
Yes, please notice this like above.
It seems that you want flags to be mandatory in the
following code.
Add checking for it in check_params()
Guannan Ren