Revision f96f60fd
b/snf-cyclades-app/synnefo/logic/allocators/default_allocator.py | ||
---|---|---|
33 | 33 |
|
34 | 34 |
from __future__ import division |
35 | 35 |
import logging |
36 |
from synnefo.api.util import backend_public_networks |
|
36 |
|
|
37 | 37 |
|
38 | 38 |
log = logging.getLogger(__name__) |
39 | 39 |
|
... | ... | |
68 | 68 |
|
69 | 69 |
|
70 | 70 |
def vm_fits_in_backend(backend, vm): |
71 |
return backend.dfree > vm['disk'] and backend.mfree > vm['ram'] and\ |
|
72 |
has_free_ip(backend) |
|
71 |
return backend.dfree > vm['disk'] and backend.mfree > vm['ram'] |
|
73 | 72 |
|
74 | 73 |
|
75 | 74 |
def backend_score(backend, flavor): |
... | ... | |
77 | 76 |
dratio = 1 - (backend.dfree / backend.dtotal) |
78 | 77 |
cratio = (backend.pinst_cnt + 1) / (backend.ctotal * 4) |
79 | 78 |
return 0.7 * (mratio + dratio) * 0.3 * cratio |
80 |
|
|
81 |
|
|
82 |
def has_free_ip(backend): |
|
83 |
"""Find if Backend has any free public IP.""" |
|
84 |
for network in backend_public_networks(backend): |
|
85 |
if not network.get_pool().empty(): |
|
86 |
return True |
|
87 |
return False |
b/snf-cyclades-app/synnefo/logic/backend_allocator.py | ||
---|---|---|
34 | 34 |
from synnefo import settings |
35 | 35 |
from synnefo.db.models import Backend |
36 | 36 |
from synnefo.logic.backend import update_resources |
37 |
from synnefo.api.util import backend_public_networks |
|
37 | 38 |
|
38 | 39 |
log = logging.getLogger(__name__) |
39 | 40 |
|
... | ... | |
88 | 89 |
"""Get available backends from db. |
89 | 90 |
|
90 | 91 |
""" |
91 |
return list(Backend.objects.select_for_update().filter(drained=False, |
|
92 |
offline=False)) |
|
92 |
backends = list(Backend.objects.select_for_update().filter(drained=False, |
|
93 |
offline=False)) |
|
94 |
return filter(lambda x: has_free_ip(x), backends) |
|
95 |
|
|
96 |
|
|
97 |
def has_free_ip(backend): |
|
98 |
"""Find if Backend has any free public IP.""" |
|
99 |
for network in backend_public_networks(backend): |
|
100 |
if not network.get_pool().empty(): |
|
101 |
return True |
|
102 |
return False |
|
93 | 103 |
|
94 | 104 |
|
95 | 105 |
def flavor_disk(flavor): |
Also available in: Unified diff