def get(self, request, *args, **kwargs): meter = request.GET.get('meter', None) if not meter: return HttpResponse(json.dumps({}), content_type='application/json') meter_name = meter.replace(".", "_") date_options = request.GET.get('date_options', None) date_from = request.GET.get('date_from', None) date_to = request.GET.get('date_to', None) stats_attr = request.GET.get('stats_attr', 'avg') group_by = request.GET.get('group_by', None) try: date_from, date_to = metering_utils.calc_date_args( date_from, date_to, date_options) except Exception: exceptions.handle(self.request, _('Dates cannot be recognized.')) if group_by == 'project': query = metering_utils.ProjectAggregatesQuery( request, date_from, date_to, 3600 * 24) else: query = metering_utils.MeterQuery(request, date_from, date_to, 3600 * 24) resources, unit = query.query(meter) series = metering_utils.series_for_meter(request, resources, group_by, meter, meter_name, stats_attr, unit) series = metering_utils.normalize_series_by_unit(series) ret = {'series': series, 'settings': {}} return HttpResponse(json.dumps(ret), content_type='application/json')
def load_report_data(request): meters = ceilometer.Meters(request) services = { _('Nova'): meters.list_nova(), _('Neutron'): meters.list_neutron(), _('Glance'): meters.list_glance(), _('Cinder'): meters.list_cinder(), _('Swift_meters'): meters.list_swift(), _('Kwapi'): meters.list_kwapi(), _('IPMI'): meters.list_ipmi(), } project_rows = {} date_options = request.GET.get('date_options', 7) date_from = request.GET.get('date_from') date_to = request.GET.get('date_to') try: date_from, date_to = metering_utils.calc_date_args(date_from, date_to, date_options) except Exception: exceptions.handle(request, _('Dates cannot be recognized.')) try: project_aggregates = metering_utils.ProjectAggregatesQuery(request, date_from, date_to, 3600 * 24) except Exception: exceptions.handle(request, _('Unable to retrieve project list.')) for meter in meters._cached_meters.values(): service = None for name, m_list in services.items(): if meter in m_list: service = name break res, unit = project_aggregates.query(meter.name) for r in res: values = r.get_meter(meter.name.replace(".", "_")) if values: for value in values: row = {"name": 'none', "project": r.id, "meter": meter.name, "description": meter.description, "service": service, "time": value._apiresource.period_end, "value": value._apiresource.avg, "unit": meter.unit} if r.id not in project_rows: project_rows[r.id] = [row] else: project_rows[r.id].append(row) return project_rows
def get_report_table_data(self): meters = ceilometer.Meters(self.request) services = { _('Nova'): meters.list_nova(), _('Neutron'): meters.list_neutron(), _('Glance'): meters.list_glance(), _('Cinder'): meters.list_cinder(), _('Swift_meters'): meters.list_swift(), _('Kwapi'): meters.list_kwapi(), } report_rows = [] date_options = self.request.session.get('period', 7) date_from = self.request.session.get('date_from', '') date_to = self.request.session.get('date_to', '') try: date_from, date_to = metering.calc_date_args(date_from, date_to, date_options) except Exception: exceptions.handle(self.request, _('Dates cannot be recognized.')) try: project_aggregates = metering.ProjectAggregatesQuery(self.request, date_from, date_to, 3600 * 24) except Exception: exceptions.handle(self.request, _('Unable to retrieve project list.')) for meter in meters._cached_meters.values(): service = None for name, m_list in services.items(): if meter in m_list: service = name break res, unit = project_aggregates.query(meter.name) for re in res: values = re.get_meter(meter.name.replace(".", "_")) if values: for value in values: row = {"name": 'none', "project": re.id, "meter": meter.name, "description": meter.description, "service": service, "time": value._apiresource.period_end, "value": value._apiresource.avg} report_rows.append(row) return report_rows
def get_process_list_table_data(self): meters = ceilometer.Meters(self.request) instance = self.tab_group.kwargs['instance'] services = { _('Nova'): meters.list_nova(), _('Neutron'): meters.list_neutron(), _('Glance'): meters.list_glance(), _('Cinder'): meters.list_cinder(), _('Swift_meters'): meters.list_swift(), _('Kwapi'): meters.list_kwapi(), _('IPMI'): meters.list_ipmi(), } report_rows = [] date_options = self.request.session.get('period', 1) date_from = self.request.session.get('date_from', '') date_to = self.request.session.get('date_to', '') try: date_from, date_to = metering.calc_date_args(date_from, date_to, date_options) except Exception: exceptions.handle(self.request, _('Dates cannot be recognized.')) try: project_aggregates = metering.ProjectAggregatesQuery(self.request, date_from, date_to, 3600 * 24) except Exception: exceptions.handle(self.request, _('Unable to retrieve project list.')) meter_name = 'instance.process.list' meter = meters._get_meter(meter_name) self._meter = meter LOG.debug('meter: %s' % meter.__dict__) res, unit = project_aggregates.query(meter.name) LOG.debug('unit: %s' % unit) query = [ {"field": "resource_id", "op": "eq", "value": instance.id}, ] sample_list = api.ceilometer.sample_list(self.request, meter.name, query, limit=1) sample = sample_list[0] self._timestamp = sample.timestamp LOG.debug("sample: %s" % sample) counter_volume = sample.counter_volume LOG.debug("counter_volume: %s" % counter_volume) LOG.debug("counter_volume first char: %s" % counter_volume[0]) LOG.debug("counter_volume last char: %s" % counter_volume[-1]) process_lists = eval(counter_volume) LOG.debug("process_lists: %s" % len(process_lists)) for process_list in process_lists: plist = dict(process_list) LOG.debug("plist: %s" % plist) row = {"offset": plist['offset'], "name": plist['process_name'], "pid": plist['pid'], "uid": plist['uid'], "gid": plist['gid'], "dtb": plist['dtb'], "start_time": plist['start_time'], } report_rows.append(row) return report_rows