Move libvirt XML network device to jinja
This commit is contained in:
		
							parent
							
								
									ba20254888
								
							
						
					
					
						commit
						677a3e51f4
					
				| @ -271,27 +271,6 @@ class BaseVM(qubes.PropertyHolder): | ||||
|     # xml serialising methods | ||||
|     # | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def lvxml_net_dev(ip, mac, backend): | ||||
|         '''Return ``<interface>`` node for libvirt xml. | ||||
| 
 | ||||
|         This was previously _format_net_dev | ||||
| 
 | ||||
|         :param str ip: IP address of the frontend | ||||
|         :param str mac: MAC (Ethernet) address of the frontend | ||||
|         :param qubes.vm.qubesvm.QubesVM backend: Backend domain | ||||
|         :rtype: lxml.etree._Element | ||||
|         ''' | ||||
| 
 | ||||
|         interface = lxml.etree.Element('interface', type='ethernet') | ||||
|         interface.append(lxml.etree.Element('mac', address=mac)) | ||||
|         interface.append(lxml.etree.Element('ip', address=ip)) | ||||
|         interface.append(lxml.etree.Element('backenddomain', name=backend.name)) | ||||
|         interface.append(lxml.etree.Element('script', path="vif-route-qubes")) | ||||
| 
 | ||||
|         return interface | ||||
| 
 | ||||
| 
 | ||||
|     def create_config_file(self, file_path=None, prepare_dvm=False): | ||||
|         '''Create libvirt's XML domain config file | ||||
| 
 | ||||
|  | ||||
| @ -26,7 +26,6 @@ | ||||
| 
 | ||||
| import re | ||||
| 
 | ||||
| import lxml.etree | ||||
| import libvirt | ||||
| 
 | ||||
| import qubes | ||||
| @ -204,7 +203,6 @@ class NetVMMixin(qubes.events.Emitter): | ||||
|                     pass | ||||
| 
 | ||||
| 
 | ||||
|     # TODO maybe this should be other way: backend.devices['net'].attach(self) | ||||
|     def attach_network(self): | ||||
|         '''Attach network in this machine to it's netvm.''' | ||||
| 
 | ||||
| @ -217,8 +215,8 @@ class NetVMMixin(qubes.events.Emitter): | ||||
|             self.netvm.start() | ||||
| 
 | ||||
|         self.libvirt_domain.attachDevice( | ||||
|             lxml.etree.tostring(lxml.etree.ElementTree( | ||||
|                 self.lvxml_net_dev(self.ip, self.mac, self.netvm)))) | ||||
|             self.app.env.get_template('libvirt/devices/net.xml').render( | ||||
|                 vm=self)) | ||||
| 
 | ||||
| 
 | ||||
|     def detach_network(self): | ||||
| @ -228,9 +226,9 @@ class NetVMMixin(qubes.events.Emitter): | ||||
|             raise qubes.exc.QubesVMNotRunningError(self) | ||||
|         assert self.netvm is not None | ||||
| 
 | ||||
|         self.libvirt_domain.detachDevice( | ||||
|             lxml.etree.tostring(lxml.etree.ElementTree( | ||||
|                 self.lvxml_net_dev(self.ip, self.mac, self.netvm)))) | ||||
|         self.libvirt_domain.attachDevice( | ||||
|             self.app.env.get_template('libvirt/devices/net.xml').render( | ||||
|                 vm=self)) | ||||
| 
 | ||||
| 
 | ||||
|     def is_networked(self): | ||||
|  | ||||
| @ -339,6 +339,7 @@ fi | ||||
| %attr(2770,root,qubes) %dir /var/lib/qubes/vm-kernels | ||||
| /usr/share/qubes/templates/libvirt/xen.xml | ||||
| /usr/share/qubes/templates/libvirt/devices/pci.xml | ||||
| /usr/share/qubes/templates/libvirt/devices/net.xml | ||||
| /usr/lib/tmpfiles.d/qubes.conf | ||||
| /usr/lib/qubes/qubes-prepare-saved-domain.sh | ||||
| /usr/lib/qubes/qubes-update-dispvm-savefile-with-progress.sh | ||||
|  | ||||
							
								
								
									
										13
									
								
								templates/libvirt/devices/net.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								templates/libvirt/devices/net.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <interface type="ethernet"> | ||||
|     <mac address="{{ vm.mac }}" /> | ||||
|     <ip address=" | ||||
|         {%- if prepare_dvm -%} | ||||
|             %IP% | ||||
|         {%- else -%} | ||||
|             {{ vm.ip }} | ||||
|         {%- endif %}" /> | ||||
|     <backenddomain name="{{ vm.netvm.name }}" /> | ||||
|     <script path="vif-route-qubes"></script> | ||||
| </interface> | ||||
| 
 | ||||
| {# vim : set ft=jinja ts=4 sts=4 sw=4 et : #} | ||||
| @ -90,17 +90,7 @@ | ||||
|         {% endfor %} | ||||
| 
 | ||||
|         {% if vm.netvm %} | ||||
|             <interface type="ethernet"> | ||||
|                 <mac address="{{ vm.mac }}" /> | ||||
|                 <ip address=" | ||||
|                     {%- if prepare_dvm -%} | ||||
|                         %IP% | ||||
|                     {%- else -%} | ||||
|                         {{ vm.ip }} | ||||
|                     {%- endif %}" /> | ||||
|                 <backenddomain name="{{ vm.netvm.name }}" /> | ||||
|                 <script path="vif-route-qubes"></script> | ||||
|             </interface> | ||||
|             {% include 'libvirt/devices/net.xml' %} | ||||
|         {% endif %} | ||||
| 
 | ||||
|         {% for device in vm.devices.pci %} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Wojtek Porczyk
						Wojtek Porczyk