Example #1
0
def health(estimation_fn=estimate_rough_queue_completion):
    """Return information about the health of the queue in a format that
    can be turned into JSON.
    """
    # Import this here so that we only need slumber if health is called.
    try:
        from slumber import data_link
    except ImportError:  # pragma: no cover
        return {}
    output = {'queue': {}, 'errors': {}}

    output['queue']['all-jobs'] = Job.objects.all().count()

    output['queue']['executed'] = Job.objects.exclude(executed=None).count()
    output['queue']['executed-details'] = \
        get_grouped_aggregate(jobs_type='executed')
    output['queue']['oldest-executed'] = data_link(
        get_first(Job.objects.exclude(executed=None).order_by('executed')))
    output['queue']['most-recent-executed'] = data_link(
        get_first(Job.objects.exclude(executed=None).order_by('-executed')))

    output['queue']['remaining'] = Job.objects.filter(executed=None,
                                                      cancelled=None).count()
    # output['queue']['remaining-details'] = \
    #     get_grouped_aggregate(
    #         jobs_type='done',
    #         complement=True)

    output['queue']['not-executed'] = \
        Job.objects.filter(executed=None, cancelled__isnull=True).count()
    output['queue']['not-executed-details'] = \
        get_not_exeuted_details()

    output['queue']['cancelled'] = \
        Job.objects.filter(cancelled__isnull=False).count()
    output['queue']['oldest-cancelled'] = data_link(
        get_first(Job.objects.exclude(cancelled=None).order_by('cancelled')))
    output['queue']['most-recent-cancelled'] = data_link(
        get_first(Job.objects.exclude(cancelled=None).order_by('-cancelled')))
    output['queue']['cancelled-details'] = \
        get_grouped_aggregate(jobs_type='cancelled', complement=True)

    output['queue']['estimated-completion-current-job'] = \
        estimate_current_job_completion()
    output['queue']['estimated-completion'] = estimation_fn()

    output['errors']['number'] = Error.objects.all().count()
    return output
Example #2
0
def health(estimation_fn=estimate_rough_queue_completion):
    """Return information about the health of the queue in a format that
    can be turned into JSON.
    """
    # Import this here so that we only need slumber if health is called.
    try:
        from slumber import data_link
    except ImportError:  # pragma: no cover
        return {}
    output = {'queue': {}, 'errors': {}}

    output['queue']['all-jobs'] = Job.objects.all().count()

    output['queue']['executed'] = Job.objects.exclude(executed=None).count()
    output['queue']['executed-details'] = \
        get_grouped_aggregate(jobs_type='executed')
    output['queue']['oldest-executed'] = data_link(get_first(
        Job.objects.exclude(executed=None).order_by('executed')))
    output['queue']['most-recent-executed'] = data_link(get_first(
        Job.objects.exclude(executed=None).order_by('-executed')))

    output['queue']['remaining'] = Job.objects.filter(
        executed=None, cancelled=None).count()
    # output['queue']['remaining-details'] = \
    #     get_grouped_aggregate(
    #         jobs_type='done',
    #         complement=True)

    output['queue']['not-executed'] = \
        Job.objects.filter(executed=None, cancelled__isnull=True).count()
    output['queue']['not-executed-details'] = \
        get_not_exeuted_details()

    output['queue']['cancelled'] = \
        Job.objects.filter(cancelled__isnull=False).count()
    output['queue']['oldest-cancelled'] = data_link(get_first(
        Job.objects.exclude(cancelled=None).order_by('cancelled')))
    output['queue']['most-recent-cancelled'] = data_link(get_first(
        Job.objects.exclude(cancelled=None).order_by('-cancelled')))
    output['queue']['cancelled-details'] = \
        get_grouped_aggregate(jobs_type='cancelled', complement=True)

    output['queue']['estimated-completion-current-job'] = \
        estimate_current_job_completion()
    output['queue']['estimated-completion'] = estimation_fn()

    output['errors']['number'] = Error.objects.all().count()
    return output
def hal_instance_list(operation, control, builder, query_set, page_size=10):
    """Return a page of JSON-HAL based results across the query set.
    """
    from slumber import data_link
    starter = control.get('lpk', None)
    if starter:
        query_set = query_set.filter(pk__lt=starter)
    lpk = None
    for instance in query_set.order_by('-pk').iterator():
        if page_size == 0:
            builder.add_link('next', operation(lpk=lpk))
            return
        else:
            page_size -= 1
            lpk = instance.pk
            item = Builder(data_link(instance))
            item.set_property('display', unicode(instance))
            builder.embed('page', item)
Example #4
0
def hal_instance_list(operation, control, builder, query_set, page_size=10):
    """Return a page of JSON-HAL based results across the query set.
    """
    from slumber import data_link
    starter = control.get('lpk', None)
    if starter:
        query_set = query_set.filter(pk__lt=starter)
    lpk = None
    for instance in query_set.order_by('-pk').iterator():
        if page_size == 0:
            builder.add_link('next', operation(lpk=lpk))
            return
        else:
            page_size -= 1
            lpk = instance.pk
            item = Builder(data_link(instance))
            item.set_property('display', unicode(instance))
            builder.embed('page', item)
Example #5
0
 def test_data_link(self):
     shop = Shop.objects.create(name="Test Cafe")
     self.assertEqual(data_link(shop), '/slumber/pizzas/shop/%s/' % shop.pk)
Example #6
0
 def test_data_link(self):
     pizza = Pizza.objects.create(name="Test pizza")
     self.assertEqual(data_link(pizza),
                      '/slumber/slumber_examples/Pizza/data/%s/' % pizza.pk)
 def check_pizzas(self, pizzas):
     base = from_slumber_scheme('slumber://pizza/slumber_examples/Pizza/')
     urls = [urljoin(base, data_link(p)) for p in pizzas]
     self.assertEquals(set(urls), self.URLS)
Example #8
0
 def check_pizzas(self, pizzas):
     base = from_slumber_scheme('slumber://pizza/slumber_examples/Pizza/')
     urls = [urljoin(base, data_link(p)) for p in pizzas]
     self.assertEquals(set(urls), self.URLS)
Example #9
0
 def test_data_link(self):
     shop = Shop.objects.create(name="Test Cafe")
     self.assertEqual(data_link(shop), '/slumber/pizzas/shop/%s/' % shop.pk)
Example #10
0
 def test_data_link(self):
     pizza = Pizza.objects.create(name="Test pizza")
     self.assertEqual(data_link(pizza),
         '/slumber/slumber_examples/Pizza/data/%s/' % pizza.pk)
Example #11
0
 def test_empty_data_link(self):
     self.assertIsNone(data_link(None))