summaryrefslogtreecommitdiff
path: root/src/dashboard/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/dashboard/views.py')
-rw-r--r--src/dashboard/views.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/dashboard/views.py b/src/dashboard/views.py
new file mode 100644
index 0000000..ca74afc
--- /dev/null
+++ b/src/dashboard/views.py
@@ -0,0 +1,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)
+