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