Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / db / query.py @ 9835a70d

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)