Revision 710b1c43 snf-cyclades-app/synnefo/logic/backend_allocator.py

b/snf-cyclades-app/synnefo/logic/backend_allocator.py
31 31
import datetime
32 32
from django.utils import importlib
33 33

  
34
from synnefo.settings import (BACKEND_ALLOCATOR_MODULE, BACKEND_REFRESH_MIN,
35
                              BACKEND_PER_USER,
36
                              DEFAULT_INSTANCE_NETWORKS)
34
from django.conf import settings
37 35
from synnefo.db.models import Backend
38
from synnefo.logic.backend import update_backend_resources
39
from synnefo.api.util import backend_public_networks
36
from synnefo.logic import backend as backend_mod
37
from synnefo.api import util
40 38

  
41 39
log = logging.getLogger(__name__)
42 40

  
......
47 45
    """
48 46
    def __init__(self):
49 47
        self.strategy_mod =\
50
            importlib.import_module(BACKEND_ALLOCATOR_MODULE)
48
            importlib.import_module(settings.BACKEND_ALLOCATOR_MODULE)
51 49

  
52 50
    def allocate(self, userid, flavor):
53 51
        """Allocate a vm of the specified flavor to a backend.
......
114 112
    backends = backends.filter(offline=False, drained=False,
115 113
                               disk_templates__contains=disk_template)
116 114
    backends = list(backends)
117
    if "SNF:ANY_PUBLIC" in DEFAULT_INSTANCE_NETWORKS:
118
        backends = filter(lambda x: has_free_ip(x), backends)
115
    if "SNF:ANY_PUBLIC" in settings.DEFAULT_INSTANCE_NETWORKS:
116
        backends = filter(lambda x: util.backend_has_free_public_ip(x),
117
                          backends)
119 118
    return backends
120 119

  
121 120

  
122
def has_free_ip(backend):
123
    """Find if Backend has any free public IP."""
124
    for network in backend_public_networks(backend):
125
        if not network.get_pool().empty():
126
            return True
127
    log.warning("No available network in backend %r", backend)
128
    return False
129

  
130

  
131 121
def flavor_disk(flavor):
132 122
    """ Get flavor's 'real' disk size
133 123

  
......
164 154
    """
165 155

  
166 156
    now = datetime.datetime.now()
167
    delta = datetime.timedelta(minutes=BACKEND_REFRESH_MIN)
157
    delta = datetime.timedelta(minutes=settings.BACKEND_REFRESH_MIN)
168 158
    for b in backends:
169 159
        if now > b.updated + delta:
170 160
            log.debug("Updating resources of backend %r. Last Updated %r",
171 161
                      b, b.updated)
172
            update_backend_resources(b)
162
            backend_mod.update_backend_resources(b)
173 163

  
174 164

  
175 165
def get_backend_for_user(userid):
176 166
    """Find fixed Backend for user based on BACKEND_PER_USER setting."""
177 167

  
178
    backend = BACKEND_PER_USER.get(userid)
168
    backend = settings.BACKEND_PER_USER.get(userid)
179 169

  
180 170
    if not backend:
181 171
        return None

Also available in: Unified diff