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 |