dom0/qvm-network: allow to set persistent MAC for VM
This commit is contained in:
parent
5f87303b69
commit
7c9075d09b
@ -210,6 +210,7 @@ class QubesVm(object):
|
|||||||
uses_default_kernel = True,
|
uses_default_kernel = True,
|
||||||
kernelopts = "",
|
kernelopts = "",
|
||||||
uses_default_kernelopts = True,
|
uses_default_kernelopts = True,
|
||||||
|
mac = None,
|
||||||
services = None):
|
services = None):
|
||||||
|
|
||||||
|
|
||||||
@ -226,6 +227,8 @@ class QubesVm(object):
|
|||||||
if netvm_vm is not None:
|
if netvm_vm is not None:
|
||||||
netvm_vm.connected_vms[qid] = self
|
netvm_vm.connected_vms[qid] = self
|
||||||
|
|
||||||
|
self._mac = mac
|
||||||
|
|
||||||
# We use it in remove from disk to avoid removing rpm files (for templates)
|
# We use it in remove from disk to avoid removing rpm files (for templates)
|
||||||
self.installed_by_rpm = installed_by_rpm
|
self.installed_by_rpm = installed_by_rpm
|
||||||
|
|
||||||
@ -386,6 +389,17 @@ class QubesVm(object):
|
|||||||
return None
|
return None
|
||||||
return "vif{0}.+".format(self.xid)
|
return "vif{0}.+".format(self.xid)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def mac(self):
|
||||||
|
if self._mac is not None:
|
||||||
|
return self._mac
|
||||||
|
else:
|
||||||
|
return "00:16:3E:5E:6C:{qid:02X}".format(qid=self.qid)
|
||||||
|
|
||||||
|
@mac.setter
|
||||||
|
def mac(self, new_mac):
|
||||||
|
self._mac = new_mac
|
||||||
|
|
||||||
def is_updateable(self):
|
def is_updateable(self):
|
||||||
return self.updateable
|
return self.updateable
|
||||||
|
|
||||||
@ -804,7 +818,7 @@ class QubesVm(object):
|
|||||||
args['maxmem'] = str(self.maxmem)
|
args['maxmem'] = str(self.maxmem)
|
||||||
args['vcpus'] = str(self.vcpus)
|
args['vcpus'] = str(self.vcpus)
|
||||||
if self.netvm_vm is not None:
|
if self.netvm_vm is not None:
|
||||||
args['netdev'] = "'mac=00:16:3E:5E:6C:{qid:02X},script=/etc/xen/scripts/vif-route-qubes,ip={ip}".format(ip=self.ip, qid=self.qid)
|
args['netdev'] = "'mac={mac},script=/etc/xen/scripts/vif-route-qubes,ip={ip}".format(ip=self.ip, mac=self.mac)
|
||||||
if self.netvm_vm.qid != 0:
|
if self.netvm_vm.qid != 0:
|
||||||
args['netdev'] += ",backend={0}".format(self.netvm_vm.name)
|
args['netdev'] += ",backend={0}".format(self.netvm_vm.name)
|
||||||
args['netdev'] += "'"
|
args['netdev'] += "'"
|
||||||
@ -1392,6 +1406,8 @@ class QubesVm(object):
|
|||||||
'uses_default_netvm' ]:
|
'uses_default_netvm' ]:
|
||||||
if hasattr(self, prop):
|
if hasattr(self, prop):
|
||||||
attrs[prop] = str(self.__getattribute__(prop))
|
attrs[prop] = str(self.__getattribute__(prop))
|
||||||
|
if self._mac is not None:
|
||||||
|
attrs["mac"] = str(self._mac)
|
||||||
attrs["netvm_qid"] = str(self.netvm_vm.qid) if self.netvm_vm is not None else "none"
|
attrs["netvm_qid"] = str(self.netvm_vm.qid) if self.netvm_vm is not None else "none"
|
||||||
attrs["template_qid"] = str(self.template_vm.qid) if self.template_vm and not self.is_updateable() else "none"
|
attrs["template_qid"] = str(self.template_vm.qid) if self.template_vm and not self.is_updateable() else "none"
|
||||||
attrs["label"] = self.label.name
|
attrs["label"] = self.label.name
|
||||||
@ -2397,7 +2413,7 @@ class QubesVmCollection(dict):
|
|||||||
"installed_by_rpm", "updateable", "internal",
|
"installed_by_rpm", "updateable", "internal",
|
||||||
"uses_default_netvm", "label", "memory", "vcpus", "pcidevs",
|
"uses_default_netvm", "label", "memory", "vcpus", "pcidevs",
|
||||||
"maxmem", "kernel", "uses_default_kernel", "kernelopts", "uses_default_kernelopts",
|
"maxmem", "kernel", "uses_default_kernel", "kernelopts", "uses_default_kernelopts",
|
||||||
"services" )
|
"mac", "services" )
|
||||||
|
|
||||||
for attribute in common_attr_list:
|
for attribute in common_attr_list:
|
||||||
kwargs[attribute] = element.get(attribute)
|
kwargs[attribute] = element.get(attribute)
|
||||||
|
Loading…
Reference in New Issue
Block a user