From 640ff61422bc0ee3966941b93d9889ddbbd38d77 Mon Sep 17 00:00:00 2001 From: ckonstanski Date: Thu, 30 Jul 2026 18:17:14 -0600 Subject: more files --- src/dashboard/views.py | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/dashboard/views.py (limited to 'src/dashboard/views.py') 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) + -- cgit v1.3