root / snf-cyclades-app / synnefo / db / query.py @ 435bb7fb
History | View | Annotate | Download (1.4 kB)
1 | 92d2d1ce | Christos Stavrakakis | from synnefo.db.models import IPAddress |
---|---|---|---|
2 | 92d2d1ce | Christos Stavrakakis | |
3 | 92d2d1ce | Christos Stavrakakis | |
4 | 92d2d1ce | Christos Stavrakakis | def get_server_ips(server, for_update=False): |
5 | 92d2d1ce | Christos Stavrakakis | ips = IPAddress.objects.select_related("subnet")
|
6 | 92d2d1ce | Christos Stavrakakis | ips = ips.filter(nic__machine=server, deleted=False)
|
7 | 92d2d1ce | Christos Stavrakakis | if for_update:
|
8 | 92d2d1ce | Christos Stavrakakis | ips = ips.select_for_update() |
9 | 92d2d1ce | Christos Stavrakakis | return ips
|
10 | 92d2d1ce | Christos Stavrakakis | |
11 | 92d2d1ce | Christos Stavrakakis | |
12 | 92d2d1ce | Christos Stavrakakis | def get_server_active_ips(server, for_update=False): |
13 | 92d2d1ce | Christos Stavrakakis | ips = get_server_ips(server, for_update=for_update) |
14 | 92d2d1ce | Christos Stavrakakis | return ips.filter(nic__state="ACTIVE") |
15 | 92d2d1ce | Christos Stavrakakis | |
16 | 92d2d1ce | Christos Stavrakakis | |
17 | 92d2d1ce | Christos Stavrakakis | def get_server_public_ip(server, version=4): |
18 | 92d2d1ce | Christos Stavrakakis | ips = get_server_active_ips(server) |
19 | 92d2d1ce | Christos Stavrakakis | try:
|
20 | 92d2d1ce | Christos Stavrakakis | public_ips = ips.filter(network__public=True,
|
21 | 92d2d1ce | Christos Stavrakakis | subnet__ipversion=version) |
22 | 92d2d1ce | Christos Stavrakakis | return public_ips[0].address |
23 | 92d2d1ce | Christos Stavrakakis | except IndexError: |
24 | 92d2d1ce | Christos Stavrakakis | return None |
25 | 92d2d1ce | Christos Stavrakakis | |
26 | 92d2d1ce | Christos Stavrakakis | |
27 | 92d2d1ce | Christos Stavrakakis | def get_floating_ips(for_update=False): |
28 | 92d2d1ce | Christos Stavrakakis | ips = IPAddress.objects.select_related("subnet")
|
29 | 92d2d1ce | Christos Stavrakakis | ips = ips.filter(floating_ip=True, deleted=False) |
30 | 92d2d1ce | Christos Stavrakakis | if for_update:
|
31 | 92d2d1ce | Christos Stavrakakis | ips = ips.select_for_update() |
32 | 92d2d1ce | Christos Stavrakakis | return ips
|
33 | 92d2d1ce | Christos Stavrakakis | |
34 | 92d2d1ce | Christos Stavrakakis | |
35 | 92d2d1ce | Christos Stavrakakis | def get_server_floating_ips(server, for_update=False): |
36 | 92d2d1ce | Christos Stavrakakis | floating_ips = get_floating_ips(for_update=for_update) |
37 | 92d2d1ce | Christos Stavrakakis | return floating_ips.filter(nic__machine=server)
|
38 | 92d2d1ce | Christos Stavrakakis | |
39 | 92d2d1ce | Christos Stavrakakis | |
40 | 92d2d1ce | Christos Stavrakakis | def get_server_floating_ip(server, address, for_update=False): |
41 | 92d2d1ce | Christos Stavrakakis | server_fips = get_server_floating_ips(server, for_update=for_update) |
42 | 92d2d1ce | Christos Stavrakakis | return server_fips.get(address=address)
|
43 | 92d2d1ce | Christos Stavrakakis | |
44 | 92d2d1ce | Christos Stavrakakis | |
45 | 92d2d1ce | Christos Stavrakakis | def get_user_floating_ip(userid, address, for_update=False): |
46 | 92d2d1ce | Christos Stavrakakis | fips = get_floating_ips(for_update=for_update) |
47 | 92d2d1ce | Christos Stavrakakis | return fips.get(userid=userid, address=address) |