diff options
author | Cole Robinson <crobinso@redhat.com> | 2013-09-19 20:18:12 -0400 |
---|---|---|
committer | Cole Robinson <crobinso@redhat.com> | 2013-09-20 10:00:08 -0400 |
commit | aff0ddb2594cea6d0683659e059e4f3a35f0437e (patch) | |
tree | 96286d5c380cee7166bca28150336903e9e635bc /tests/storage.py | |
parent | 3db5cb5f06cfb05718aa890bda3ef655bf319592 (diff) | |
download | virt-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.py | 126 |
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) |