Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (1.7 kB)

1
from django import template
2

    
3
register = template.Library()
4

    
5
@register.filter(name="vm_public_ip")
6
def vm_public_ip(vm):
7
    """
8
    Identify if vm is connected to ``public`` network and return the ipv4
9
    address
10
    """
11
    try:
12
        return vm.nics.filter(network__public=True)[0].ipv4
13
    except IndexError:
14
        return "No public ip"
15

    
16

    
17
VM_STATE_CSS_MAP = {
18
        'BUILD': 'warning',
19
        'ERROR': 'important',
20
        'STOPPED': 'notice',
21
        'STARTED': 'success',
22
        'DESTROYED': 'inverse'
23
}
24
@register.filter(name="vm_status_badge")
25
def vm_status_badge(vm):
26
    """
27
    Return a span badge styled based on the vm current status
28
    """
29
    state_cls = VM_STATE_CSS_MAP[vm.operstate]
30
    badge_cls = "badge badge-%s" % state_cls
31

    
32
    deleted_badge = ""
33
    if vm.deleted:
34
        deleted_badge = '<span class="badge badge-important">Deleted</span>'
35
    return '%s\n<span class="%s">%s</span>' % (deleted_badge, badge_cls,
36
            vm.operstate)
37

    
38
vm_status_badge.is_safe = True
39

    
40
@register.filter(name="network_deleted_badge")
41
def network_deleted_badge(network):
42
    """
43
    Return a span badge styled based on the vm current status
44
    """
45
    deleted_badge = ""
46
    if network.state == "DELETED":
47
        deleted_badge = '<span class="badge badge-important">Deleted</span>'
48
    return deleted_badge
49

    
50
network_deleted_badge.is_safe = True
51

    
52
@register.filter(name="get_os")
53
def get_os(vm):
54
    try:
55
        return vm.metadata.filter(meta_key="OS").get().meta_value
56
    except:
57
        return "unknown"
58
    
59
get_os.is_safe = True
60

    
61
@register.filter(name="network_vms")
62
def network_vms(network, account):
63
    vms = []
64
    for nic in network.nics.filter(machine__userid=account):
65
        vms.append(nic.machine)
66
    return vms
67
    
68
network_vms.is_safe = True