Revision b2d0830b snf-cyclades-app/synnefo/db/models.py
b/snf-cyclades-app/synnefo/db/models.py | ||
---|---|---|
517 | 517 |
default=None) |
518 | 518 |
drained = models.BooleanField("Drained", default=False, null=False) |
519 | 519 |
floating_ip_pool = models.BooleanField('Floating IP Pool', null=False, |
520 |
default=False) |
|
520 |
default=False)
|
|
521 | 521 |
pool = models.OneToOneField('IPPoolTable', related_name='network', |
522 |
default=lambda: IPPoolTable.objects.create(available_map='', |
|
523 |
reserved_map='', |
|
524 |
size=0), |
|
525 |
null=True) |
|
522 |
default=lambda: IPPoolTable.objects.create( |
|
523 |
available_map='', |
|
524 |
reserved_map='', |
|
525 |
size=0), |
|
526 |
null=True) |
|
526 | 527 |
serial = models.ForeignKey(QuotaHolderSerial, related_name='network', |
527 | 528 |
null=True) |
528 | 529 |
|
... | ... | |
551 | 552 |
def create_backend_network(self, backend=None): |
552 | 553 |
"""Create corresponding BackendNetwork entries.""" |
553 | 554 |
|
554 |
backends = [backend] if backend\ |
|
555 |
else Backend.objects.filter(offline=False)
|
|
555 |
backends = [backend] if backend else\
|
|
556 |
Backend.objects.filter(offline=False) |
|
556 | 557 |
for backend in backends: |
557 | 558 |
backend_exists =\ |
558 | 559 |
BackendNetwork.objects.filter(backend=backend, network=self)\ |
... | ... | |
560 | 561 |
if not backend_exists: |
561 | 562 |
BackendNetwork.objects.create(backend=backend, network=self) |
562 | 563 |
|
563 |
def get_pool(self): |
|
564 |
def get_pool(self, with_lock=True):
|
|
564 | 565 |
if not self.pool_id: |
565 | 566 |
self.pool = IPPoolTable.objects.create(available_map='', |
566 | 567 |
reserved_map='', |
567 | 568 |
size=0) |
568 | 569 |
self.save() |
569 |
return IPPoolTable.objects.select_for_update().get(id=self.pool_id)\ |
|
570 |
.pool |
|
570 |
objects = IPPoolTable.objects |
|
571 |
if with_lock: |
|
572 |
objects = objects.select_for_update() |
|
573 |
return objects.get(id=self.pool_id).pool |
|
571 | 574 |
|
572 | 575 |
def reserve_address(self, address): |
573 | 576 |
pool = self.get_pool() |
Also available in: Unified diff