On 2012年04月25日 13:23, Guannan Ren wrote:
install_linux_cdrom.py: use global variable with value /var/cache/libvirt-test-API copy custom.iso into it for qemu process install_linux_check.py: use hddriver and nicdriver name network/create.py: in the case of the network with 'isolate' type we need to remove '<forward mode="NETMODE"/>'line, The bug is caused by changes on using xml files network/define.py: Same as network/create.py snapshot/delete.py: The TESTCASE_check is reserved function name for framework, so change the internal checking function to check_xml() --- repos/domain/install_linux_cdrom.py | 20 ++++++++++++++------ repos/domain/install_linux_check.py | 6 +++--- repos/network/create.py | 4 ++++ repos/network/define.py | 6 +++++- repos/snapshot/delete.py | 6 +++--- 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/repos/domain/install_linux_cdrom.py b/repos/domain/install_linux_cdrom.py index 60d12a7..e46491b 100644 --- a/repos/domain/install_linux_cdrom.py +++ b/repos/domain/install_linux_cdrom.py @@ -36,7 +36,7 @@ VM_STAT = "virsh --quiet list --all| grep \"\\b%s\\b\"|grep off" VM_DESTROY = "virsh destroy %s" VM_UNDEFINE = "virsh undefine %s" -BOOT_DIR = "/var/lib/libvirt/boot/" +BOOT_ISO_DIR = "/var/cache/libvirt-test-api"
As replied in previous mail. We should have this in global.cfg, and use it instead of create a $source_root/$guestname for each guest installation.
HOME_PATH = os.getcwd() def prepare_cdrom(*args): @@ -47,13 +47,18 @@ def prepare_cdrom(*args): ks_name = os.path.basename(ks) new_dir = os.path.join(HOME_PATH, guestname) + customiso_dir = os.path.join(BOOT_ISO_DIR, guestname) logger.info("creating a new folder for customizing custom.iso file in it") if os.path.exists(new_dir): logger.info("the folder exists, remove it") shutil.rmtree(new_dir) + if os.path.exists(customiso_dir): + shutil.rmtree(customiso_dir) + os.makedirs(new_dir) + os.makedirs(customiso_dir)
And if ksiso.sh is changed to accept an argument, codes like this is not neccessary.
logger.info("the directory is %s" % new_dir) boot_path = os.path.join(ostree, 'images/boot.iso') @@ -65,10 +70,10 @@ def prepare_cdrom(*args): urllib.urlretrieve(ks, '%s/%s' % (new_dir, ks_name))[0] logger.info("the url of kickstart is %s" % ks) - shutil.copy('utils/ksiso.sh', new_dir) + shutil.debug('utils/ksiso.sh', new_dir) src_path = os.getcwd() - logger.info("enter into the workshop folder: %s" % new_dir) + logger.debug("enter into the workshop folder: %s" % new_dir) os.chdir(new_dir) shell_cmd = 'sh ksiso.sh %s' % ks_name @@ -76,8 +81,11 @@ def prepare_cdrom(*args): (status, text) = commands.getstatusoutput(shell_cmd) logger.debug(text) - logger.info("make custom.iso file, change to original directory: %s" % - src_path) + + logger.debug("copy custom.iso to %s" % customiso_dir) + shutil.copy('custom.iso', customiso_dir) + + logger.debug("go back to original directory: %s" % src_path) os.chdir(src_path) def prepare_boot_guest(domobj, xmlstr, guestname, installtype, logger): @@ -196,7 +204,7 @@ def install_linux_cdrom(params): logger.info('prepare installation...') bootcd = '%s/custom.iso' % \ - (os.path.join(HOME_PATH, guestname)) + (os.path.join(BOOT_ISO_DIR, guestname)) logger.debug("the bootcd path is %s" % bootcd) logger.info("begin to customize the custom.iso file") prepare_cdrom(ostree, ks, guestname, logger) diff --git a/repos/domain/install_linux_check.py b/repos/domain/install_linux_check.py index d034aba..ab1e7db 100644 --- a/repos/domain/install_linux_check.py +++ b/repos/domain/install_linux_check.py @@ -15,7 +15,7 @@ from src import sharedmod from src import env_parser from utils import utils -required_params = ('guestname', 'virt_type', 'hdmodel', 'nicmodel',) +required_params = ('guestname', 'virt_type', 'hddriver', 'nicdriver',) optional_params = {} HOME_PATH = os.getcwd() @@ -71,8 +71,8 @@ def install_linux_check(params): logger.info("Now checking guest health after installation") domain_name=guestname - blk_type=params['hdmodel'] - nic_type=params['nicmodel'] + blk_type=params['hddriver'] + nic_type=params['nicdriver'] Test_Result = 0 # Ping guest from host diff --git a/repos/network/create.py b/repos/network/create.py index 839e93b..399328c 100644 --- a/repos/network/create.py +++ b/repos/network/create.py @@ -39,6 +39,7 @@ def create(params): """Create a network from xml""" logger = params['logger'] networkname = params['networkname'] + netmode = params['netmode'] xmlstr = params['xml'] conn = sharedmod.libvirtobj['conn'] @@ -47,6 +48,9 @@ def create(params): logger.error("the %s network is running" % networkname) return 1 + if netmode == 'isolate': + xmlstr = re.sub('<forward.*\n', '', xmlstr) + logger.debug("%s network xml:\n%s" % (networkname, xmlstr)) net_num1 = conn.numOfNetworks() diff --git a/repos/network/define.py b/repos/network/define.py index 923db29..dd054f7 100644 --- a/repos/network/define.py +++ b/repos/network/define.py @@ -42,14 +42,18 @@ def define(params): """Define a network from xml""" logger = params['logger'] networkname = params['networkname'] + netmode = params['netmode'] xmlstr = params['xml'] conn = sharedmod.libvirtobj['conn'] if check_network_define(networkname, logger): - logger.error("%s network is defined" % networkname) + logger.error("%s network is already defined" % networkname) return 1 + if netmode == 'isolate': + xmlstr = re.sub('<forward.*\n', '', xmlstr) + logger.debug("network xml:\n%s" % xmlstr) net_num1 = conn.numOfDefinedNetworks() diff --git a/repos/snapshot/delete.py b/repos/snapshot/delete.py index 19689b1..bab043e 100644 --- a/repos/snapshot/delete.py +++ b/repos/snapshot/delete.py @@ -24,7 +24,7 @@ def check_domain_state(conn, guestname, logger): else: return True -def delete_check(guestname, snapshotname, expected_flag, logger): +def check_xml(guestname, snapshotname, expected_flag, logger): """ after deleting, check if appropriate xml file exists or not""" guest_snapshot_dir = os.path.join(SNAPSHOT_DIR, guestname) snapshot_entries = os.listdir(guest_snapshot_dir) @@ -54,7 +54,7 @@ def delete(params): logger.error("checking failed") return 1 - if not delete_check(guestname, snapshotname, "exist", logger): + if not check_xml(guestname, snapshotname, "exist", logger): logger.error("no snapshot %s exists" % snapshotname) logger.debug("not corresponding xml file in %s" % SNAPSHOT_DIR) return 1 @@ -64,7 +64,7 @@ def delete(params): domobj = conn.lookupByName(guestname) snapobj = domobj.snapshotLookupByName(snapshotname, 0) snapobj.delete(0) - if not delete_check(guestname, snapshotname, "noexist", logger): + if not check_xml(guestname, snapshotname, "noexist", logger): logger.error("after deleting, the corresponding \ xmlfile still exists in %s" % SNAPSHOT_DIR) return 1
Others look good, but we will need a v3 for the /var/cache/libvirt-test-api. Osier -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list