Example #1
0
    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
Example #2
0
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
Example #3
0
    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
Example #4
0
    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
Example #5
0
    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
Example #6
0
    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
Example #7
0
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
Example #8
0
    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
Example #9
0
    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")
Example #10
0
    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