diff options
author | Josep Puigdemont <josep.puigdemont@enea.com> | 2016-05-20 10:05:11 +0200 |
---|---|---|
committer | Jonas Bjurel <jonas.bjurel@ericsson.com> | 2016-06-16 18:23:23 +0000 |
commit | b0670cfd013bf0ef4a1c1b3723fa3f5da6dd108d (patch) | |
tree | eb23c37f9f94ea38875e04d232cd066a8f5e0c37 | |
parent | b86d8e65f9a8a3e52a7f06f8ac9d32963c9df6d4 (diff) |
virtual_fuel: add XML tree as attribute of VirtualFuel
With this patch, the VM XML definition tree is an attribute of the
object, this way it can be used by all methods without having to re-read
the file.
Methods added:
update_vm_template_file: Flushes the contents of the in-memory XML
representation of the VM to the backing file.
Change-Id: I18d3f606b0c02cd589cb0f657599e8b03b0e817e
Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
-rw-r--r-- | deploy/environments/virtual_fuel.py | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/deploy/environments/virtual_fuel.py b/deploy/environments/virtual_fuel.py index f9f9f7ab9..7dc972025 100644 --- a/deploy/environments/virtual_fuel.py +++ b/deploy/environments/virtual_fuel.py @@ -54,14 +54,21 @@ class VirtualFuel(ExecutionEnvironment): self.dha.get_node_property( self.fuel_node_id, 'libvirtTemplate')) check_file_exists(self.vm_template) + with open(self.vm_template) as f: + self.vm_xml = etree.parse(f) + + self.temp_vm_file = '%s/%s' % (self.temp_dir, self.vm_name) + self.update_vm_template_file() def __del__(self): delete(self.temp_dir) - def set_vm_nic(self, temp_vm_file): - with open(temp_vm_file) as f: - vm_xml = etree.parse(f) - interfaces = vm_xml.xpath('/domain/devices/interface') + def update_vm_template_file(self): + with open(self.temp_vm_file, "wc") as f: + self.vm_xml.write(f, pretty_print=True, xml_declaration=True) + + def set_vm_nic(self): + interfaces = self.vm_xml.xpath('/domain/devices/interface') for interface in interfaces: interface.getparent().remove(interface) interface = etree.Element('interface') @@ -70,12 +77,12 @@ class VirtualFuel(ExecutionEnvironment): source.set('bridge', self.pxe_bridge) model = etree.SubElement(interface, 'model') model.set('type', 'virtio') - devices = vm_xml.xpath('/domain/devices') + devices = self.vm_xml.xpath('/domain/devices') if devices: device = devices[0] device.append(interface) - with open(temp_vm_file, 'w') as f: - vm_xml.write(f, pretty_print=True, xml_declaration=True) + + self.update_vm_template_file() def create_volume(self, pool, name, su, img_type='qcow2'): log('Creating image using Libvirt volumes in pool %s, name: %s' % |