Ejemplo n.º 1
0
def infer_schema(namespace, stream):
    now = epoch_time_to_kronos_time(time.time())
    backend, configuration = router.backend_to_retrieve(namespace, stream)
    events = backend.retrieve(namespace, stream, 0, now, None, configuration, order=ResultOrder.DESCENDING, limit=100)
    schema_type = NullType()
    for event in events:
        schema_type = schema_type.combine(get_schema_type(marshal.loads(event)))
    schema = schema_type.to_dict()
    schema["$schema"] = "http://json-schema.org/draft-04/schema"
    return schema
Ejemplo n.º 2
0
def infer_schema(namespace, stream):
    now = epoch_time_to_kronos_time(time.time())
    backend, configuration = router.backend_to_retrieve(namespace, stream)
    events = backend.retrieve(namespace,
                              stream,
                              0,
                              now,
                              None,
                              configuration,
                              order=ResultOrder.DESCENDING,
                              limit=100)
    schema_type = NullType()
    for event in events:
        schema_type = schema_type.combine(get_schema_type(
            marshal.loads(event)))
    schema = schema_type.to_dict()
    schema['$schema'] = 'http://json-schema.org/draft-04/schema'
    return schema
Ejemplo n.º 3
0
    stream = request_json['stream']
    validate_stream(stream)
  except Exception, e:
    log.exception('get_events: stream validation failed for `%s`',
                  request_json.get('stream'))
    start_response('400 Bad Request', headers)
    yield marshal.dumps({ERRORS_FIELD: [repr(e)],
                         SUCCESS_FIELD: False})
    return

  namespace = request_json.get('namespace', settings.default_namespace)
  limit = int(request_json.get('limit', MAX_LIMIT))
  if limit <= 0:
    events = []
  else:
    backend, configuration = router.backend_to_retrieve(namespace, stream)
    events = backend.retrieve(
      namespace,
      stream,
      long(request_json.get('start_time', 0)),
      long(request_json['end_time']),
      request_json.get('start_id'),
      configuration,
      order=request_json.get('order', ResultOrder.ASCENDING),
      limit=limit)

  start_response('200 OK', headers)

  string_buffer = StringIO()
  for event in events:
    # TODO(usmanm): Once all backends start respecting limit, remove this check.
Ejemplo n.º 4
0
    try:
        stream = request_json['stream']
        validate_stream(stream)
    except Exception, e:
        log.exception('get_events: stream validation failed for `%s`',
                      request_json.get('stream'))
        start_response('400 Bad Request', headers)
        yield marshal.dumps({ERRORS_FIELD: [repr(e)], SUCCESS_FIELD: False})
        return

    namespace = request_json.get('namespace', settings.default_namespace)
    limit = int(request_json.get('limit', MAX_LIMIT))
    if limit <= 0:
        events = []
    else:
        backend, configuration = router.backend_to_retrieve(namespace, stream)
        events = backend.retrieve(namespace,
                                  stream,
                                  long(request_json.get('start_time', 0)),
                                  long(request_json['end_time']),
                                  request_json.get('start_id'),
                                  configuration,
                                  order=request_json.get(
                                      'order', ResultOrder.ASCENDING),
                                  limit=limit)

    start_response('200 OK', headers)

    string_buffer = StringIO()
    for event in events:
        # TODO(usmanm): Once all backends start respecting limit, remove this check.