On 06/28/2011 01:54 PM, Guannan.ren wrote:
---
repos/domain/create.py | 53 ++++++++++++++++++++++++++++++++++++-----------
1 files changed, 40 insertions(+), 13 deletions(-)
diff --git a/repos/domain/create.py b/repos/domain/create.py
index 343aba2..a06a2d3 100644
--- a/repos/domain/create.py
+++ b/repos/domain/create.py
@@ -12,6 +12,7 @@
nicmodel
ifacetype
source
+ flags
"""
__author__ = 'Guannan Ren:gren@redhat.com'
@@ -42,6 +43,9 @@ from utils.Python import utils
from utils.Python import xmlbuilder
from exception import LibvirtAPI
+NONE = 0
+START_PAUSED = 1
You may forget to set a variable for the
VIR_DOMAIN_START_AUTODESTROY flag.
START_AUTODESTORY = 2
+
def usage():
print '''usage: mandatory arguments:guesttype
guestname
@@ -54,8 +58,14 @@ def usage():
nicmodel
ifacetype
source
+ flags
'''
+def return_close(conn, logger, ret):
+ conn.close()
+ logger.info("closed hypervisor connection")
+ return ret
+
def check_params(params):
"""Verify inputing parameter dictionary"""
logger = params['logger']
@@ -78,6 +88,13 @@ def create(params):
guestname = params['guestname']
test_result = False
+ flags = None
+ if params.has_key('flags'):
+ flags = params['flags']
+ if flags != "none" and flags != "start_paused":
+ logger.error("flags value either \"none\" or
\"start_paused\"");
+ return 1
+
# Connect to local hypervisor connection URI
util = utils.Utils()
uri = util.get_uri('127.0.0.1')
@@ -98,16 +115,26 @@ def create(params):
# Create domain from xml
try:
- try:
- domobj.create(domxml)
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" %
- (e.response()['message'],
e.response()['code']))
- logger.error("fail to create domain %s" % guestname)
- return 1
- finally:
- conn.close()
- logger.info("closed hypervisor connection")
+ if not flags or flags == "none":
+ domobj.create(domxml, NONE)
+ elif flags == "start_paused":
+ domobj.create(domxml, START_PAUSED)
+ else:
+ logger.error("flags error")
Also, needs to add a condition
here for the flag which value is 2.
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" %
+ (e.response()['message'], e.response()['code']))
+ logger.error("fail to create domain %s" % guestname)
+ return return_close(conn, logger, 1)
+
+ if flags == "start_paused":
+ state = domobj.get_state(guestname)
+ if state == "paused":
+ logger.info("guest start with state paused successfully")
+ return return_close(conn, logger, 0)
+ else:
+ logger.error("guest state error")
+ return return_close(conn, logger, 1)
logger.info("get the mac address of vm %s" % guestname)
mac = util.get_dom_mac_addr(guestname)
@@ -132,9 +159,9 @@ def create(params):
if timeout == 0:
logger.info("fail to power on vm %s" % guestname)
test_result = False
- return 1
+ return return_close(conn, logger, 1)
if test_result:
- return 0
+ return return_close(conn, logger, 0)
else:
- return 1
+ return return_close(conn, logger, 1)