Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
# Copyright (c) 2014 TrilioData, Inc.
# All Rights Reserved.

"""
Views for managing WorkloadMgr Contego Services.
"""
import logging

from django.views.generic import View
from django.http import HttpResponse
from django.shortcuts import render
import json

from collections import OrderedDict
from horizon import exceptions
from horizon import messages
from django.utils.translation import gettext as _

from dashboards import workloadmgr

LOG = logging.getLogger(__name__)

class IndexView(View):

    def get(self, request, *args, **kwargs):
        usage={}
        try:
            usage = workloadmgr.dashboard_usage_data(self.request)
            context = {'status': '200', 'data': usage}
            return HttpResponse(json.dumps(context), content_type="application/json")
        except Exception as ex:
            context = {'status': '500', 'reason': str(ex)}
            return HttpResponse(json.dumps(context), content_type='application/json')

class ExportUsageView(View):

    def get(self, request, *args, **kwargs):
        usage={}
        try:
            tenants = workloadmgr.dashboard_usage_data(self.request)
            project_id = request.GET.get('project_id')
            if project_id == "null":
               project_id = None
            csv_rows = []
            workload_found = False
            for tenant_id,tenant_data in list(tenants.items()):
                if project_id:
                    if project_id == tenant_id:
                        pass
                    else:
                        continue 
                for workload_id, workload_data in list(tenant_data['workloads'].items()):
                    workload_found = True
                    workload_row = OrderedDict()
                    vms_protectd = workload_data['protected_vms']
                    workload_row['Tenant']= tenant_data['tenant_name']
                    workload_row['Workload']=workload_data['name']

                    snap_found = False
                    for snap_id, snap_data in list(workload_data['snapshots'].items()):
                        snap_row = OrderedDict(workload_row)
                        snap_found = True
                        snap_name = snap_data['created_at']+'-'+snap_data['name']
                        snap_row['Snapshot']=snap_name
                        snap_row['VMs']=len(vms_protectd)
                        snap_row['Storage']=snap_data['size']
                        csv_rows.append(snap_row)
                    if snap_found is not True:
                        workload_row['Snapshot']='-'
                        workload_row['VMs']=len(vms_protectd)
                        workload_row['Storage']='0.0 B'
                        csv_rows.append(workload_row)

                #If no workload found in tenant, then adding null for all fields
                if workload_found is not True:
                    workload_row=OrderedDict()
                    workload_row['Tenant']= tenant_data['tenant_name']
                    workload_row['Workload']='-'
                    workload_row['Snapshot']='-'
                    workload_row['VMs']=0
                    workload_row['Storage']='0.0 B'
                    csv_rows.append(workload_row)
            context = {'status': '200', 'data': csv_rows}
            return HttpResponse(json.dumps(context), content_type="application/json")
        except Exception as ex:
            context = {'status': '500', 'reason': str(ex)}
            return HttpResponse(json.dumps(context), content_type='application/json')