def get_context_data(self, request): meters = ceilometer.Meters(request) if not meters._ceilometer_meter_list: msg = _("There are no meters defined yet.") nodes = ironic.get_node_names(request) node_list = [] for node in nodes: node_info = ironic.get_node_info(request,node.uuid).driver_info node_ip = node_info['ipmi_address'] node_list.append({'node_uuid': node.uuid, 'node_ip': node_ip}) context = { 'nova_meters': meters.list_nova(), 'neutron_meters': meters.list_neutron(), 'glance_meters': meters.list_glance(), 'cinder_meters': meters.list_cinder(), 'swift_meters': meters.list_swift(), 'kwapi_meters': meters.list_kwapi(), 'ironic_meters': meters.list_ironic(), 'node_list': node_list } return context
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_context_data(self, request): meters = ceilometer.Meters(request) context = { 'nova_meters': meters.list_nova(), 'neutron_meters': meters.list_neutron(), 'glance_meters': meters.list_glance(), 'cinder_meters': meters.list_cinder(), 'swift_meters': meters.list_swift(), 'kwapi_meters': meters.list_kwapi(), } return context
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_context_data(self, request): context = template.RequestContext(request) meters = ceilometer.Meters(request) nodes=ironic.get_node_names(request) node_list={} for node in nodes: driver_info=ironic.get_node_info(request,node.uuid).driver_info driver_ip=driver_info['ipmi_address'] node_list[node.uuid] = driver_ip if not meters._ceilometer_meter_list: msg = _("There are no meters defined yet.") context['node_list'] = node_list return context
def get_context_data(self, request): meters = ceilometer.Meters(request) if not meters._ceilometer_meter_list: msg = _("There are no meters defined yet.") messages.warning(request, msg) context = { 'nova_meters': meters.list_nova(), 'neutron_meters': meters.list_neutron(), 'glance_meters': meters.list_glance(), 'cinder_meters': meters.list_cinder(), 'swift_meters': meters.list_swift(), 'kwapi_meters': meters.list_kwapi(), } return context
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(), } project_rows = {} date_options = request.GET.get('date_options', 7) date_from = request.GET.get('date_from') date_to = request.GET.get('date_to') for meter in meters._cached_meters.values(): service = None for name, m_list in services.items(): if meter in m_list: service = name break # show detailed samples # samples = ceilometer.sample_list(request, meter.name) res, unit = query_data(request, date_from, date_to, date_options, "project", meter.name, 3600 * 24) 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} if re.id not in project_rows: project_rows[re.id] = [row] else: project_rows[re.id].append(row) return project_rows
def get_context_data(self, request): context = template.RequestContext(request) meters = ceilometer.Meters(request) if not meters._ceilometer_meter_list: msg = _("There are no meters defined yet.") messages.warning(request, msg) nodes = ironic.get_node_names(request) node_list = [] for node in nodes: node_info = ironic.get_node_info(request,node.uuid).driver_info node_ip = node_info['ipmi_address'] node_username = node_info['ipmi_username'] node_list.append({'node_uuid': node.uuid, 'node_ip': node_ip, 'node_username': node_username}) context['node_list'] = node_list return context
def post(self, request, **response_kwargs): method = response_kwargs["op_method"] if method == "add": ip = request.POST.get("bmc-ip", None) username = request.POST.get("username", None) password = request.POST.get("password", None) meters = ceilometer.Meters(request) if not meters._ceilometer_meter_list: msg = _("There are no meters defined yet.") result = ironic.add_node_info(request, ip, username, password) elif method == "update": None else: uuid = request.POST.get("uuid") result = ironic.delete_node(request, uuid) return HttpResponseRedirect("/admin/metering")
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