slapformat: Check if we allow bridge before trying extraordinary mesures to get address

parent 73935be5
......@@ -179,7 +179,7 @@ class Computer(object):
def __getinitargs__(self):
return (self.reference, self.interface)
def getAddress(self):
def getAddress(self, no_bridge=False):
"""
Return a list of the interface address not attributed to any partition, (which
are therefore free for the computer itself).
......@@ -201,12 +201,16 @@ class Computer(object):
if address_dict['addr'] not in computer_partition_address_list:
return address_dict
if not no_bridge:
# all addresses on interface are for partition, so lets add new one
computer_tap = Tap('compdummy')
computer_tap.createWithOwner(User('root'), attach_to_tap=True)
self.interface.addTap(computer_tap)
return self.interface.addAddr()
# Can't find address
return False
def send(self, config):
"""
Send a marshalled dictionary of the computer object serialized via_getDict.
......@@ -976,7 +980,7 @@ def run(config):
computer.instance_root = config.instance_root
computer.software_root = config.software_root
config.logger.info('Updating computer')
address = computer.getAddress()
address = computer.getAddress(config.no_bridge)
computer.address = address['addr']
computer.netmask = address['netmask']
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment