summaryrefslogtreecommitdiff
path: root/tests/storage.py
diff options
context:
space:
mode:
authorCole Robinson <crobinso@redhat.com>2013-09-19 20:18:12 -0400
committerCole Robinson <crobinso@redhat.com>2013-09-20 10:00:08 -0400
commitaff0ddb2594cea6d0683659e059e4f3a35f0437e (patch)
tree96286d5c380cee7166bca28150336903e9e635bc /tests/storage.py
parent3db5cb5f06cfb05718aa890bda3ef655bf319592 (diff)
downloadvirt-manager-aff0ddb2594cea6d0683659e059e4f3a35f0437e.tar.gz
Use XMLBuilder for Storage object handling
Simplify the API a bunch while we are at it, add tests, etc.
Diffstat (limited to 'tests/storage.py')
-rw-r--r--tests/storage.py126
1 files changed, 54 insertions, 72 deletions
diff --git a/tests/storage.py b/tests/storage.py
index 99ee5921..c6a82fec 100644
--- a/tests/storage.py
+++ b/tests/storage.py
@@ -17,7 +17,7 @@
import os
import unittest
-from virtinst import Storage
+from virtinst import StoragePool, StorageVolume
from tests import utils
@@ -28,7 +28,6 @@ basepath = os.path.join(os.getcwd(), "tests", "storage-xml")
def generate_uuid_from_string(msg):
-
res = msg.split("-", 1)
if len(res) > 1:
# Split off common prefix
@@ -39,19 +38,16 @@ def generate_uuid_from_string(msg):
numstr += str(ord(c))
numstr *= 32
- numstr = numstr[0:32]
-
- return numstr
+ return "-".join([numstr[0:8], numstr[8:12], numstr[12:16], numstr[16:20],
+ numstr[20:32]])
def _findFreePoolName(conn, namebase):
-
i = 0
while True:
poolname = namebase + "-%d" % i
try:
- Storage.StorageVolume.lookup_pool_by_name(conn=conn,
- pool_name=poolname)
+ StorageVolume.lookup_pool_by_name(conn=conn, pool_name=poolname)
i += 1
except:
return poolname
@@ -59,7 +55,6 @@ def _findFreePoolName(conn, namebase):
def createPool(conn, ptype, poolname=None, fmt=None, target_path=None,
source_path=None, source_name=None, uuid=None, iqn=None):
- poolclass = Storage.StoragePool.get_pool_class(ptype)
if poolname is None:
poolname = _findFreePoolName(conn, str(ptype) + "-pool")
@@ -67,21 +62,25 @@ def createPool(conn, ptype, poolname=None, fmt=None, target_path=None,
if uuid is None:
uuid = generate_uuid_from_string(poolname)
- pool_inst = poolclass(conn=conn, name=poolname, uuid=uuid)
+ pool_inst = StoragePool(conn)
+ pool_inst.name = poolname
+ pool_inst.type = ptype
+ pool_inst.uuid = uuid
- if hasattr(pool_inst, "host"):
+ if pool_inst.supports_property("host"):
pool_inst.host = "some.random.hostname"
- if hasattr(pool_inst, "source_path"):
+ if pool_inst.supports_property("source_path"):
pool_inst.source_path = source_path or "/some/source/path"
- if hasattr(pool_inst, "target_path"):
+ if pool_inst.supports_property("target_path"):
pool_inst.target_path = target_path or "/some/target/path"
- if fmt and hasattr(pool_inst, "format"):
+ if fmt and pool_inst.supports_property("format"):
pool_inst.format = fmt
- if source_name and hasattr(pool_inst, "source_name"):
+ if source_name and pool_inst.supports_property("source_name"):
pool_inst.source_name = source_name
- if iqn and hasattr(pool_inst, "iqn"):
+ if iqn and pool_inst.supports_property("iqn"):
pool_inst.iqn = iqn
+ pool_inst.validate()
return poolCompare(pool_inst)
@@ -97,33 +96,33 @@ def poolCompare(pool_inst):
def createVol(conn, poolobj, volname=None, input_vol=None, clone_vol=None):
- volclass = Storage.StorageVolume.get_volume_for_pool(pool_object=poolobj)
-
if volname is None:
volname = poolobj.name() + "-vol"
alloc = 5 * 1024 * 1024 * 1024
cap = 10 * 1024 * 1024 * 1024
- vol_inst = volclass(conn,
- name=volname, capacity=cap, allocation=alloc,
- pool=poolobj)
+ vol_inst = StorageVolume(conn)
+ vol_inst.pool = poolobj
+ vol_inst.name = volname
+ vol_inst.capacity = cap
+ vol_inst.allocation = alloc
- perms = {}
- perms["mode"] = 0700
- perms["owner"] = 10736
- perms["group"] = 10736
+ vol_inst.permissions.mode = "0700"
+ vol_inst.permissions.owner = "10736"
+ vol_inst.permissions.group = "10736"
- vol_inst.perms = perms
if input_vol:
vol_inst.input_vol = input_vol
+ vol_inst.sync_input_vol()
elif clone_vol:
- vol_inst = Storage.CloneVolume(conn, volname, clone_vol)
+ vol_inst = StorageVolume(conn, parsexml=clone_vol.XMLDesc(0))
+ vol_inst.input_vol = clone_vol
+ vol_inst.sync_input_vol()
+ vol_inst.name = volname
+ vol_inst.validate()
filename = os.path.join(basepath, vol_inst.name + ".xml")
-
- # Make sure permissions are properly set
utils.diff_compare(vol_inst.get_xml_config(), filename)
-
return vol_inst.install(meter=False)
@@ -134,7 +133,7 @@ class TestStorage(unittest.TestCase):
def testDirPool(self):
poolobj = createPool(self.conn,
- Storage.StoragePool.TYPE_DIR, "pool-dir")
+ StoragePool.TYPE_DIR, "pool-dir")
invol = createVol(self.conn, poolobj)
createVol(self.conn, poolobj,
volname=invol.name() + "input", input_vol=invol)
@@ -143,7 +142,7 @@ class TestStorage(unittest.TestCase):
def testFSPool(self):
poolobj = createPool(self.conn,
- Storage.StoragePool.TYPE_FS, "pool-fs")
+ StoragePool.TYPE_FS, "pool-fs")
invol = createVol(self.conn, poolobj)
createVol(self.conn, poolobj,
volname=invol.name() + "input", input_vol=invol)
@@ -152,7 +151,7 @@ class TestStorage(unittest.TestCase):
def testNetFSPool(self):
poolobj = createPool(self.conn,
- Storage.StoragePool.TYPE_NETFS, "pool-netfs")
+ StoragePool.TYPE_NETFS, "pool-netfs")
invol = createVol(self.conn, poolobj)
createVol(self.conn, poolobj,
volname=invol.name() + "input", input_vol=invol)
@@ -161,7 +160,7 @@ class TestStorage(unittest.TestCase):
def testLVPool(self):
poolobj = createPool(self.conn,
- Storage.StoragePool.TYPE_LOGICAL,
+ StoragePool.TYPE_LOGICAL,
"pool-logical",
target_path="/dev/pool-logical")
invol = createVol(self.conn, poolobj)
@@ -171,24 +170,25 @@ class TestStorage(unittest.TestCase):
poolobj, volname=invol.name() + "clone", clone_vol=invol)
# Test parsing source name for target path
- createPool(self.conn, Storage.StoragePool.TYPE_LOGICAL,
+ createPool(self.conn, StoragePool.TYPE_LOGICAL,
"pool-logical-target-srcname",
target_path="/dev/vgfoobar")
# Test with source name
createPool(self.conn,
- Storage.StoragePool.TYPE_LOGICAL, "pool-logical-srcname",
+ StoragePool.TYPE_LOGICAL, "pool-logical-srcname",
source_name="vgname")
# Test creating with many devices
- createPool(self.conn,
- Storage.StoragePool.TYPE_LOGICAL, "pool-logical-manydev",
- source_path=["/tmp/path1", "/tmp/path2", "/tmp/path3"],
- target_path=None)
+ # XXX: Need to wire this up
+ #createPool(self.conn,
+ # StoragePool.TYPE_LOGICAL, "pool-logical-manydev",
+ # source_path=["/tmp/path1", "/tmp/path2", "/tmp/path3"],
+ # target_path=None)
def testDiskPool(self):
poolobj = createPool(self.conn,
- Storage.StoragePool.TYPE_DISK,
+ StoragePool.TYPE_DISK,
"pool-disk", fmt="dos")
invol = createVol(self.conn, poolobj)
createVol(self.conn, poolobj,
@@ -197,58 +197,40 @@ class TestStorage(unittest.TestCase):
volname=invol.name() + "clone", clone_vol=invol)
def testISCSIPool(self):
- poolobj = createPool(self.conn,
- Storage.StoragePool.TYPE_ISCSI, "pool-iscsi")
- # Not supported
- #volobj = createVol(poolobj)
- self.assertRaises(RuntimeError, createVol, self.conn, poolobj)
-
createPool(self.conn,
- Storage.StoragePool.TYPE_ISCSI, "pool-iscsi-iqn",
+ StoragePool.TYPE_ISCSI, "pool-iscsi",
iqn="foo.bar.baz.iqn")
def testSCSIPool(self):
- poolobj = createPool(self.conn,
- Storage.StoragePool.TYPE_SCSI, "pool-scsi")
- # Not supported
- #volobj = createVol(poolobj)
- self.assertRaises(RuntimeError, createVol, self.conn, poolobj)
+ createPool(self.conn, StoragePool.TYPE_SCSI, "pool-scsi")
def testMpathPool(self):
- poolobj = createPool(self.conn,
- Storage.StoragePool.TYPE_MPATH, "pool-mpath")
- # Not supported
- #volobj = createVol(poolobj)
- self.assertRaises(RuntimeError, createVol, self.conn, poolobj)
+ createPool(self.conn, StoragePool.TYPE_MPATH, "pool-mpath")
- def _enumerateCompare(self, pool_list):
+ def _enumerateCompare(self, name, pool_list):
for pool in pool_list:
- pool.name = pool.name + str(pool_list.index(pool))
+ pool.name = name + str(pool_list.index(pool))
pool.uuid = generate_uuid_from_string(pool.name)
poolCompare(pool)
def testEnumerateLogical(self):
name = "pool-logical-list"
-
- lst = Storage.StoragePool.pool_list_from_sources(self.conn, name,
- Storage.StoragePool.TYPE_LOGICAL)
- self._enumerateCompare(lst)
+ lst = StoragePool.pool_list_from_sources(self.conn,
+ StoragePool.TYPE_LOGICAL)
+ self._enumerateCompare(name, lst)
def testEnumerateNetFS(self):
name = "pool-netfs-list"
host = "example.com"
-
- lst = Storage.StoragePool.pool_list_from_sources(self.conn, name,
- Storage.StoragePool.TYPE_NETFS,
+ lst = StoragePool.pool_list_from_sources(self.conn,
+ StoragePool.TYPE_NETFS,
host=host)
- self._enumerateCompare(lst)
+ self._enumerateCompare(name, lst)
def testEnumerateiSCSI(self):
- name = "pool-iscsi-list"
host = "example.com"
-
- lst = Storage.StoragePool.pool_list_from_sources(self.conn, name,
- Storage.StoragePool.TYPE_ISCSI,
+ lst = StoragePool.pool_list_from_sources(self.conn,
+ StoragePool.TYPE_ISCSI,
host=host)
self.assertTrue(len(lst) == 0)