def setup(dbhost='localhost', dbport=7474, dburl=None, querypath=None): ''' Program to set up for running our REST server. We do these things: - Attach to the database - Initialize our type objects so things like ClientQuery will work... - Load the queries into the database from flat files Not sure if doing this here makes the best sense, but it works, and currently we're the only one who cares about them so it seems reasonable -- at the moment ;-) Also we're most likely to iterate changing on those relating to the REST server, so fixing them just by restarting the REST server seems to make a lot of sense (at the moment) - Remember the set of queries in the 'allqueries' hash table ''' if dburl is None: dburl = ('http://%s:%d/db/data/' % (dbhost, dbport)) print >> sys.stderr, 'CREATING Graph("%s")' % dburl neodb = neo4j.Graph(dburl) qstore = Store(neodb, None, None) print GraphNode.classmap for classname in GraphNode.classmap: GraphNode.initclasstypeobj(qstore, classname) print "LOADING TREE!" if querypath is None: querypath = "/home/alanr/monitor/src/queries" queries = ClientQuery.load_tree(qstore, querypath) for q in queries: allqueries[q.queryname] = q qstore.commit() for q in allqueries: allqueries[q].bind_store(qstore)
def execute(store, executor_context, otherargs, flagoptions): 'Load queries from the specified directory.' executor_context = executor_context flagoptions = flagoptions if len(otherargs) > 1: return usage() elif len(otherargs) == 1: querydir = otherargs[0] else: querydir = QUERYINSTALL_DIR qcount = 0 for q in ClientQuery.load_tree(store, querydir): qcount += 1 q = q store.commit() return 0 if qcount > 0 else 1