parent
4585f2b503
commit
b8145595a9
@ -45,6 +45,25 @@ def _setter_mac(self, prop, value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def _default_ip(self):
|
||||||
|
if not self.is_networked():
|
||||||
|
return None
|
||||||
|
if self.netvm is not None:
|
||||||
|
return self.netvm.get_ip_for_vm(self) # pylint: disable=no-member
|
||||||
|
else:
|
||||||
|
return self.get_ip_for_vm(self)
|
||||||
|
|
||||||
|
|
||||||
|
def _setter_ip(self, prop, value):
|
||||||
|
# pylint: disable=unused-argument
|
||||||
|
if not isinstance(value, basestring):
|
||||||
|
raise ValueError('IP address must be a string')
|
||||||
|
value = value.lower()
|
||||||
|
if re.match(r"^([0-9]{1,3}.){3}[0-9]{1,3}$", value) is None:
|
||||||
|
raise ValueError('Invalid IP address value')
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
class NetVMMixin(qubes.events.Emitter):
|
class NetVMMixin(qubes.events.Emitter):
|
||||||
''' Mixin containing network functionality '''
|
''' Mixin containing network functionality '''
|
||||||
mac = qubes.property('mac', type=str,
|
mac = qubes.property('mac', type=str,
|
||||||
@ -53,6 +72,12 @@ class NetVMMixin(qubes.events.Emitter):
|
|||||||
ls_width=17,
|
ls_width=17,
|
||||||
doc='MAC address of the NIC emulated inside VM')
|
doc='MAC address of the NIC emulated inside VM')
|
||||||
|
|
||||||
|
ip = qubes.property('ip', type=str,
|
||||||
|
default=_default_ip,
|
||||||
|
setter=_setter_ip,
|
||||||
|
ls_width=15,
|
||||||
|
doc='IP address of this domain.')
|
||||||
|
|
||||||
# CORE2: swallowed uses_default_netvm
|
# CORE2: swallowed uses_default_netvm
|
||||||
netvm = qubes.VMProperty('netvm', load_stage=4, allow_none=True,
|
netvm = qubes.VMProperty('netvm', load_stage=4, allow_none=True,
|
||||||
default=(lambda self: self.app.default_fw_netvm if self.provides_network
|
default=(lambda self: self.app.default_fw_netvm if self.provides_network
|
||||||
@ -74,16 +99,6 @@ class NetVMMixin(qubes.events.Emitter):
|
|||||||
# used in networked appvms or proxyvms (netvm is not None)
|
# used in networked appvms or proxyvms (netvm is not None)
|
||||||
#
|
#
|
||||||
|
|
||||||
@qubes.tools.qvm_ls.column(width=15)
|
|
||||||
@property
|
|
||||||
def ip(self):
|
|
||||||
'''IP address of this domain.'''
|
|
||||||
if not self.is_networked():
|
|
||||||
return None
|
|
||||||
if self.netvm is not None:
|
|
||||||
return self.netvm.get_ip_for_vm(self) # pylint: disable=no-member
|
|
||||||
else:
|
|
||||||
return self.get_ip_for_vm(self)
|
|
||||||
|
|
||||||
@qubes.tools.qvm_ls.column(width=15)
|
@qubes.tools.qvm_ls.column(width=15)
|
||||||
@property
|
@property
|
||||||
|
Loading…
Reference in New Issue
Block a user