Example #1
0
def show_info(result, parser, options):
    """Print a list of all extensions, loggers etc"""
    dm = model.get_doc_model()
    print "Database:"
    info = yield dm.db.infoDB()
    fmt = "  %(doc_count)d docs total, %(doc_del_count)d deleted, " "update seq at %(update_seq)d, %(disk_size)d bytes."
    print fmt % info
    # ouch - this seems a painful way of fetching total unique keys?
    results = yield dm.open_view(
        startkey=["rd.core.content", "key"], endkey=["rd.core.content", "key", {}], group_level=3
    )
    print "  %d unique raindrop keys" % len(results["rows"])

    print "Document counts by schema:"
    results = yield dm.open_view(
        startkey=["rd.core.content", "schema_id"], endkey=["rd.core.content", "schema_id", {}], group_level=3
    )
    infos = []
    for row in results["rows"]:
        sch_id = row["key"][-1]
        infos.append((sch_id, row["value"]))
    for sch_id, count in sorted(infos):
        print "  %s: %d" % (sch_id, count)
    print

    print "Raindrop extensions:"
    exts = sorted((yield pipeline.load_extensions(dm)).items())  # sort by ID.
    for _, ext in exts:
        print "  %s: %s" % (ext.id, ext.doc["info"])
    print
    print "Loggers"
    # yuck - reach into impl - and hope all have been initialized by now
    # (they should have been as we loaded the extensions above)
    for name in logging.Logger.manager.loggerDict:
        print " ", name
Example #2
0
def make_graph(dm, filename="pipeline.svg", prog="dot"):    
    G=pgv.AGraph()
    G.graph_attr['label']='raindrop message pipeline'

    sources = yield get_raw_sources(dm)
    for ext_id, schemas in sources.iteritems():
        label = "%s" % (ext_id,)
        for sid in schemas:
            print ext_id, "is a source of", sid
            G.add_edge("the intertubez", sid, label=label)
    
    exts = yield pipeline.load_extensions(dm)    
    for ext_id, ext in exts.iteritems():
        for sid in ext.source_schemas:
            label = "%s" % (ext_id,)
            target_types = yield get_schemas_created_by(dm, ext_id)
            for tt in target_types:
                G.add_edge(sid, tt, label=label)
    G.draw(filename, prog=prog)
Example #3
0
    
    print "Document counts by schema:"
    results = dm.open_view(
                startkey=["schema_id"],
                endkey=["schema_id", {}],
                group_level=2)
    infos = []
    for row in results['rows']:
        sch_id = row['key'][-1]
        infos.append((sch_id, row['value']))
    for sch_id, count in sorted(infos):
        print "  %s: %d" % (sch_id, count)
    print

    print "Raindrop extensions:"
    exts = sorted((pipeline.load_extensions(dm)).items()) # sort by ID.
    for _, ext in exts:
        print "  %s: %s" % (ext.id, ext.doc['info'])
    print
    print "Loggers"
    # yuck - reach into impl - and hope all have been initialized by now
    # (they should have been as we loaded the extensions above)
    for name in logging.Logger.manager.loggerDict:
        print " ", name

def _safe_run(fn, *args):
    try:
        fn(*args)
    except Exception:
        logger.exception("%r failed", fn)