Revision 9115d567 snf-cyclades-app/synnefo/api/floating_ips.py

b/snf-cyclades-app/synnefo/api/floating_ips.py
40 40
from snf_django.lib.api import faults, utils
41 41
from synnefo.api import util
42 42
from synnefo import quotas
43
from synnefo.db.models import Network, FloatingIP, NetworkInterface
43
from synnefo.db.models import Network, FloatingIP
44 44

  
45 45

  
46 46
from logging import getLogger
......
129 129
    pool = req.get("pool", None)
130 130
    address = req.get("address", None)
131 131
    machine = None
132
    net_objects = Network.objects.select_for_update().filter(public=True,
133
                                                             deleted=False)
132
    net_objects = Network.objects.select_for_update()\
133
                                 .filter(public=True, floating_ip_pool=True,
134
                                         deleted=False)
134 135
    try:
135 136
        if pool is None:
136 137
            # User did not specified a pool. Choose a random public IP
137 138
            network, address = util.allocate_public_ip(net_objects)
138 139
        else:
139 140
            try:
140
                network = net_objects.get(id=pool)
141
            except Network.DoesNotExist:
141
                network = Network.objects.select_for_update()\
142
                                         .get(id=pool, public=True,
143
                                              deleted=False,
144
                                              floating_ip_pool=True)
145

  
146
            except IndexError:
142 147
                raise faults.ItemNotFound("Pool '%s' does not exist." % pool)
143 148
            if address is None:
144 149
                # User did not specified an IP address. Choose a random one
......
221 226

  
222 227
@api.api_method(http_method='GET', user_required=True, logger=log)
223 228
def list_floating_ip_pools(request):
224
    networks = Network.objects.filter(public=True, deleted=False)
229
    networks = Network.objects.filter(public=True, deleted=False,
230
                                      floating_ip_pool=True)
225 231
    pools = [{"name": str(net.id)} for net in networks]
226 232
    request.serialization = "json"
227 233
    data = json.dumps({"floating_ip_pools": pools})

Also available in: Unified diff