Revision ce9abd26 snf-cyclades-app/synnefo/db/models.py
b/snf-cyclades-app/synnefo/db/models.py | ||
---|---|---|
155 | 155 |
"with backend: %s" % self) |
156 | 156 |
else: |
157 | 157 |
# ON_DELETE = SET NULL |
158 |
for vm in self.virtual_machines.all(): |
|
159 |
vm.backend = None |
|
160 |
vm.save() |
|
158 | 161 |
self.virtual_machines.all().backend = None |
159 | 162 |
# Remove BackendNetworks of this Backend. |
160 | 163 |
# Do not use networks.all().delete(), since delete() method of |
... | ... | |
168 | 171 |
if not self.pk: |
169 | 172 |
# Generate a unique index for the Backend |
170 | 173 |
indexes = Backend.objects.all().values_list('index', flat=True) |
171 |
first_free = [x for x in xrange(0, 16) if x not in indexes][0] |
|
172 |
self.index = first_free |
|
174 |
try: |
|
175 |
first_free = [x for x in xrange(0, 16) if x not in indexes][0] |
|
176 |
self.index = first_free |
|
177 |
except IndexError: |
|
178 |
raise Exception("Can not create more than 16 backends") |
|
173 | 179 |
|
174 | 180 |
|
175 | 181 |
# A backend job may be in one of the following possible states |
... | ... | |
520 | 526 |
|
521 | 527 |
backends = [backend] if backend else Backend.objects.all() |
522 | 528 |
for backend in backends: |
523 |
BackendNetwork.objects.create(backend=backend, network=self) |
|
529 |
if not BackendNetwork.objects.filter(backend=backend, network=self)\ |
|
530 |
.exists(): |
|
531 |
BackendNetwork.objects.create(backend=backend, network=self) |
|
524 | 532 |
|
525 | 533 |
def get_pool(self): |
526 | 534 |
if not self.pool_id: |
Also available in: Unified diff