本文整理汇总了Python中virttest.utils_net.generate_mac_address_simple函数的典型用法代码示例。如果您正苦于以下问题:Python generate_mac_address_simple函数的具体用法?Python generate_mac_address_simple怎么用?Python generate_mac_address_simple使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了generate_mac_address_simple函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: create_network_interface
def create_network_interface(name):
"""
Create network type interface xml.
"""
new_iface = Interface('network')
new_iface.source = {'network': name}
new_iface.model = "virtio"
new_iface.mac_address = utils_net.generate_mac_address_simple()
return new_iface
开发者ID:balamuruhans,项目名称:tp-libvirt,代码行数:9,代码来源:sriov.py
示例2: create_hostdev_interface
def create_hostdev_interface(pci_id, managed, model):
"""
Create hostdev type interface xml.
"""
attrs = create_address_dict(pci_id)
new_iface = Interface('hostdev')
new_iface.managed = managed
if model != "":
new_iface.model = model
new_iface.mac_address = utils_net.generate_mac_address_simple()
new_iface.hostdev_address = new_iface.new_iface_address(**{"attrs": attrs})
chars = string.ascii_letters + string.digits + '-_'
alias_name = 'ua-' + ''.join(random.choice(chars) for _ in list(range(64)))
new_iface.alias = {'name': alias_name}
return new_iface
开发者ID:balamuruhans,项目名称:tp-libvirt,代码行数:15,代码来源:sriov.py
示例3: add_iface
def add_iface(vm):
"""
Attach interface for the vm
"""
if vm.is_alive():
vm.destroy(gracefully=False)
iface_source = params.get("iface_source", "default")
iface_type = params.get("iface_type", "network")
iface_model = params.get("iface_model", "virtio")
iface_mac = utils_net.generate_mac_address_simple()
at_options = (" --type %s --source %s --model %s --mac %s --config "
% (iface_type, iface_source, iface_model, iface_mac))
ret = virsh.attach_interface(vm.name, at_options, ignore_status=True)
libvirt.check_exit_status(ret)
vm.start()
开发者ID:Antique,项目名称:tp-libvirt,代码行数:15,代码来源:virsh_domiflist.py
示例4: create_iface
def create_iface(iface_type, **kwargs):
"""
Create a interface to be attached to vm
"""
m_iface = Interface(iface_type)
m_iface.mac_address = utils_net.generate_mac_address_simple()
if 'base_if' in kwargs:
m_iface.source = {'dev': kwargs['base_if'],
'mode': 'vepa'}
if 'source_net' in kwargs:
m_iface.source = {'network': kwargs['source_net']}
if 'mtu' in kwargs:
m_iface.mtu = {'size': kwargs['mtu']}
if 'model_net' in kwargs:
m_iface.model = kwargs['model_net']
logging.debug(m_iface.get_xml())
logging.debug(m_iface)
return m_iface
开发者ID:nasastry,项目名称:tp-libvirt,代码行数:18,代码来源:mtu.py
示例5: clone_vm_filesystem
def clone_vm_filesystem(self, newname=None):
"""
Clone a new vm with only its filesystem disk.
@param newname:if newname is None,
create a new name with clone added.
"""
logging.info("Cloning...")
# Init options for virt-clone
options = {}
autoclone = bool(self.params.get("autoclone", False))
new_filesystem_path = self.params.get("new_filesystem_path")
cloned_files = []
if new_filesystem_path:
self.outdisk = new_filesystem_path
elif self.indisk is not None:
self.outdisk = "%s-clone" % self.indisk
cloned_files.append(self.outdisk)
options['files'] = cloned_files
# cloned_mac can be CREATED, RANDOM or a string.
cloned_mac = self.params.get("cloned_mac", "CREATED")
if cloned_mac == "CREATED":
options['mac'] = utils_net.generate_mac_address_simple()
else:
options['mac'] = cloned_mac
options['ignore_status'] = True
options['debug'] = True
options['timeout'] = int(self.params.get("timeout", 240))
if newname is None:
newname = "%s-virtclone" % self.oldvm.name
result = lgf.virt_clone_cmd(self.oldvm.name, newname,
autoclone, **options)
if result.exit_status:
error_info = "Clone %s to %s failed." % (self.oldvm.name, newname)
logging.error(error_info)
return (False, result)
else:
self.newvm.name = newname
cloned_mac = vm_xml.VMXML.get_first_mac_by_name(newname)
if cloned_mac is not None:
self.newvm.address_cache[cloned_mac] = None
return (True, result)
开发者ID:Keepod,项目名称:virt-test,代码行数:43,代码来源:libguestfs.py
示例6: add_iface
def add_iface(vm, at_option=""):
"""
Attach interface for the vm
"""
if vm.is_alive() and "--inactive" not in additional_options:
vm.destroy(gracefully=False)
iface_source = params.get("iface_source", "default")
iface_type = params.get("iface_type", "network")
iface_model = params.get("iface_model", "virtio")
iface_mac = utils_net.generate_mac_address_simple()
at_options = (" --type %s --source %s --model %s --mac %s --config %s"
% (iface_type, iface_source, iface_model,
iface_mac, at_option))
ret = virsh.attach_interface(vm.name, at_options, ignore_status=True)
libvirt.check_exit_status(ret)
nic_params = {'mac': iface_mac, 'nettype': 'bridge'}
vm.add_nic(**nic_params)
if not vm.is_alive():
vm.start()
# Return the new attached interface index
return vm.get_nic_index_by_mac(iface_mac)
开发者ID:nasastry,项目名称:tp-libvirt,代码行数:21,代码来源:virsh_domiflist.py
示例7: create_interface
def create_interface():
"""
Call different function to create interface according to the type
"""
new_iface = Interface('network')
if vf_type == "vf":
new_iface = create_hostdev_interface(vf_addr, managed, model)
if vf_type == "vf_pool":
netxml = create_hostdev_network()
virsh.net_define(netxml.xml, ignore_status=True)
if not inactive_pool:
virsh.net_start(netxml.name)
new_iface = create_network_interface(netxml.name)
if vf_type == "macvtap":
new_iface = Interface('direct')
new_iface.source = {"dev": vf_name, "mode": "passthrough"}
new_iface.mac_address = utils_net.generate_mac_address_simple()
if vf_type == "macvtap_network":
netxml = create_macvtap_network()
result = virsh.net_define(netxml.xml, ignore_status=True)
virsh.net_start(netxml.name)
new_iface = create_network_interface(netxml.name)
return new_iface
开发者ID:balamuruhans,项目名称:tp-libvirt,代码行数:23,代码来源:sriov.py
示例8: create_iface
def create_iface(iface_model, iface_source, **kwargs):
"""
Create an interface to be attached to vm
:param iface_model: model of the interface device
:param iface_source: source of the interface device
:param kwargs: other k-w args that needed to create device
:return: the newly created interface object
"""
iface = Interface('network')
iface.model = iface_model
iface.source = eval(iface_source)
if 'mac' in kwargs:
iface.mac_address = kwargs['mac']
else:
mac = utils_net.generate_mac_address_simple()
iface.mac_address = mac
if 'address' in kwargs:
iface.address = iface.new_iface_address(attrs=eval(kwargs['address']))
logging.debug('iface: %s', iface)
return iface
开发者ID:balamuruhans,项目名称:tp-libvirt,代码行数:24,代码来源:pcibridge.py
示例9: generate_container_xml
def generate_container_xml():
"""
Generate container xml
"""
vmxml = vm_xml.VMXML(dom_type)
vmxml.vm_name = vm_name
vmxml.max_mem = max_mem
vmxml.current_mem = current_mem
vmxml.vcpu = vcpu
# Generate os
vm_os = vm_xml.VMOSXML()
vm_os.type = os_type
vm_os.arch = os_arch
vm_os.init = os_init
vmxml.os = vm_os
# Generate emulator
emulator = Emulator()
emulator.path = emulator_path
# Generate console
console = Console()
filesystem = Filesystem()
filesystem.accessmode = fs_accessmode
filesystem.source = {'dir': install_root}
filesystem.target = {'dir': fs_target}
# Add emulator and console in devices
devices = vm_xml.VMXMLDevices()
devices.append(emulator)
devices.append(console)
devices.append(filesystem)
# Add network device
network = Interface(type_name=interface_type)
network.mac_address = utils_net.generate_mac_address_simple()
network.source = {interface_type: net_name}
devices.append(network)
vmxml.set_devices(devices)
return vmxml
开发者ID:CongLi,项目名称:tp-libvirt,代码行数:36,代码来源:lxc_life_cycle.py
示例10: run
#.........这里部分代码省略.........
net_mac = net_lease['MAC address']
net_ip = net_lease['IP address'][:-3]
if vm_xml.VMXML.get_iface_by_mac(vm_name, net_mac):
find_mac = True
logging.debug("Find '%s' in domain XML", net_mac)
else:
logging.debug("Not find '%s' in domain XML", net_mac)
continue
iface_ip = get_ip_by_mac(net_mac)
if iface_ip and iface_ip != net_ip:
test.fail("Address '%s' is not expected" % iface_ip)
if expected_find and not find_mac:
test.fail("No matched MAC address")
vmxml = vm_xml.VMXML.new_from_inactive_dumpxml(vm_name)
vmxml_backup = vmxml.copy()
if vm.is_alive():
vm.destroy(gracefully=False)
login_nic_index = 0
new_nic_index = 0
# Cleanup dirty dnsmaq, firstly get all network,and destroy all networks except
# default
net_state = virsh.net_state_dict(only_names=True)
logging.debug("current networks: %s, destroy and undefine networks "
"except default!", net_state)
for net in net_state:
if net != "default":
virsh.net_destroy(net)
virsh.net_undefine(net)
cmd = "ps aux|grep dnsmasq|grep -v grep | grep -v default | awk '{print $2}'"
pid_list = results_stdout_52lts(process.run(cmd, shell=True)).strip().splitlines()
logging.debug(pid_list)
for pid in pid_list:
utils_misc.safe_kill(pid, signal.SIGKILL)
# Create new network
if prepare_net:
create_network()
nets = virsh.net_state_dict()
if net_name not in list(nets.keys()) and not status_error:
test.error("Not find network '%s'" % net_name)
expected_find = False
try:
result = virsh.net_dhcp_leases(net_name,
mac=nic_mac,
options=net_option,
debug=True,
ignore_status=True)
utlv.check_exit_status(result, status_error)
lease = get_net_dhcp_leases(result.stdout.strip())
check_net_lease(lease, expected_find)
if not status_error:
iface_mac = utils_net.generate_mac_address_simple()
if filter_by_mac:
nic_mac = iface_mac
op = "--type network --model virtio --source %s --mac %s" \
% (net_name, iface_mac)
nic_params = {'mac': iface_mac, 'nettype': 'bridge',
'ip_version': 'ipv4'}
login_timeout = 120
if not hotplug_iface:
op += " --config"
virsh.attach_interface(vm_name, option=op, debug=True,
ignore_status=False)
vm.add_nic(**nic_params)
vm.start()
new_nic_index = vm.get_nic_index_by_mac(iface_mac)
if new_nic_index > 0:
login_nic_index = new_nic_index
else:
vm.start()
# wait for VM start before hotplug interface
vm.wait_for_serial_login()
virsh.attach_interface(vm_name, option=op, debug=True,
ignore_status=False)
vm.add_nic(**nic_params)
# As VM already started, so the login timeout could be shortened
login_timeout = 10
new_interface_ip = get_ip_by_mac(iface_mac, try_dhclint=True,
timeout=login_timeout)
# Allocate IP address for the new interface may fail, so only
# check the result if get new IP address
if new_interface_ip:
expected_find = True
result = virsh.net_dhcp_leases(net_name, mac=nic_mac,
debug=False, ignore_status=True)
utlv.check_exit_status(result, status_error)
lease = get_net_dhcp_leases(result.stdout.strip())
check_net_lease(lease, expected_find)
else:
if expect_msg:
utlv.check_result(result, expect_msg.split(';'))
finally:
# Delete the new attached interface
if new_nic_index > 0:
vm.del_nic(new_nic_index)
if vm.is_alive():
vm.destroy(gracefully=False)
vmxml_backup.sync()
if prepare_net:
virsh.net_destroy(net_name)
开发者ID:nasastry,项目名称:tp-libvirt,代码行数:101,代码来源:virsh_net_dhcp_leases.py
示例11: run_sr_iov_hotplug
#.........这里部分代码省略.........
if not utils_misc.wait_for(_new_shown, test_timeout, secs, 3):
raise error.TestFail("No new device shown in output of command "
"executed inside the guest: %s" %
reference_cmd)
if not utils_misc.wait_for(_find_pci, test_timeout, 3, 3):
raise error.TestFail("New add sr-iov device not found in guest. "
"Command was: %s" % find_pci_cmd)
# Test the newly added device
try:
session.cmd(params["pci_test_cmd"] % (pci_num + 1))
except aexpect.ShellError, e:
raise error.TestFail("Check for sr-iov device failed after PCI "
"hotplug. Output: %r" % e.output)
except Exception:
pci_del(pci_num, ignore_failure=True)
raise
# Hot delete a pci device
def pci_del(pci_num, ignore_failure=False):
def _device_removed():
after_del = vm.monitor.info("pci")
return after_del != before_del
before_del = vm.monitor.info("pci")
if cmd_type == "pci_add":
slot_id = "0" + pci_info[pci_num][1].split(",")[2].split()[1]
cmd = "pci_del pci_addr=%s" % slot_id
vm.monitor.send_args_cmd(cmd, convert=False)
elif cmd_type == "device_add":
cmd = "device_del id=%s" % pci_info[pci_num][0]
vm.monitor.send_args_cmd(cmd)
if (not utils_misc.wait_for(_device_removed, test_timeout, 0, 1)
and not ignore_failure):
raise error.TestFail("Failed to hot remove PCI device: %s. "
"Monitor command: %s" %
(pci_model, cmd))
vm = env.get_vm(params["main_vm"])
vm.verify_alive()
timeout = int(params.get("login_timeout", 360))
session = vm.wait_for_login(timeout=timeout)
test_timeout = int(params.get("test_timeout", 360))
# Test if it is nic or block
pci_num_range = int(params.get("pci_num", 1))
rp_times = int(params.get("repeat_times", 1))
pci_model = params.get("pci_model", "pci-assign")
# Need udpate match_string if you use a card other than 82576
match_string = params.get("match_string", "82576")
devices = []
device_type = params.get("hotplug_device_type", "vf")
for i in xrange(pci_num_range):
device = {}
device["type"] = device_type
device['mac'] = utils_net.generate_mac_address_simple()
if params.get("device_name"):
device["name"] = params.get("device_name")
devices.append(device)
if vm.pci_assignable is not None:
pa_pci_ids = vm.pci_assignable.request_devs(devices)
# Modprobe the module if specified in config file
module = params.get("modprobe_module")
if module:
error.context("modprobe the module %s" % module, logging.info)
session.cmd("modprobe %s" % module)
# Probe qemu to verify what is the supported syntax for PCI hotplug
if vm.monitor.protocol == 'qmp':
cmd_o = vm.monitor.info("commands")
else:
cmd_o = vm.monitor.send_args_cmd("help")
cmd_type = utils_test.find_substring(str(cmd_o), "device_add", "pci_add")
if not cmd_o:
raise error.TestError("Unknow version of qemu")
local_functions = locals()
for j in range(rp_times):
# pci_info is a list of list.
# each element 'i' has 4 members:
# pci_info[i][0] == device id, only used for device_add
# pci_info[i][1] == output of device add command
pci_info = []
for pci_num in xrange(pci_num_range):
msg = "Start hot-adding %sth pci device, repeat %d" % (pci_num + 1,
j + 1)
error.context(msg, logging.info)
add_device(pci_num)
for pci_num in xrange(pci_num_range):
msg = "start hot-deleting %sth pci device repeat %d" % (pci_num + 1,
j + 1)
error.context(msg, logging.info)
pci_del(-(pci_num + 1))
开发者ID:FT4VT,项目名称:FT4VM-L1_test,代码行数:101,代码来源:sr_iov_hotplug.py
示例12: run_virsh_attach_detach_interface
def run_virsh_attach_detach_interface(test, params, env):
"""
Test virsh {at|de}tach-interface command.
1) Prepare test environment and its parameters
2) Attach the required interface
3) According test type(only attach or both attach and detach):
a.Go on to test detach(if attaching is correct)
b.Return GOOD or raise TestFail(if attaching is wrong)
4) Check if attached interface is correct:
a.Try to catch it in vm's XML file
b.Try to catch it in vm
5) Detach the attached interface
6) Check result
"""
vm_name = params.get("main_vm")
vm = env.get_vm(vm_name)
# Test parameters
uri = libvirt_vm.normalize_connect_uri(params.get("connect_uri",
"default"))
vm_ref = params.get("at_detach_iface_vm_ref", "domname")
options_suffix = params.get("at_detach_iface_options_suffix", "")
status_error = "yes" == params.get("status_error", "no")
start_vm = params.get("start_vm")
# Should attach must be pass for detach test.
correct_attach = "yes" == params.get("correct_attach", "no")
# Interface specific attributes.
iface_type = params.get("at_detach_iface_type", "network")
iface_source = params.get("at_detach_iface_source", "default")
iface_mac = params.get("at_detach_iface_mac", "created")
virsh_dargs = {'ignore_status': True, 'uri': uri}
# Get a bridge name for test if iface_type is bridge.
# If there is no bridge other than virbr0, raise TestNAError
if iface_type == "bridge":
host_bridge = utils_net.Bridge()
bridge_list = host_bridge.list_br()
try:
bridge_list.remove("virbr0")
except AttributeError:
pass # If no virbr0, just pass is ok
logging.debug("Useful bridges:%s", bridge_list)
# just choosing one bridge on host.
if len(bridge_list):
iface_source = bridge_list[0]
else:
raise error.TestNAError("No useful bridge on host "
"other than 'virbr0'.")
dom_uuid = vm.get_uuid()
dom_id = vm.get_id()
# To confirm vm's state
if start_vm == "no" and vm.is_alive():
vm.destroy()
# Test both detach and attach, So collect info
# both of them for result check.
# When something wrong with interface, set it to 1
fail_flag = 0
result_info = []
# Set attach-interface domain
if vm_ref == "domname":
vm_ref = vm_name
elif vm_ref == "domid":
vm_ref = dom_id
elif vm_ref == "domuuid":
vm_ref = dom_uuid
elif vm_ref == "hexdomid" and dom_id is not None:
vm_ref = hex(int(dom_id))
# Get a mac address if iface_mac is 'created'.
if iface_mac == "created" or correct_attach:
iface_mac = utils_net.generate_mac_address_simple()
# Set attach-interface options and Start attach-interface test
if correct_attach:
options = set_options("network", "default", iface_mac, "", "attach")
attach_result = virsh.attach_interface(vm_name, options,
**virsh_dargs)
else:
options = set_options(iface_type, iface_source, iface_mac,
options_suffix, "attach")
attach_result = virsh.attach_interface(vm_ref, options, **virsh_dargs)
attach_status = attach_result.exit_status
logging.debug(attach_result)
# If attach interface failed.
if attach_status:
if not status_error:
fail_flag = 1
result_info.append("Attach Failed: %s" % attach_result)
elif status_error:
# Here we just use it to exit, do not mean test failed
fail_flag = 1
# If attach interface succeeded.
#.........这里部分代码省略.........
开发者ID:Antique,项目名称:virt-test,代码行数:101,代码来源:virsh_attach_detach_interface.py
示例13: run
def run(test, params, env):
"""
SR-IOV devices sanity test:
1) Bring up VFs by following instructions How To in Setup.
2) Configure all VFs in host.
3) Check whether all VFs get ip in host.
4) Unbind PFs/VFs from host kernel driver to sr-iov driver.
5) Bind PFs/VFs back to host kernel driver.
6) Repeat step 4, 5.
7) Try to boot up guest(s) with VF(s).
:param test: QEMU test object
:param params: Dictionary with the test parameters
:param env: Dictionary with test environment.
"""
device_driver = params.get("device_driver", "pci-assign")
repeat_time = int(params.get("bind_repeat_time", 1))
pci_assignable = test_setup.PciAssignable(
driver=params.get("driver"),
driver_option=params.get("driver_option"),
host_set_flag=1,
kvm_params=params.get("kvm_default"),
vf_filter_re=params.get("vf_filter_re"),
pf_filter_re=params.get("pf_filter_re"),
device_driver=device_driver)
devices = []
device_type = params.get("device_type", "vf")
if device_type == "vf":
device_num = pci_assignable.get_vfs_count()
if device_num == 0:
msg = " No VF device found even after running SR-IOV setup"
raise error.TestFail(msg)
elif device_type == "pf":
device_num = len(pci_assignable.get_pf_vf_info())
else:
msg = "Unsupport device type '%s'." % device_type
msg += " Please set device_type to 'vf' or 'pf'."
raise error.TestError(msg)
for i in xrange(device_num):
device = {}
device["type"] = device_type
if device_type == "vf":
device['mac'] = utils_net.generate_mac_address_simple()
if params.get("device_name"):
device["name"] = params.get("device_name")
devices.append(device)
pci_assignable.devices = devices
vf_pci_id = []
pf_vf_dict = pci_assignable.get_pf_vf_info()
for pf_dict in pf_vf_dict:
vf_pci_id.extend(pf_dict["vf_ids"])
ethname_dict = []
ips = {}
msg = "Configure all VFs in host."
error.context(msg, logging.info)
for pci_id in vf_pci_id:
cmd = "ls /sys/bus/pci/devices/%s/net/" % pci_id
ethname = utils.system_output(cmd).strip()
ethname_dict.append(ethname)
network_script = os.path.join("/etc/sysconfig/network-scripts",
"ifcfg-%s" % ethname)
if not os.path.exists(network_script):
error.context("Create %s file." % network_script, logging.info)
txt = "DEVICE=%s\nONBOOT=yes\nBOOTPROTO=dhcp\n" % ethname
file(network_script, "w").write(txt)
msg = "Check whether VFs could get ip in host."
error.context(msg, logging.info)
for ethname in ethname_dict:
ifup_down_interface(ethname)
_ip = check_network_interface_ip(ethname)
if not _ip:
msg = "Interface '%s' could not get IP." % ethname
logging.error(msg)
else:
ips[ethname] = _ip
logging.info("Interface '%s' get IP '%s'", ethname, _ip)
for i in xrange(repeat_time):
msg = "Bind/unbind device from host. Repeat %s/%s" % (i + 1,
repeat_time)
error.context(msg, logging.info)
bind_device_num = random.randint(1, device_num)
pci_assignable.request_devs(devices[:bind_device_num])
logging.info("Sleep 3s before releasing vf to host.")
time.sleep(3)
pci_assignable.release_devs()
logging.info("Sleep 3s after releasing vf to host.")
time.sleep(3)
if device_type == "vf":
post_device_num = pci_assignable.get_vfs_count()
else:
post_device_num = len(pci_assignable.get_pf_vf_info())
if post_device_num != device_num:
#.........这里部分代码省略.........
开发者ID:CongLi,项目名称:tp-qemu,代码行数:101,代码来源:sr_iov_sanity.py
示例14: run
#.........这里部分代码省略.........
libvirtd = utils_libvirtd.Libvirtd()
# Check virsh command option
check_cmds = []
sep_options = attach_option.split()
logging.debug("sep_options: %s" % sep_options)
for sep_option in sep_options:
if attach_device and sep_option:
check_cmds.append(('attach-device', sep_option))
if attach_iface and sep_option:
check_cmds.append(('attach-interface', sep_option))
if (detach_device or stress_test_detach_device) and sep_option:
check_cmds.append(('detach-device', sep_option))
if stress_test_detach_interface and sep_option:
check_cmds.append(('detach-device', sep_option))
for cmd, option in check_cmds:
libvirt.virsh_cmd_has_option(cmd, option)
try:
try:
# Attach an interface when vm is running
iface_list = []
err_msgs = ("No more available PCI slots",
"No more available PCI addresses")
if not start_vm:
virsh.destroy(vm_name)
for i in range(int(iface_num)):
if attach_device:
logging.info("Try to attach device loop %s" % i)
if iface_mac:
mac = iface_mac
else:
mac = utils_net.generate_mac_address_simple()
iface_xml_obj = create_iface_xml(mac)
iface_xml_obj.xmltreefile.write()
ret = virsh.attach_device(vm_name, iface_xml_obj.xml,
flagstr=attach_option,
ignore_status=True,
debug=True)
elif attach_iface:
logging.info("Try to attach interface loop %s" % i)
mac = utils_net.generate_mac_address_simple()
options = ("%s %s --model %s --mac %s %s" %
(iface_type, iface_source['network'],
iface_model, mac, attach_option))
ret = virsh.attach_interface(vm_name, options,
ignore_status=True)
if ret.exit_status:
if any([msg in ret.stderr for msg in err_msgs]):
logging.debug("No more pci slots, can't attach more devices")
break
elif (ret.stderr.count("doesn't support option %s" % attach_option)):
test.cancel(ret.stderr)
elif err_msgs1 in ret.stderr:
logging.debug("option %s is not supported when domain running is %s" % (attach_option, vm.is_alive()))
if start_vm or ("--live" not in sep_options and attach_option):
test.fail("return not supported, but it is unexpected")
elif err_msgs2 in ret.stderr:
logging.debug("options %s are mutually exclusive" % attach_option)
if not ("--current" in sep_options and len(sep_options) > 1):
test.fail("return mutualy exclusive, but it is unexpected")
elif err_msg_rom in ret.stderr:
logging.debug("Attach failed with expect err msg: %s" % err_msg_rom)
else:
test.fail("Failed to attach-interface: %s" % ret.stderr.strip())
开发者ID:nasastry,项目名称:tp-libvirt,代码行数:67,代码来源:iface_hotplug.py
示例15: run
#.........这里部分代码省略.........
pass
if not guestmemory:
# assign default memory
guestmemory = default_mem
# Set the current and max memory params
vmxml.current_mem_unit = memunit
vmxml.max_mem_unit = memunit
vmxml.current_mem = int(guestmemory)
vmxml.max_mem = int(guestmemory)
vmxml.sync()
# Set vcpu and topology
libvirt_xml.VMXML.set_vm_vcpus(vm_name, max_vcpu, current_vcpu,
vm_sockets, vm_cores, vm_threads)
vmxml = libvirt_xml.VMXML.new_from_inactive_dumpxml(vm_name)
# Set vnc display as needed
graphics = vmxml.get_device_class('graphics')()
if graphic:
if not vmxml.get_graphics_devices("vnc"):
graphics.add_graphic(vm_name, graphic="vnc")
else:
if vmxml.get_graphics_devices("vnc"):
graphics.del_graphic(vm_name)
vmxml = libvirt_xml.VMXML.new_from_inactive_dumpxml(vm_name)
network_str = None
disk_str = None
# Set network devices
if max_network:
network_str = "ip link|grep ^[1-9]|wc -l"
for idx in range(num_network):
network = Interface(type_name="bridge")
network.mac_address = utils_net.generate_mac_address_simple()
network.source = {"bridge": netdst}
vmxml.add_device(network)
# Set disk devices
if max_disk:
for idx in range(num_disk):
disk_str = "lsblk|grep ^[s,v]|grep 1G|wc -l"
disk = Disk()
disk_path = os.path.join(data_dir.get_data_dir(), "images", "%s.qcow2" % idx)
if "scsi" in drive_format:
drive_format = "scsi"
disk_target = "sd%s" % letters[(idx % 51)+1]
else:
drive_format = "virtio"
disk_target = "vd%s" % letters[(idx % 51)+1]
disk_source = libvirt.create_local_disk("file", disk_path, '1', "qcow2")
disk.device = "disk"
disk.source = disk.new_disk_source(**{"attrs": {'file': disk_source}})
disk.target = {"dev": disk_target, "bus": drive_format}
disk.driver = {"name": "qemu", 'type': disk_format}
vmxml.add_device(disk)
vmxml.sync()
# Start VM
logging.debug("VM XML: \n%s", vmxml)
try:
vm.start()
except virt_vm.VMStartError, detail:
for msg in failures.items():
if msg[0] in detail:
test.cancel("%s", msg[1])
test.fail("%s" % detail)
# Check the memory and vcpu inside guest
memtotal = vm.get_totalmem_sys()
cpucount = vm.get_cpu_count()
session = vm.wait_for_login()
if network_str:
guestnetworks = int(session.cmd_output(network_str))
logging.debug("guestnet: %d", guestnetworks)
if (guestnetworks - 2) != num_network:
failed = True
logging.error("mismatch in guest network devices: \n"
"Expected: %d\nActual: %d", num_network,
guestnetworks)
if disk_str:
guestdisks = int(session.cmd_output(disk_str))
logging.debug("guestdisk: %d", guestdisks)
if guestdisks != num_disk:
failed = True
logging.error("mismatch in guest disk devices: \n"
"Expected: %d\nActual: %s", num_disk, guestdisks)
session.close()
guestmem = utils_misc.normalize_data_size("%s G" % guestmemory)
# TODO:512 MB threshold deviation value, need to normalize
if int(float(guestmem) - memtotal) > 512:
failed = True
logging.error("mismatch in guest memory: \nExpected: "
"%s\nActual: %s", float(guestmem), memtotal)
if cpucount != current_vcpu:
failed = True
logging.error("mismatch in guest vcpu:\nExpected: %d\nActual: "
"%d", current_vcpu, cpucount)
if failed:
test.fail("Consult previous failures")
开发者ID:lento-sun,项目名称:tp-libvirt,代码行数:101,代码来源:limit.py
示例16: run
#.........这里部分代码省略.........
logging.info("Starting %s..." % vm_name)
if vm.is_dead():
vm.start()
vm.wait_for_login().close()
elif pre_vm_state == "shutoff":
logging.info("Shuting down %s..." % vm_name)
if vm.is_alive():
vm.destroy(gracefully=False)
elif pre_vm_state == "paused":
if (rhel6_host and at_options_suffix == "--config" and
dt_options_suffix == ""):
raise exceptions.TestSkipError("For bug921407, "
"won't fix on rhel6 host")
logging.info("Pausing %s..." % vm_name)
if vm.is_dead():
vm.start()
vm.wait_for_login().close()
if not vm.pause():
raise exceptions.TestSkipError("Cann't pause the domain")
elif pre_vm_state == "transient":
logging.info("Creating %s..." % vm_name)
vm.undefine()
if virsh.create(backup_xml.xml,
**virsh_dargs).exit_status:
backup_xml.define()
raise exceptions.TestSkipError("Cann't create the domain")
dom_uuid = vm.get_uuid()
dom_id = vm.get_id()
# Set attach-interface domain
if vm_ref == "domname":
vm_ref = vm_name
elif vm_ref == "domid":
vm_ref = dom_id
elif vm_ref == "domuuid":
vm_ref = dom_uuid
elif vm_ref == "hexdomid" and dom_id is not None:
vm_ref = hex(int(dom_id))
# Get a mac address if iface_mac is 'created'.
if iface_mac == "created":
iface_mac = utils_net.generate_mac_address_simple()
try:
# Set attach-interface options and
# start attach-interface test
options = set_options(iface_type, iface_source,
iface_mac, at_options_suffix,
"attach")
ret = virsh.attach_interface(vm_name, options,
**virsh_dargs)
libvirt.check_exit_status(ret, at_status_error)
# Check if the command take effect in vm
# or config file.
if vm.is_paused():
vm.resume()
vm.wait_for_login().close()
#Sleep a while for vm is stable
time.sleep(3)
if not ret.exit_status:
check_result(vm_name, iface_source,
iface_type, iface_mac,
at_options_suffix, pre_vm_state)
# Set detach-interface options
options = set_options(iface_type, None, iface_mac,
dt_options_suffix, "detach")
# Sleep for a while
time.sleep(10)
# Start detach-interface test
if pre_vm_state == "paused":
if not vm.pause():
raise exceptions.TestFail("Cann't pause the domain")
ret = virsh.detach_interface(vm_ref, options,
**virsh_dargs)
if rhel6_host and pre_vm_state in ['paused', 'running']:
if (at_options_suffix == "--config" and
dt_options_suffix == "--config"):
dt_status_error = True
libvirt.check_exit_status(ret, dt_status_error)
# Check if the command take effect
# in vm or config file.
if vm.is_paused():
vm.resume()
vm.wait_for_login().close()
#Sleep a while for vm is stable
time.sleep(10)
if not ret.exit_status:
check_result(vm_name, iface_source,
iface_type, iface_mac,
dt_options_suffix,
pre_vm_state, False)
finally:
# Restore the vm
if vm.is_alive():
vm.destroy(gracefully=False, free_mac_addresses=False)
backup_xml.sync()
开发者ID:lento-sun,项目名称:tp-libvirt,代码行数:101,代码来源:virsh_attach_detach_interface_matrix.py
示例17: run
def run(test, params, env):
"""
QEMU 'multi macvtap devices' test
1) Create and up multi macvtap devices in setting mode.
2) change the limitations of fd to 10240 in host.
3) Boot multi guest with macvtap and at least one guest use fd whick bigger
than 1024.
4) Ping from guests to an external host for 100 counts.
5) Shutdown all guests.
6) Delete all macvtap interfaces.
:param test: QEMU test object.
:param params: Dictionary with the test parameters.
:param env: Dictionary with test environment.
"""
macvtap_num = int(params.get("macvtap_num", "5000"))
macvtap_mode = params.get("macvtap_mode", "vepa")
timeout = int(params.get("login_timeout", 360))
ping_count = int(params.get("ping_count", 100))
netdst = params.get("netdst")
macvtap_ifnames = []
default_host = params.get("default_ext_host")
ext_host_get_cmd = params.get("ext_host_get_cmd")
try:
ext_host = utils.system_output(ext_host_get_cmd)
except error.CmdError:
logging.warn("Can't get specified host with cmd '%s',"
" Fallback to default host '%s'",
ext_host_get_cmd, default_host)
ext_host = default_host
try:
txt = "Create and up %s macvtap devices in setting mode." % macvtap_num
error.context(txt, logging.info)
for num in xrange(macvtap_num):
mac = utils_net.generate_mac_address_simple()
ifname = "%s_%s&
|
请发表评论