Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / helpdesk / templatetags / helpdesk_tags.py @ 605d23bf

History | View | Annotate | Download (1.9 kB)

1 c3564ce9 Kostas Papadimitriou
from django import template
2 c3564ce9 Kostas Papadimitriou
3 c3564ce9 Kostas Papadimitriou
register = template.Library()
4 c3564ce9 Kostas Papadimitriou
5 c3564ce9 Kostas Papadimitriou
@register.filter(name="vm_public_ip")
6 c3564ce9 Kostas Papadimitriou
def vm_public_ip(vm):
7 c3564ce9 Kostas Papadimitriou
    """
8 c3564ce9 Kostas Papadimitriou
    Identify if vm is connected to ``public`` network and return the ipv4
9 c3564ce9 Kostas Papadimitriou
    address
10 c3564ce9 Kostas Papadimitriou
    """
11 c3564ce9 Kostas Papadimitriou
    try:
12 67fd80f5 Kostas Papadimitriou
        return vm.nics.filter(network__public=True)[0].ipv4
13 c3564ce9 Kostas Papadimitriou
    except IndexError:
14 c3564ce9 Kostas Papadimitriou
        return "No public ip"
15 c3564ce9 Kostas Papadimitriou
16 c3564ce9 Kostas Papadimitriou
17 67fd80f5 Kostas Papadimitriou
VM_STATE_CSS_MAP = {
18 c3564ce9 Kostas Papadimitriou
        'BUILD': 'warning',
19 c3564ce9 Kostas Papadimitriou
        'ERROR': 'important',
20 c3564ce9 Kostas Papadimitriou
        'STOPPED': 'notice',
21 c3564ce9 Kostas Papadimitriou
        'STARTED': 'success',
22 c3564ce9 Kostas Papadimitriou
        'DESTROYED': 'inverse'
23 c3564ce9 Kostas Papadimitriou
}
24 c3564ce9 Kostas Papadimitriou
@register.filter(name="vm_status_badge")
25 c3564ce9 Kostas Papadimitriou
def vm_status_badge(vm):
26 c3564ce9 Kostas Papadimitriou
    """
27 c3564ce9 Kostas Papadimitriou
    Return a span badge styled based on the vm current status
28 c3564ce9 Kostas Papadimitriou
    """
29 67fd80f5 Kostas Papadimitriou
    state_cls = VM_STATE_CSS_MAP[vm.operstate]
30 c3564ce9 Kostas Papadimitriou
    badge_cls = "badge badge-%s" % state_cls
31 c3564ce9 Kostas Papadimitriou
32 c3564ce9 Kostas Papadimitriou
    deleted_badge = ""
33 c3564ce9 Kostas Papadimitriou
    if vm.deleted:
34 c3564ce9 Kostas Papadimitriou
        deleted_badge = '<span class="badge badge-important">Deleted</span>'
35 67fd80f5 Kostas Papadimitriou
    return '%s\n<span class="%s">%s</span>' % (deleted_badge, badge_cls,
36 67fd80f5 Kostas Papadimitriou
            vm.operstate)
37 c3564ce9 Kostas Papadimitriou
38 c3564ce9 Kostas Papadimitriou
vm_status_badge.is_safe = True
39 67fd80f5 Kostas Papadimitriou
40 67fd80f5 Kostas Papadimitriou
@register.filter(name="network_deleted_badge")
41 67fd80f5 Kostas Papadimitriou
def network_deleted_badge(network):
42 67fd80f5 Kostas Papadimitriou
    """
43 67fd80f5 Kostas Papadimitriou
    Return a span badge styled based on the vm current status
44 67fd80f5 Kostas Papadimitriou
    """
45 67fd80f5 Kostas Papadimitriou
    deleted_badge = ""
46 605d23bf Kostas Papadimitriou
    if network.deleted:
47 67fd80f5 Kostas Papadimitriou
        deleted_badge = '<span class="badge badge-important">Deleted</span>'
48 67fd80f5 Kostas Papadimitriou
    return deleted_badge
49 67fd80f5 Kostas Papadimitriou
50 67fd80f5 Kostas Papadimitriou
network_deleted_badge.is_safe = True
51 e620ca07 Olga Brani
52 e620ca07 Olga Brani
@register.filter(name="get_os")
53 e620ca07 Olga Brani
def get_os(vm):
54 e620ca07 Olga Brani
    try:
55 e620ca07 Olga Brani
        return vm.metadata.filter(meta_key="OS").get().meta_value
56 e620ca07 Olga Brani
    except:
57 e620ca07 Olga Brani
        return "unknown"
58 605d23bf Kostas Papadimitriou
59 e620ca07 Olga Brani
get_os.is_safe = True
60 e620ca07 Olga Brani
61 e620ca07 Olga Brani
@register.filter(name="network_vms")
62 e620ca07 Olga Brani
def network_vms(network, account):
63 e620ca07 Olga Brani
    vms = []
64 e620ca07 Olga Brani
    for nic in network.nics.filter(machine__userid=account):
65 e620ca07 Olga Brani
        vms.append(nic.machine)
66 e620ca07 Olga Brani
    return vms
67 605d23bf Kostas Papadimitriou
68 e620ca07 Olga Brani
network_vms.is_safe = True
69 7f841ad2 Olga Brani
70 7f841ad2 Olga Brani
@register.filter(name="network_nics")
71 7f841ad2 Olga Brani
def network_nics(network, account):
72 7f841ad2 Olga Brani
    vms = []
73 7f841ad2 Olga Brani
    for nic in network.nics.filter(machine__userid=account):
74 7f841ad2 Olga Brani
        vms.append(nic)
75 7f841ad2 Olga Brani
    return vms
76 605d23bf Kostas Papadimitriou
77 605d23bf Kostas Papadimitriou
network_nics.is_safe = True