示例#1
0
def restore_metric_values(metric_id, query, step, handler, handler_field):
    expand = None
    if handler in ['cycletime', 'leadtime']:
        expand = ['changelog']

    if settings.JIRA_INTEGRATION:
        try:
            method = getattr(handlers, handler)
            data = request_jira_api(
                query=query,
                fields=['created', 'resolutiondate'],
                expand=expand)

            results = group_issues_by_step(data, int(step), handler_field)

        except Exception as e:
            raise e

        for date, group in results.items():
            log.info('Handling selected data started')
            try:
                value = method(group)  # handler value
                log.info('Handling selected data finished')
            except Exception as e:
                log.error(
                    'Selected data "{}" can not be handle by {}-handler: {}'.
                    format(data, handler, e))
                raise e
            MetricValue.objects.create(metric_id=metric_id, value=value,
                                       created=date)
    else:
        log.info('Jira integration is off. '
                 'If you want to use this feature, turn it on.')
示例#2
0
def run_metric_calculation(metric_id):
    log.info('Getting metric {} from DB'.format(metric_id))
    try:
        metric = Metric.objects.get(pk=metric_id)
    except ObjectDoesNotExist:
        log.error('Metric with id {} was not found in DB'.format(metric_id))
        raise ObjectDoesNotExist

    expand = None
    fields = ['created', 'resolutiondate']
    if metric.handler in ['cycletime']:
        expand = ['changelog']

    method = getattr(handlers, metric.handler)
    if settings.JIRA_INTEGRATION:
        try:
            data = request_jira_api(metric.query, fields=fields, expand=expand)
        except Exception as e:
            metric.error = e
            metric.save()
            raise e

        log.info('Handling selected data started')
        try:
            value = method(data)  # handler value
            log.info('Handling selected data finished')
        except Exception as e:
            log.error('Selected data "{}" can not be handle by {}-handler: {}'.
                      format(data, metric.handler, e))
            metric.error = e
            metric.save()
            raise e

        metric.error = ''
        metric.save()
        log.info('Creating metric value for metric {}'.format(metric.name))
        MetricValue.objects.create(metric=metric, value=value)
        log.info('Metric created')
    else:
        log.info('Jira integration is off. '
                 'If you want to use this feature, turn it on.')