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)