本文整理汇总了Python中virttest.utils_test.libvirt.setup_or_cleanup_iscsi函数的典型用法代码示例。如果您正苦于以下问题:Python setup_or_cleanup_iscsi函数的具体用法?Python setup_or_cleanup_iscsi怎么用?Python setup_or_cleanup_iscsi使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了setup_or_cleanup_iscsi函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: setup_iscsi_auth
def setup_iscsi_auth():
iscsi_target, lun_num = libvirt.setup_or_cleanup_iscsi(is_setup=True,
is_login=False,
image_size=emulated_size,
chap_user=chap_user,
chap_passwd=chap_passwd)
return iscsi_target
开发者ID:yalzhang,项目名称:tp-libvirt,代码行数:7,代码来源:virsh_pool_auth.py
示例2: prepare_disk
def prepare_disk(path, disk_format):
"""
Prepare the disk for a given disk format.
"""
disk = {}
# Check if we test with a non-existed disk.
if os.path.split(path)[-1].startswith("notexist."):
disk.update({"format": disk_format,
"source": path})
elif disk_format == "scsi":
scsi_option = params.get("virt_disk_device_scsi_option", "")
disk_source = libvirt.create_scsi_disk(scsi_option)
if disk_source:
disk.update({"format": "scsi",
"source": disk_source})
else:
raise error.TestNAError("Get scsi disk failed")
elif disk_format in ["iso", "floppy"]:
disk_path = libvirt.create_local_disk(disk_format, path)
disk.update({"format": disk_format,
"source": disk_path})
elif disk_format == "nfs":
nfs_disk_type = params.get("nfs_disk_type", None)
disk.update(setup_nfs_disk(os.path.split(path)[-1], nfs_disk_type))
elif disk_format == "iscsi":
# Create iscsi device if needed.
image_size = params.get("image_size", "2G")
device_source = libvirt.setup_or_cleanup_iscsi(
is_setup=True, is_login=True, image_size=image_size)
logging.debug("iscsi dev name: %s", device_source)
# Format the disk and make file system.
libvirt.mk_part(device_source)
# Run partprobe to make the change take effect.
utils.run("partprobe", ignore_status=True)
libvirt.mkfs("%s1" % device_source, "ext3")
device_source += "1"
disk.update({"format": disk_format,
"source": device_source})
elif disk_format in ["raw", "qcow2"]:
disk_size = params.get("virt_disk_device_size", "1")
device_source = libvirt.create_local_disk(
"file", path, disk_size, disk_format=disk_format)
disk.update({"format": disk_format,
"source": device_source})
return disk
开发者ID:pezhang,项目名称:tp-libvirt,代码行数:50,代码来源:virtual_disks_multidisks.py
示例3: create_iscsi_pool
def create_iscsi_pool():
"""
Setup iSCSI target,and create one iSCSI pool.
"""
libvirt.setup_or_cleanup_iscsi(is_setup=False)
iscsi_target, lun_num = libvirt.setup_or_cleanup_iscsi(is_setup=True,
is_login=False,
image_size='1G',
chap_user="",
chap_passwd="",
portal_ip=disk_src_host)
# Define an iSCSI pool xml to create it
pool_src_xml = pool_xml.SourceXML()
pool_src_xml.host_name = pool_src_host
pool_src_xml.device_path = iscsi_target
poolxml = pool_xml.PoolXML(pool_type=pool_type)
poolxml.name = pool_name
poolxml.set_source(pool_src_xml)
poolxml.target_path = "/dev/disk/by-path"
# Create iSCSI pool.
virsh.pool_destroy(pool_name, **virsh_dargs)
cmd_result = virsh.pool_create(poolxml.xml, **virsh_dargs)
libvirt.check_exit_status(cmd_result)
开发者ID:nasastry,项目名称:tp-libvirt,代码行数:24,代码来源:startup_policy.py
示例4: prepare_iscsi_disk
def prepare_iscsi_disk(blk_source, **kwargs):
"""
Set up iscsi disk device and replace the domain disk image
:param blk_source: The domain disk image path
:param **kwargs: Key words for iscsi device setup
:return: iscsi disk path
"""
device_name = utlv.setup_or_cleanup_iscsi(True, image_size='3G')
disk_format = kwargs.get("disk_format")
image_size = kwargs.get("image_size")
if device_name:
# If disk format is qcow2, format the iscsi disk first
if disk_format == "qcow2":
cmd = ("qemu-img create -f %s %s %s" %
(disk_format, device_name, image_size))
process.run(cmd, shell=True)
# Copy the domain disk image to the iscsi disk path
cmd = ("cp -f %s %s" % (blk_source, device_name))
process.run(cmd, shell=True)
return device_name
开发者ID:balamuruhans,项目名称:tp-libvirt,代码行数:21,代码来源:virsh_boot.py
示例5: create_iscsi_device
def create_iscsi_device(device_size="2G"):
"""
Create a iscsi device.
"""
imgname = "emulated_iscsi"
device_name = utlv.setup_or_cleanup_iscsi(is_setup=True,
emulated_image=imgname,
image_size=device_size)
# Verify if expected iscsi device has been set
for iscsi_node in iscsi.iscsi_get_sessions():
if iscsi_node[1].count(imgname):
# Remove port for pool operations
ip_addr = iscsi_node[0].split(":3260")[0]
iscsi_device = (ip_addr, iscsi_node[1])
break
if iscsi_device == ():
raise error.TestFail("No matched iscsi device.")
check_ret = utils.run("ls %s" % device_name)
if check_ret.exit_status:
raise error.TestFail("Can not find provided device:%s" % check_ret)
return device_name
开发者ID:noxdafox,项目名称:tp-libvirt,代码行数:22,代码来源:storage_discard.py
示例6: _make_snapshot
def _make_snapshot():
"""
Make external disk snapshot
"""
snap_xml = snapshot_xml.SnapshotXML()
snapshot_name = "blockcopy_snap"
snap_xml.snap_name = snapshot_name
snap_xml.description = "blockcopy snapshot"
# Add all disks into xml file.
vmxml = vm_xml.VMXML.new_from_inactive_dumpxml(vm_name)
disks = vmxml.devices.by_device_tag('disk')
new_disks = []
src_disk_xml = disks[0]
disk_xml = snap_xml.SnapDiskXML()
disk_xml.xmltreefile = src_disk_xml.xmltreefile
del disk_xml.device
del disk_xml.address
disk_xml.snapshot = "external"
disk_xml.disk_name = disk_xml.target['dev']
# Only qcow2 works as external snapshot file format, update it
# here
driver_attr = disk_xml.driver
driver_attr.update({'type': 'qcow2'})
disk_xml.driver = driver_attr
new_attrs = disk_xml.source.attrs
if disk_xml.source.attrs.has_key('file'):
new_file = os.path.join(tmp_dir, "blockcopy_shallow.snap")
snapshot_external_disks.append(new_file)
new_attrs.update({'file': new_file})
hosts = None
elif (disk_xml.source.attrs.has_key('dev') or
disk_xml.source.attrs.has_key('name') or
disk_xml.source.attrs.has_key('pool')):
if (disk_xml.type_name == 'block' or
disk_source_protocol == 'iscsi'):
disk_xml.type_name = 'block'
if new_attrs.has_key('name'):
del new_attrs['name']
del new_attrs['protocol']
elif new_attrs.has_key('pool'):
del new_attrs['pool']
del new_attrs['volume']
del new_attrs['mode']
back_path = utl.setup_or_cleanup_iscsi(is_setup=True,
is_login=True,
image_size="1G",
emulated_image=back_n)
emulated_iscsi.append(back_n)
cmd = "qemu-img create -f qcow2 %s 1G" % back_path
process.run(cmd, shell=True)
new_attrs.update({'dev': back_path})
hosts = None
new_src_dict = {"attrs": new_attrs}
if hosts:
new_src_dict.update({"hosts": hosts})
disk_xml.source = disk_xml.new_disk_source(**new_src_dict)
new_disks.append(disk_xml)
snap_xml.set_disks(new_disks)
snapshot_xml_path = snap_xml.xml
logging.debug("The snapshot xml is: %s" % snap_xml.xmltreefile)
options = "--disk-only --xmlfile %s " % snapshot_xml_path
snapshot_result = virsh.snapshot_create(
vm_name, options, debug=True)
if snapshot_result.exit_status != 0:
raise exceptions.TestFail(snapshot_result.stderr)
开发者ID:crazyAxe,项目名称:tp-libvirt,代码行数:74,代码来源:virsh_blockcopy.py
示例7: run
#.........这里部分代码省略.........
src_disk_xml = disks[0]
disk_xml = snap_xml.SnapDiskXML()
disk_xml.xmltreefile = src_disk_xml.xmltreefile
del disk_xml.device
del disk_xml.address
disk_xml.snapshot = "external"
disk_xml.disk_name = disk_xml.target['dev']
# Only qcow2 works as external snapshot file format, update it
# here
driver_attr = disk_xml.driver
driver_attr.update({'type': 'qcow2'})
disk_xml.driver = driver_attr
new_attrs = disk_xml.source.attrs
if disk_xml.source.attrs.has_key('file'):
new_file = os.path.join(tmp_dir, "blockcopy_shallow.snap")
snapshot_external_disks.append(new_file)
new_attrs.update({'file': new_file})
hosts = None
elif (disk_xml.source.attrs.has_key('dev') or
disk_xml.source.attrs.has_key('name') or
disk_xml.source.attrs.has_key('pool')):
if (disk_xml.type_name == 'block' or
disk_source_protocol == 'iscsi'):
disk_xml.type_name = 'block'
if new_attrs.has_key('name'):
del new_attrs['name']
del new_attrs['protocol']
elif new_attrs.has_key('pool'):
del new_attrs['pool']
del new_attrs['volume']
del new_attrs['mode']
back_path = utl.setup_or_cleanup_iscsi(is_setup=True,
is_login=True,
image_size="1G",
emulated_image=back_n)
emulated_iscsi.append(back_n)
cmd = "qemu-img create -f qcow2 %s 1G" % back_path
process.run(cmd, shell=True)
new_attrs.update({'dev': back_path})
hosts = None
new_src_dict = {"attrs": new_attrs}
if hosts:
new_src_dict.update({"hosts": hosts})
disk_xml.source = disk_xml.new_disk_source(**new_src_dict)
new_disks.append(disk_xml)
snap_xml.set_disks(new_disks)
snapshot_xml_path = snap_xml.xml
logging.debug("The snapshot xml is: %s" % snap_xml.xmltreefile)
options = "--disk-only --xmlfile %s " % snapshot_xml_path
snapshot_result = virsh.snapshot_create(
vm_name, options, debug=True)
if snapshot_result.exit_status != 0:
raise exceptions.TestFail(snapshot_result.stderr)
snap_path = ''
save_path = ''
emulated_iscsi = []
try:
开发者ID:crazyAxe,项目名称:tp-libvirt,代码行数:67,代码来源:virsh_blockcopy.py
示例8: run
def run(test, params, env):
"""
Test steps:
1. Prepare a multipath device.
2. Prepare virtual disk xml using this multipath device.
3. Hot/Cold-plug the disk xml to virtual machine.
4. Check the attached disk in the virtual machine.
"""
vm_name = params.get("main_vm")
vm = env.get_vm(vm_name)
mpath_conf_path = params.get('mpath_conf_path', '/etc/multipath.conf')
mpath_conf_bkup_path = params.get('mpath_conf_bkup_path',
'/etc/multipath.conf.bkup')
mpath_conf_exist = False
def prepare_multipath_conf():
"""
Prepare the multipath.conf to make sure iscsi lun can be seen as a
multipath device.
:return: True means the multipath.conf exists at first, False means not.
"""
multipath_conf_exist = False
mpath_conf_content = ("defaults {\n"
" user_friendly_names yes\n"
" path_grouping_policy multibus\n"
" failback immediate\n"
" no_path_retry fail\n"
"}\n")
if os.path.exists(mpath_conf_bkup_path):
os.remove(mpath_conf_bkup_path)
if os.path.exists(mpath_conf_path):
multipath_conf_exist = True
shutil.move(mpath_conf_path, mpath_conf_bkup_path)
with open(mpath_conf_path, 'wt') as mpath_conf_file:
mpath_conf_file.write(mpath_conf_content)
return multipath_conf_exist
def recover_multipath_conf(remove_mpath_conf=False):
"""
Recover the multipath.conf.
:param remove_mpath_conf: True to remove multipath.conf.
"""
if os.path.exists(mpath_conf_bkup_path):
if os.path.exists(mpath_conf_path):
os.remove(mpath_conf_path)
shutil.move(mpath_conf_bkup_path, mpath_conf_path)
if os.path.exists(mpath_conf_path) and remove_mpath_conf:
os.remove(mpath_conf_path)
def check_in_vm(vm, old_parts):
"""
Check mount/read/write disk in VM.
:param vm: Virtual machine to be checked.
:param old_parts: Original disk partitions in VM.
"""
try:
session = vm.wait_for_login()
if platform.platform().count('ppc64'):
time.sleep(10)
new_parts = libvirt.get_parts_list(session)
added_parts = list(set(new_parts).difference(set(old_parts)))
logging.info("Added parts:%s", added_parts)
if len(added_parts) != 1:
test.fail("The number of new partitions is invalid in VM")
else:
added_part = added_parts[0]
cmd = ("fdisk -l /dev/{0} && mkfs.ext4 -F /dev/{0} && "
"mkdir -p test && mount /dev/{0} test && echo"
" teststring > test/testfile && umount test"
.format(added_part))
status, output = session.cmd_status_output(cmd)
session.close()
if status:
test.fail("Disk operation in VM failed:%s" % output)
except (remote.LoginError, virt_vm.VMError, aexpect.ShellError) as err:
test.fail("Error happens when check disk in vm: %s" % err)
storage_size = params.get("storage_size", "1G")
hotplug_disk = "yes" == params.get("hotplug_disk", "no")
status_error = "yes" == params.get("status_error")
# Start VM and get all partions in VM.
if vm.is_dead():
vm.start()
session = vm.wait_for_login()
old_parts = libvirt.get_parts_list(session)
session.close()
vmxml_backup = vm_xml.VMXML.new_from_inactive_dumpxml(vm_name)
vmxml = vm_xml.VMXML.new_from_dumpxml(vm_name)
try:
# Setup backend storage
mpath_conf_exist = prepare_multipath_conf()
mpath.restart_multipathd()
old_mpath_devs = mpath.find_mpath_devs()
libvirt.setup_or_cleanup_iscsi(is_setup=True)
mpath.restart_multipathd()
cur_mpath_devs = mpath.find_mpath_devs()
new_mpath_devs = list(set(cur_mpath_devs).difference(
set(old_mpath_devs)))
logging.debug("newly added mpath devs are: %s", new_mpath_devs)
#.........这里部分代码省略.........
开发者ID:nasastry,项目名称:tp-libvirt,代码行数:101,代码来源:virtual_disks_multipath.py
示例9: prepare_disk
else:
path = "%s/%s.%s" % (device_source_path,
device_source_names[i], device_formats[i])
disk = prepare_disk(path, device_formats[i])
if disk:
disks.append(disk)
except Exception, e:
logging.error(repr(e))
for img in disks:
if img.has_key("disk_dev"):
if img["format"] == "nfs":
img["disk_dev"].cleanup()
else:
if img["format"] == "iscsi":
libvirt.setup_or_cleanup_iscsi(is_setup=False)
if img["format"] not in ["dir", "scsi"]:
os.remove(img["source"])
raise error.TestNAError("Creating disk failed")
# Build disks xml.
disks_xml = []
# Additional disk images.
disks_img = []
vmxml = vm_xml.VMXML.new_from_dumpxml(vm_name)
try:
for i in range(len(disks)):
disk_xml = Disk(type_name=device_types[i])
# If we are testing image file on iscsi disk,
# mount the disk and then create the image.
if test_file_img_on_disk:
开发者ID:nertpinx,项目名称:tp-libvirt,代码行数:31,代码来源:virtual_disks_multidisks.py
示例10: get_disk_capacity
af_fstrim_cpy = get_disk_capacity(disk_type, imagefile=device_path,
lvname="lvthin")
logging.debug("\nBefore occupying disk:%s\n"
"After occupied disk:%s\n"
"After fstrim operation:%s",
bf_cpy, bf_fstrim_cpy, af_fstrim_cpy)
# Check results
if fstrim_type in ["fstrim_cmd", "qemu-guest-agent"]:
if not sig_delta(bf_fstrim_cpy, af_fstrim_cpy) and \
not status_error:
raise error.TestFail("Manual 'fstrims' didn't work.")
elif fstrim_type == "mount_with_discard":
if sig_delta(bf_cpy, bf_fstrim_cpy) and not status_error:
raise error.TestFail("Automatical 'fstrims' didn't work.")
finally:
if new_vm.is_alive():
new_vm.destroy()
new_vm.undefine()
if disk_type == "block":
try:
lv_utils.lv_remove("vgthin", "lvthin")
except error.TestError, detail:
logging.debug(str(detail))
try:
lv_utils.vg_remove("vgthin")
except error.TestError, detail:
logging.debug(str(detail))
utils.run("pvremove -f %s" % discard_device, ignore_status=True)
if create_iscsi:
utlv.setup_or_cleanup_iscsi(is_setup=False)
开发者ID:noxdafox,项目名称:tp-libvirt,代码行数:30,代码来源:storage_discard.py
示例11: run
def run(test, params, env):
"""
Test start domain with nwfilter rules.
1) Prepare parameters.
2) Prepare nwfilter rule and update domain interface to apply.
3) Start domain and check rule.
4) Clean env
"""
# Prepare parameters
filter_name = params.get("filter_name", "testcase")
exist_filter = params.get("exist_filter", "no-mac-spoofing")
check_cmd = params.get("check_cmd")
expect_match = params.get("expect_match")
status_error = "yes" == params.get("status_error", "no")
mount_noexec_tmp = "yes" == params.get("mount_noexec_tmp", "no")
kill_libvirtd = "yes" == params.get("kill_libvirtd", "no")
bug_url = params.get("bug_url", "")
ipset_command = params.get("ipset_command")
vm_name = params.get("main_vm")
vm = env.get_vm(vm_name)
username = params.get("username")
password = params.get("password")
# Prepare vm filterref parameters dict list
filter_param_list = []
params_key = []
for i in params.keys():
if 'parameter_name_' in i:
params_key.append(i)
params_key.sort()
for i in range(len(params_key)):
params_dict = {}
params_dict['name'] = params[params_key[i]]
params_dict['value'] = params['parameter_value_%s' % i]
filter_param_list.append(params_dict)
filterref_dict = {}
filterref_dict['name'] = filter_name
filterref_dict['parameters'] = filter_param_list
# backup vm xml
vmxml_backup = libvirt_xml.VMXML.new_from_inactive_dumpxml(vm_name)
libvirtd = utils_libvirtd.Libvirtd()
device_name = None
try:
rule = params.get("rule")
if rule:
# Create new filter xml
filterxml = utlv.create_nwfilter_xml(params)
# Define filter xml
virsh.nwfilter_define(filterxml.xml, debug=True)
# Update first vm interface with filter
vmxml = libvirt_xml.VMXML.new_from_inactive_dumpxml(vm_name)
iface_xml = vmxml.get_devices('interface')[0]
vmxml.del_device(iface_xml)
new_iface = interface.Interface('network')
new_iface.xml = iface_xml.xml
new_filterref = new_iface.new_filterref(**filterref_dict)
new_iface.filterref = new_filterref
logging.debug("new interface xml is: %s" % new_iface)
vmxml.add_device(new_iface)
vmxml.sync()
if mount_noexec_tmp:
device_name = utlv.setup_or_cleanup_iscsi(is_setup=True)
utlv.mkfs(device_name, 'ext4')
cmd = "mount %s /tmp -o noexec,nosuid" % device_name
process.run(cmd, shell=True)
if ipset_command:
pkg = "ipset"
if not utils_package.package_install(pkg):
test.cancel("Can't install ipset on host")
process.run(ipset_command, shell=True)
# Run command
try:
vm.start()
if not mount_noexec_tmp:
vm.wait_for_serial_login(username=username, password=password)
vmxml = libvirt_xml.VMXML.new_from_dumpxml(vm_name)
iface_xml = vmxml.get_devices('interface')[0]
iface_target = iface_xml.target['dev']
logging.debug("iface target dev name is %s", iface_target)
# Check iptables or ebtables on host
if check_cmd:
if "DEVNAME" in check_cmd:
check_cmd = check_cmd.replace("DEVNAME", iface_target)
ret = utils_misc.wait_for(lambda: not
process.system(check_cmd,
ignore_status=True,
shell=True),
timeout=30)
if not ret:
test.fail("Rum command '%s' failed" % check_cmd)
out = to_text(process.system_output(check_cmd, ignore_status=False, shell=True))
if expect_match and not re.search(expect_match, out):
#.........这里部分代码省略.........
开发者ID:balamuruhans,项目名称:tp-libvirt,代码行数:101,代码来源:nwfilter_vm_start.py
示例12: run
#.........这里部分代码省略.........
"""
vm_name = params.get("main_vm", "virt-tests-vm1")
vm = env.get_vm(vm_name)
if vm.is_dead():
vm.start()
vm.wait_for_login()
bf_disks = get_vm_disks(vm)
vm.destroy()
# Backup VM XML file
backupvmxml = vm_xml.VMXML.new_from_dumpxml(vm_name)
disk_type = params.get("disk_type", "file")
discard_device = params.get("discard_device", "/DEV/EXAMPLE")
fstrim_type = params.get("fstrim_type", "fstrim_cmd")
try:
if disk_type == "file":
device_dir = data_dir.get_tmp_dir()
params["image_name"] = "discard_test"
params["image_format"] = "raw"
params["image_size"] = "1G"
qs = qemu_storage.QemuImg(params, device_dir, "")
device_path, _ = qs.create(params)
else:
if not discard_device.count("/DEV/EXAMPLE"):
device_path = discard_device
else:
discard_device = create_iscsi_device()
device_path = create_volume(discard_device)
discard_type = params.get("discard_type", "ignore")
target_bus = params.get("storage_target_bus", "virtio")
target_dev = params.get("storage_target_dev", "vdb")
status_error = "yes" == params.get("status_error", "no")
xmlfile = create_disk_xml(disk_type, device_path, discard_type,
target_dev, target_bus)
virsh.attach_device(domain_opt=vm_name, file_opt=xmlfile,
flagstr="--persistent", ignore_status=False)
if fstrim_type == "qemu-guest-agent":
channelfile = create_channel_xml(vm_name)
virsh.attach_device(domain_opt=vm_name, file_opt=channelfile,
flagstr="--persistent", ignore_status=False)
logging.debug("New VMXML:\n%s", virsh.dumpxml(vm_name))
# Verify attached device in vm
if vm.is_dead():
vm.start()
vm.wait_for_login()
af_disks = get_vm_disks(vm)
logging.debug("\nBefore:%s\nAfter:%s", bf_disks, af_disks)
# Get new disk name in vm
new_disk = "".join(list(set(bf_disks) ^ set(af_disks)))
if not new_disk:
raise error.TestFail("Can not get attached device in vm.")
logging.debug("Attached device in vm:%s", new_disk)
# Occupt space of new disk
frmt_type = params.get("discard_format", "ext4")
if fstrim_type == "mount_with_discard":
mount_options = "discard"
else:
mount_options = None
bf_cpy = get_disk_capacity(disk_type, imagefile=device_path,
lvname="lvthin")
logging.debug("Disk size before using:%s", bf_cpy)
occupy_disk(vm, new_disk, "500", frmt_type, mount_options)
bf_fstrim_cpy = get_disk_capacity(disk_type, imagefile=device_path,
lvname="lvthin")
logging.debug("Disk size after used:%s", bf_fstrim_cpy)
do_fstrim(fstrim_type, vm, status_error)
af_fstrim_cpy = get_disk_capacity(disk_type, imagefile=device_path,
lvname="lvthin")
logging.debug("\nBefore occupying disk:%s\n"
"After occupied disk:%s\n"
"After fstrim operation:%s",
bf_cpy, bf_fstrim_cpy, af_fstrim_cpy)
# Check results
if fstrim_type in ["fstrim_cmd", "qemu-guest-agent"]:
if not sig_delta(bf_fstrim_cpy, af_fstrim_cpy) and \
not status_error:
raise error.TestFail("Manual 'fstrims' didn't work.")
elif fstrim_type == "mount_with_discard":
if sig_delta(bf_cpy, bf_fstrim_cpy) and not status_error:
raise error.TestFail("Automatical 'fstrims' didn't work.")
finally:
if vm.is_alive():
vm.destroy()
try:
backupvmxml.sync()
except xcepts.LibvirtXMLError:
# TODO: provide another way to clean it up
pass # Do following steps anyway
if disk_type == "block":
try:
lv_utils.vg_remove("vgthin")
except error.TestError:
pass
utils.run("pvremove -f %s" % discard_device, ignore_status=True)
utlv.setup_or_cleanup_iscsi(is_setup=False)
开发者ID:penght,项目名称:tp-libvirt,代码行数:101,代码来源:storage_discard.py
示例13: run
#.........这里部分代码省略.........
# Run test case
result = virsh.blockpull(vm_name, blk_target,
blockpull_options, **virsh_dargs)
status = result.exit_status
# If pull job aborted as timeout, the exit status is different
# on RHEL6(0) and RHEL7(1)
if with_timeout and 'Pull aborted' in result.stdout.strip():
if libvirt_version.version_compare(1, 1, 1):
status_error = True
else:
status_error = False
# Check status_error
libvirt.check_exit_status(result, status_error)
if not status and not with_timeout:
if snap_in_mirror:
snap_mirror_path = "%s/snap_mirror" % tmp_dir
snap_options = "--diskspec vda,snapshot=external,"
snap_options += "file=%s --disk-only" % snap_mirror_path
snapshot_external_disks.append(snap_mirror_path)
ret = virsh.snapshot_create_as(vm_name, snap_options,
ignore_status=True,
debug=True)
libvirt.check_exit_status(ret, snap_in_mirror_err)
return
vmxml = vm_xml.VMXML.new_from_dumpxml(vm_name)
disks = vmxml.devices.by_device_tag('disk')
for disk in disks:
if disk.target['dev'] != blk_target:
continue
else:
disk_xml = disk.xmltreefile
break
logging.debug("after pull the disk xml is: %s"
% disk_xml)
if libvirt_version.version_compare(1, 2, 4):
err_msg = "Domain image backing chain check failed"
if not base_option or "async" in base_option:
chain_lst = snap_src_lst[-1:]
ret = check_chain_xml(disk_xml, chain_lst)
if not ret:
test.fail(err_msg)
elif "base" or "shallow" in base_option:
chain_lst = snap_src_lst[::-1]
if not base_index and base_image:
base_index = chain_lst.index(base_image)
val_tmp = []
for i in range(1, base_index):
val_tmp.append(chain_lst[i])
for i in val_tmp:
chain_lst.remove(i)
ret = check_chain_xml(disk_xml, chain_lst)
if not ret:
test.fail(err_msg)
# If base image is the top layer of snapshot chain,
# virsh blockpull should fail, return directly
if base_option == "top":
return
# Check flag files
for flag in snapshot_flag_files:
status, output = session.cmd_status_output("cat %s" % flag)
if status:
test.fail("blockpull failed: %s" % output)
finally:
# Remove ceph configure file if created
if ceph_cfg:
os.remove(ceph_cfg)
if vm.is_alive():
vm.destroy(gracefully=False)
# Recover xml of vm.
vmxml_backup.sync("--snapshots-metadata")
if not disk_src_protocol or disk_src_protocol != 'gluster':
for disk in snapshot_external_disks:
if os.path.exists(disk):
os.remove(disk)
if backing_file_relative_path:
libvirt.clean_up_snapshots(vm_name, domxml=vmxml_backup)
process.run("cd %s && rm -rf b c d" % blk_source_folder, shell=True)
libvirtd = utils_libvirtd.Libvirtd()
if disk_src_protocol == 'iscsi':
libvirt.setup_or_cleanup_iscsi(is_setup=False,
restart_tgtd=restart_tgtd)
elif disk_src_protocol == 'gluster':
libvirt.setup_or_cleanup_gluster(False, vol_name, brick_path)
libvirtd.restart()
elif disk_src_protocol == 'netfs':
restore_selinux = params.get('selinux_status_bak')
libvirt.setup_or_cleanup_nfs(is_setup=False,
restore_selinux=restore_selinux)
开发者ID:yalzhang,项目名称:tp-libvirt,代码行数:101,代码来源:virsh_blockpull.py
示例14:
original_xml.sync(option)
for disk in snapshot_external_disks:
if os.path.exists(disk):
os.remove(disk)
if replace_vm_disk:
if disk_source_protocol == "netfs":
restore_selinux = params.get('selinux_status_bak')
utl.setup_or_cleanup_nfs(is_setup=False,
restore_selinux=restore_selinux)
elif disk_source_protocol == "iscsi":
if disk_type == 'volume':
virsh.pool_destroy(pool_name, ignore_status=True,
debug=True)
if with_blockdev:
utl.setup_or_cleanup_iscsi(is_setup=False,
emulated_image=blkdev_n)
if with_shallow:
utl.setup_or_cleanup_iscsi(is_setup=False,
emulated_image=back_n)
utl.setup_or_cleanup_iscsi(is_setup=False,
emulated_image=emu_image,
restart_tgtd='yes')
if os.path.exists(dest_path) and not with_blockdev:
os.remove(dest_path)
if os.path.exists(snap_path):
os.remove(snap_path)
if os.path.exists(save_path):
os.remove(save_path)
开发者ID:LuyaoHuang,项目名称:tp-libvirt,代码行数:30,代码来源:virsh_blockcopy.py
示例15: run
#.........这里部分代码省略.........
if pool_type == 'iscsi':
cmd = 'iscsiadm -m discovery -t sendtargets -p 127.0.0.1'
process.run(cmd, shell=True)
# Step (4)
# Pool start
if start_acl:
result = virsh.pool_start(pool_name, **acl_dargs)
else:
result = virsh.pool_start(pool_name, ignore_status=True)
utlv.check_exit_status(result, start_error)
if start_error:
# Redo under negative case to keep case continue
result = virsh.pool_start(pool_name, ignore_status=True)
utlv.check_exit_status(result)
option = "--persistent --type %s" % pool_type
check_pool_list(pool_name, option)
# Step (5)
# Pool destroy
if destroy_acl:
result = virsh.pool_destroy(pool_name, **acl_dargs)
else:
result = virsh.pool_destroy(pool_name)
if result:
if destroy_error:
raise error.TestFail("Expect fail, but run successfully.")
else:
if not destroy_error:
raise error.TestFail("Pool %s destroy failed, not expected."
% pool_name)
else:
# Redo under negative case to keep case continue
if virsh.pool_destroy(pool_name):
logging.debug("Pool %s destroyed.", pool_name)
else:
raise error.TestFail("Destroy pool % failed." % pool_name)
# Step (6)
# Pool refresh for 'dir' type pool
# Pool start
result = virsh.pool_start(pool_name, ignore_status=True)
utlv.check_exit_status(result)
if pool_type == "dir":
os.mknod(vol_path)
if refresh_acl:
result = virsh.pool_refresh(pool_name, **acl_dargs)
else:
result = virsh.pool_refresh(pool_name)
utlv.check_exit_status(result, refresh_error)
# Step (7)
# Pool vol-list
if vol_list_acl:
result = virsh.vol_list(pool_name, **acl_dargs)
else:
result = virsh.vol_list(pool_name)
utlv.check_exit_status(result, vol_list_error)
# Step (8)
# Pool delete for 'dir' type pool
if virsh.pool_destroy(pool_name):
logging.debug("Pool %s destroyed.", pool_name)
else:
raise error.TestFail("Destroy pool % failed." % pool_name)
if pool_type == "dir":
if os.path.exists(vol_path):
os.remove(vol_path)
if delete_acl:
result = virsh.pool_delete(pool_name, **acl_dargs)
else:
result = virsh.pool_delete(pool_name, ignore_status=True)
utlv.check_exit_status(result, delete_error)
option = "--inactive --type %s" % pool_type
check_pool_list(pool_name, option)
if not delete_error:
if os.path.exists(pool_target):
raise error.TestFail("The target path '%s' still exist." %
pool_target)
result = virsh.pool_undefine(pool_name, ignore_status=True)
utlv.check_exit_status(result)
check_pool_list(pool_name, "--all", True)
finally:
# Clean up
if os.path.exists(pool_xml):
os.remove(pool_xml)
if not _pool.delete_pool(pool_name):
logging.error("Can't delete pool: %s", pool_name)
if cleanup_env[2]:
cmd = "pvs |grep %s |awk '{print $1}'" % vg_name
pv_name = process.system_output(cmd, shell=True)
lv_utils.vg_remove(vg_name)
process.run("pvremove %s" % pv_name, shell=True)
if cleanup_env[1]:
utlv.setup_or_cleanup_iscsi(False)
if cleanup_env[0]:
utlv.setup_or_cleanup_nfs(
False, restore_selinux=cleanup_env[3])
开发者ID:chloerh,项目名称:tp-libvirt,代码行数:101,代码来源:virsh_pool_acl.py
示例16: run
#.........这里部分代码省略.........
vms_share = params.get("virt_disk_vms_share", "").split()
disk_bus = params.get("virt_disk_bus", "virtio")
disk_target = params.get("virt_disk_target", "vdb")
disk_type = params.get("virt_disk_type", "file")
disk_format = params.get("virt_disk_format", "")
scsi_options = params.get("scsi_options", "")
disk_driver_options = params.get("disk_driver_options", "")
hotplug = "yes" == params.get("virt_disk_vms_hotplug", "no")
status_error = params.get("status_error").split()
test_error_policy = "yes" == params.get("virt_disk_test_error_policy",
"no")
test_shareable = "yes" == params.get("virt_disk_test_shareable", "no")
disk_source_path = test.virtdir
# Backup vm xml files.
vms_backup = []
# We just use 2 VMs for testing.
for i in range(2):
vmxml_backup = vm_xml.VMXML.new_from_inactive_dumpxml(vm_names[i])
vms_backup.append(vmxml_backup)
try:
# Create disk images if needed.
disks = []
if disk_format == "scsi":
disk_source = libvirt.create_scsi_disk(scsi_options)
if not disk_source:
raise error.TestNAError("Get scsi disk failed.")
disks.append({"format": "scsi", "source": disk_source})
elif disk_format == "iscsi":
# Create iscsi device if neened.
image_size = params.get("image_size", "100M")
disk_source = libvirt.setup_or_cleanup_iscsi(
is_setup=True, is_login=True, image_size=image_size)
logging.debug("iscsi dev name: %s", disk_source)
# Format the disk and make the file system.
libvirt.mk_part(disk_source, size="10M")
libvirt.mkfs("%s1" % disk_source, "ext3")
disk_source += "1"
disks.append({"format": disk_format,
"source": disk_source})
elif disk_format in ["raw", "qcow2"]:
disk_path = "%s/test.%s" % (disk_source_path, disk_format)
disk_source = libvirt.create_local_disk("file", disk_path, "1",
disk_format=disk_format)
libvirt.mkfs(disk_source, "ext3")
disks.append({"format": disk_format,
"source": disk_source})
# Compose the new domain xml
vms_l
|
请发表评论