Revision b4695420
b/snf-cyclades-app/synnefo/db/models.py | ||
---|---|---|
532 | 532 |
BackendNetwork.objects.create(backend=backend, network=self) |
533 | 533 |
|
534 | 534 |
def get_pool(self, with_lock=True): |
535 |
if not self.pool_id: |
|
536 |
self.pool = IPPoolTable.objects.create(available_map='', |
|
537 |
reserved_map='', |
|
538 |
size=0) |
|
539 |
self.save() |
|
535 |
try: |
|
536 |
subnet = self.subnets.get(ipversion=4, deleted=False) |
|
537 |
except Subnet.DoesNotExist: |
|
538 |
raise pools.EmptyPool |
|
539 |
try: |
|
540 |
pool = subnet.ip_pools.all()[0] |
|
541 |
except IndexError: |
|
542 |
pool = IPPoolTable.objects.create(available_map='', |
|
543 |
reserved_map='', |
|
544 |
size=0, |
|
545 |
subnet=subnet) |
|
540 | 546 |
objects = IPPoolTable.objects |
541 | 547 |
if with_lock: |
542 | 548 |
objects = objects.select_for_update() |
543 |
return objects.get(id=self.pool_id).pool
|
|
549 |
return objects.get(id=pool.id)
|
|
544 | 550 |
|
545 | 551 |
def reserve_address(self, address): |
546 | 552 |
pool = self.get_pool() |
b/snf-cyclades-app/synnefo/db/pools/__init__.py | ||
---|---|---|
248 | 248 |
class IPPool(PoolManager): |
249 | 249 |
def __init__(self, pool_table): |
250 | 250 |
do_init = False if pool_table.available_map else True |
251 |
network = pool_table.network
|
|
252 |
self.net = ipaddr.IPNetwork(network.subnet)
|
|
251 |
subnet = pool_table.subnet
|
|
252 |
self.net = ipaddr.IPNetwork(subnet.cidr)
|
|
253 | 253 |
if not pool_table.size: |
254 | 254 |
pool_table.size = self.net.numhosts |
255 | 255 |
super(IPPool, self).__init__(pool_table) |
256 |
gateway = network.gateway
|
|
256 |
gateway = subnet.gateway
|
|
257 | 257 |
self.gateway = gateway and ipaddr.IPAddress(gateway) or None |
258 | 258 |
if do_init: |
259 | 259 |
self._reserve(0, external=True) |
Also available in: Unified diff