Repository URL to install this package:
|
Version:
4.3.3.2 ▾
|
# 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')