summaryrefslogtreecommitdiff
path: root/src/dashboard/views.py
blob: ca74afc6f624883dbde62379f6ca60a6eb819c04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import json
from django.shortcuts import render
from automationstatus.models import AutomationStatus, Summary
from automationstatus.models import DeploymentWorkflow, OrchestrationWorkflow
from django.core import serializers
from .services.caasqueryservice import CaaSQueryService

def filter_by(filter):
    workflow = DeploymentWorkflow.objects.select_related('cluster')

    if (filter == None):
        return workflow.all()
    elif (filter == 'online'):
        return workflow.filter(online=True).all()
    elif (filter == 'firmware_scheduled'):
        return workflow.filter(firmware_scheduled=True).filter(firmware_upgraded=False).all()
    elif (filter == 'firmware_upgraded'):
        return workflow.filter(firmware_upgraded = True)
    elif (filter == 'wr_scheduled'):
        return workflow.filter(wr_scheduled=True).filter(wr_installed=False).all()
    elif (filter == 'wr_installed'):
        return workflow.filter(wr_installed = True)

    return workflow.all()


def dashboard(request):
    print("in dashboard with no filter")
    filter = request.GET.get('filter', None)
    query_result = Summary.objects.latest('created_at')
    workflows = filter_by(filter)
    orchestration = OrchestrationWorkflow.objects.latest('created_at')


    context = {
        "summary": query_result,
        "completed_percent" : int((query_result.completed * 100)/query_result.clusters),
        "in_progress_percent" : int((query_result.in_progress * 100)/query_result.clusters),
        "failed_percent" : int((query_result.failed * 100)/query_result.clusters),
        "workflow": serializers.serialize("json", workflows),
        "orchestration": orchestration
    }
    return render(request, "dashboard.html", context)

def deployment(request):
    # Look up playbook status by distinch cluster names
    query_result = AutomationStatus.objects.all().distinct('cluster_name').order_by('cluster_name', '-created_at')
    clusters = serializers.serialize("json", query_result)

    # Get full list of clusters
    # caasqueryservice = CaaSQueryService()
    context = {
        "clusters": clusters
    }
    return render(request, "deployment.html", context)

def hardware(request):
    # Get firmware versions
    caasqueryservice = CaaSQueryService()
    context = {
        "firmware_versions": caasqueryservice.get_firmware_version()
    }
    return render(request, "hardware.html", context)

def by_playbook_name(request, playbook_name):
    query_result = AutomationStatus.objects.filter(playbook_name=playbook_name).order_by('-created_at')
    context = { 
        "playbook_name": playbook_name,
        "query_result": serializers.serialize("json", query_result) 
        }
    return render(request, "by_playbook_name.html", context)

def by_cluster_name(request, cluster_name):
    query_result = AutomationStatus.objects.filter(cluster_name=cluster_name).order_by('-created_at')
    context = { 
        "cluster_name": cluster_name,
        "query_result": serializers.serialize("json", query_result) 
        }
    return render(request, "by_cluster_name.html", context)