Check two new APIs in this case: storagePoolLookupByUUIDString/storagePoolLookupByUUID --- repos/storage/pool_uuid.py | 49 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/repos/storage/pool_uuid.py b/repos/storage/pool_uuid.py index bb6bf63..2f371eb 100644 --- a/repos/storage/pool_uuid.py +++ b/repos/storage/pool_uuid.py @@ -1,4 +1,8 @@ #!/usr/bin/env python +#To test "virsh pool-uuid" command and related APIs +#To test 2 APIs in this case: +# storagePoolLookupByUUID +# storagePoolLookupByUUIDString import os import sys @@ -6,7 +10,10 @@ import re import time import commands +import binascii import libvirt + +from xml.dom import minidom from libvirt import libvirtError from src import sharedmod @@ -15,6 +22,7 @@ required_params = ('poolname',) optional_params = {} VIRSH_POOLUUID = "virsh pool-uuid" +POOLPATH = "/etc/libvirt/storage/" def check_pool_uuid(poolname, UUIDString, logger): """ check UUID String of a pool """ @@ -32,10 +40,25 @@ def check_pool_uuid(poolname, UUIDString, logger): else: return False +def checking_uuid(logger,poolname,pooluuid): + """check two uuid of pool which are from API and pool's XML""" + global POOLPATH + POOLPATH = POOLPATH + poolname + ".xml" + xml = minidom.parse(POOLPATH) + pool = xml.getElementsByTagName('pool')[0] + uuid = pool.getElementsByTagName('uuid')[0].childNodes[0].data + if uuid == pooluuid: + return True + else: + return False + def pool_uuid(params): - """ call appropriate API to generate the UUIDStirng + """ 1. call appropriate API to generate the UUIDStirng of a pool , then compared to the output of command virsh pool-uuid + 2. check 2 APIs in the case: + storagePoolLookupByUUID + storagePoolLookupByUUIDString """ logger = params['logger'] poolname = params['poolname'] @@ -53,6 +76,30 @@ def pool_uuid(params): try: UUIDString = poolobj.UUIDString() logger.info("the UUID string of pool %s is %s" % (poolname, UUIDString)) + + #For a transient pool, set another path + if not poolobj.isPersistent() == 1: + logger.info("Can not check a transient pool by now.") + return 0 + #allowing '-' and ' ' anywhere between character pairs,just check + #one of them + UUIDString1 = UUIDString.replace("-"," ") + pool1 = conn.storagePoolLookupByUUIDString(UUIDString1) + pool_name1 = pool1.name() + logger.debug("The given UUID is \"%s\", the pool is \"%s\" using\ + storagePoolLookupByUUIDString" %(UUIDString1,pool_name1)) + + UUIDString2 = UUIDString.replace("-","") + UUID_ascii = binascii.a2b_hex(UUIDString2) + pool2 = conn.storagePoolLookupByUUID(UUID_ascii) + pool_name2 = pool2.name() + logger.debug("The given UUID is \"%s\", the pool is \"%s\" using \ +storagePoolLookupByUUID" %(UUIDString2,pool_name2)) + + if pool_name1 == pool_name2 and checking_uuid(logger,pool_name1,UUIDString): + logger.info("Successed to get pool name \"%s\" using \"%s\""\ + %(pool_name1,UUIDString)) + if check_pool_uuid(poolname, UUIDString, logger): logger.info(VIRSH_POOLUUID + " test succeeded.") return 0 -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list