Correct issues if no interfaces/disks are present

This commit is contained in:
Joshua Boniface 2020-11-10 16:06:43 -05:00
parent 9053edacd8
commit a38e65be47
1 changed files with 17 additions and 4 deletions

View File

@ -539,7 +539,10 @@ def vm_networks_add(config, vm, network, macaddr, model, restart):
device_xml = fromstring(device_string) device_xml = fromstring(device_string)
last_interface = None last_interface = None
for interface in parsed_xml.devices.find('interface'): all_interfaces = parsed_xml.devices.find('interface')
if all_interfaces is None:
all_interfaces = []
for interface in all_interfaces:
last_interface = re.match(r'[vm]*br([0-9a-z]+)', interface.source.attrib.get('bridge')).group(1) last_interface = re.match(r'[vm]*br([0-9a-z]+)', interface.source.attrib.get('bridge')).group(1)
if last_interface == network: if last_interface == network:
return False, 'Network {} is already configured for VM {}.'.format(network, vm) return False, 'Network {} is already configured for VM {}.'.format(network, vm)
@ -547,6 +550,8 @@ def vm_networks_add(config, vm, network, macaddr, model, restart):
for interface in parsed_xml.devices.find('interface'): for interface in parsed_xml.devices.find('interface'):
if last_interface == re.match(r'[vm]*br([0-9a-z]+)', interface.source.attrib.get('bridge')).group(1): if last_interface == re.match(r'[vm]*br([0-9a-z]+)', interface.source.attrib.get('bridge')).group(1):
interface.addnext(device_xml) interface.addnext(device_xml)
else:
parsed_xml.devices.find('emulator').addprevious(device_xml)
try: try:
new_xml = tostring(parsed_xml, pretty_print=True) new_xml = tostring(parsed_xml, pretty_print=True)
@ -732,7 +737,10 @@ def vm_volumes_add(config, vm, volume, disk_id, bus, disk_type, restart):
last_disk = None last_disk = None
id_list = list() id_list = list()
for disk in parsed_xml.devices.find('disk'): all_disks = parsed_xml.devices.find('disk')
if all_disks is None:
all_disks = []
for disk in all_disks:
id_list.append(disk.target.attrib.get('dev')) id_list.append(disk.target.attrib.get('dev'))
if disk.source.attrib.get('protocol') == disk_type: if disk.source.attrib.get('protocol') == disk_type:
if disk_type == 'rbd': if disk_type == 'rbd':
@ -782,9 +790,14 @@ def vm_volumes_add(config, vm, volume, disk_id, bus, disk_type, restart):
elif disk_type == 'file': elif disk_type == 'file':
new_disk_details.source.set('file', volume) new_disk_details.source.set('file', volume)
for disk in parsed_xml.devices.find('disk'): all_disks = parsed_xml.devices.find('disk')
if all_disks is None:
all_disks = []
for disk in all_disks:
last_disk = disk last_disk = disk
last_disk.addnext(new_disk_details)
if last_disk is None:
parsed_xml.devices.find('emulator').addprevious(new_disk_details)
try: try:
new_xml = tostring(parsed_xml, pretty_print=True) new_xml = tostring(parsed_xml, pretty_print=True)