Commit be7dc743 by Karsa Zoltán István

Merge branch 'hotcpu-add' into 'master'

Hotcpu add

See merge request !4
parents f9f78ee7 d2275786
......@@ -12,6 +12,7 @@ class VMInstance:
vm_type = None
os_boot = None
vcpu = None
vcpu_max = None
cpu_share = None
memory_max = None
network_list = list()
......@@ -22,7 +23,8 @@ class VMInstance:
def __init__(self,
name,
vcpu,
memory_max,
vcpu_max=None,
memory_max=None,
memory=None,
emulator='/usr/bin/kvm',
cpu_share=100,
......@@ -53,6 +55,9 @@ class VMInstance:
seclabel_type - libvirt security label type
seclabel_mode - libvirt security mode (selinux, apparmor)
'''
self.vcpu_max = vcpu_max
if not vcpu_max:
self.vcpu_max = vcpu
self.name = name
self.emulator = emulator
self.vcpu = vcpu
......@@ -98,9 +103,25 @@ class VMInstance:
xml_top.append(child)
# Basic virtual machine paramaters
ET.SubElement(xml_top, 'name').text = self.name
ET.SubElement(xml_top, 'vcpu').text = str(self.vcpu)
cpu = ET.SubElement(xml_top, 'cpu')
ET.SubElement(cpu, 'topology',
if self.vcpu < self.vcpu_max and self.vcpu_max != 0:
ET.SubElement(xml_top, 'vcpu', attrib={'current': str(self.vcpu)}).text = str(self.vcpu_max)
vcpus = ET.SubElement(xml_top, 'vcpus')
for i in range(0, self.vcpu):
ET.SubElement(vcpus, 'vcpu',
attrib={
'id': str(i),
'enabled': 'yes',
'hotpluggable': 'no'})
for i in range(self.vcpu, self.vcpu_max):
ET.SubElement(vcpus, 'vcpu',
attrib={
'id': str(i),
'enabled': 'no',
'hotpluggable': 'yes'})
else:
ET.SubElement(xml_top, 'vcpu').text = str(self.vcpu)
cpu = ET.SubElement(xml_top, 'cpu')
ET.SubElement(cpu, 'topology',
attrib={
'sockets': str(1),
'cores': str(self.vcpu),
......@@ -146,6 +167,18 @@ class VMInstance:
attrib={'mode': 'bind',
'path': '/var/lib/libvirt/serial/vio-%s'
% self.name})
virtio = ET.SubElement(devices,
'channel',
attrib={'type': 'unix'})
ET.SubElement(virtio,
'target',
attrib={'type': 'virtio', 'name': 'org.qemu.guest_agent.0', 'state': 'connected'})
ET.SubElement(virtio,
'source',
attrib={'mode': 'bind',
'path': '/var/lib/libvirt/qemu/f16x86_64.agent-%s'
% self.name})
# Console/graphics section
if self.graphics is not None:
ET.SubElement(devices,
......
......@@ -550,6 +550,21 @@ def migrate(name, host, live=False):
bandwidth=0)
# return _parse_info(domain.info())
@celery.task
@req_connection
@wrap_libvirtError
def hotplug_memset(name, memory):
"""Hotplug (live) memory set to max mem limit"""
domain = lookupByName(name)
domain.setMemory(int(memory))
@celery.task
@req_connection
@wrap_libvirtError
def hotplug_vcpuset(name, vcpu):
"""Hotplug (live) vcpu set to max vcpu limit"""
domain = lookupByName(name)
domain.setVcpus(int(vcpu))
@celery.task
@req_connection
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment