
+def verify_vol(server, virt, pool_name, exp_vol_path, found): + vols = vol_list(server, virt, pool_name) + if vols == None: + raise Exception("Failed to get the volume information") + + for vol in vols.split('\n'): + res_vol_name, res_vol_path = vol.split() + if res_vol_name != vol_name and res_vol_path != exp_vol_path: + continue + else: + found += 1 + + if found != 1: + logger.error("Failed to get the vol information")
You'll also want to verify that a template DiskRASD is created.
+ + return found +
+ +@do_main(platform_sup) +def main(): + options = main.options + server = options.ip + virt = options.virt + + libvirt_version = virsh_version(server, virt) + cim_rev, changeset = get_provider_version(virt, server) + if libvirt_version < "0.4.1" and cim_rev < libvirt_rasd_storagepool_changes: + logger.info("Storage Volume creation support is available with Libvirt" + "version >= 0.4.1 and Libvirt-CIM rev '%s'", + libvirt_rasd_storagepool_changes) + return SKIP + + dp_cn = "DiskPool" + exp_vol_path = "%s/%s" % (pool_attr['Path'], vol_name) + + # For now the test case support only the creation of dir type based + # vol creation, we can extend dp_types to include netfs etc + dp_types = { "DISK_POOL_DIR" : DIR_POOL } + + for pool_name, pool_type in dp_types.iteritems(): + status = FAIL PoolXML + res = [FAIL] + found = 0 + try: + status = create_pool(server, virt, pool_name, pool_attr, + mode_type=pool_type, pool_type="DiskPool")
You shouldn't need to create a storage pool, since main.py sets up a default diskpool. That pool is a dir type pool for the /tmp directory. So you should be able to create your storage volume there.
+ + if status != PASS: + logger.error("Failed to create pool '%s'", pool_name) + return status + + dp_inst_id = "%s/%s" % (dp_cn, pool_name) + stovol_settings = get_stovol_settings(server, virt, + dp_inst_id, pool_name) + if stovol_settings == None: + raise Exception("Failed to get the defualt StorageVolRASD info") + + disk_pool_inst = get_diskpool(server, virt, dp_cn, dp_inst_id) + if disk_pool_inst == None: + raise Exception("DiskPool instance for '%s' not found!" \ + % pool_name) + + rpcs = get_typed_class(virt, "ResourcePoolConfigurationService") + rpcs_conn = eval("rpcs_service." + rpcs)(server) + res = rpcs_conn.CreateResourceInPool(Settings=stovol_settings, + Pool=disk_pool_inst)
If this fails, no need to verify the vol. Raise an exception and fail the test.
+ found = verify_vol(server, virt, pool_name, exp_vol_path, found) + + except Exception, details: + logger.error("Exception details: %s", details) + status = FAIL + + ret = cleanup_pool_vol(server, virt, pool_name, exp_vol_path) + if res[0] == PASS and found == 1 and ret == PASS: + status = PASS + else: + return FAIL + + return status +if __name__ == "__main__": + sys.exit(main())
-- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com