ACK and Pushed
Thanks
Hongming
On 04/23/2015 03:37 PM, jiahu wrote:
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