Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (2.8 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
        'PENDING': 'warning',
20
        'ERROR': 'important',
21
        'STOPPED': 'notice',
22
        'STARTED': 'success',
23
        'ACTIVE': 'success',
24
        'DESTROYED': 'inverse'
25
}
26
@register.filter(name="object_status_badge")
27
def object_status_badge(vm_or_net):
28
    """
29
    Return a span badge styled based on the vm current status
30
    """
31
    state = vm_or_net.operstate if hasattr(vm_or_net, 'operstate') else \
32
        vm_or_net.state
33
    state_cls = VM_STATE_CSS_MAP.get(state, 'notice')
34
    badge_cls = "badge badge-%s" % state_cls
35

    
36
    deleted_badge = ""
37
    if vm_or_net.deleted:
38
        deleted_badge = '<span class="badge badge-important">Deleted</span>'
39
    return '%s\n<span class="%s">%s</span>' % (deleted_badge, badge_cls, state)
40

    
41
object_status_badge.is_safe = True
42

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

    
53
network_deleted_badge.is_safe = True
54

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

    
62
get_os.is_safe = True
63

    
64
@register.filter(name="network_vms")
65
def network_vms(network, account, show_deleted=False):
66
    vms = []
67
    nics = network.nics.filter(machine__userid=account)
68
    if not show_deleted:
69
        nics = nics.filter(machine__deleted=False).distinct()
70
    for nic in nics:
71
        vms.append(nic.machine)
72
    return vms
73

    
74
network_vms.is_safe = True
75

    
76
@register.filter(name="network_nics")
77
def network_nics(network, account, show_deleted=False):
78
    vms = []
79
    nics = network.nics.filter(machine__userid=account)
80
    if not show_deleted:
81
        nics = nics.filter(machine__deleted=False).distinct()
82
    return nics
83

    
84
@register.filter(name="backend_info")
85
def backend_info(vm):
86
    content = ""
87
    backend = vm.backend
88
    excluded = ['password_hash', 'hash', 'username']
89
    if not vm.backend:
90
        content = "No backend"
91
        return content
92

    
93
    for field in vm.backend._meta.fields:
94
        if field.name in excluded:
95
            continue
96
        content += '<dt>Backend ' + field.name + '</dt><dd>' + \
97
                   str(getattr(backend, field.name)) + '</dd>'
98
    return content
99

    
100
backend_info.is_safe = True