def cmd_update_node(cparams): try: ut.log('In cmd_update_node:', cparams) if 'nid' not in cparams: raise Exception('nid is required to update') if 'type' not in cparams or cparams['type'] is None: cparams['type'] = 'th' if 'zone' not in cparams or cparams['zone'] is None: cparams['zone'] = 'std' if checkKwds(cparams): kwds_str = cparams['kwds'] kwds = kwds_str.split(',') del cparams['kwds'] cparams['kwds'] = kwds if checkMarkers(cparams): m_str = cparams['markers'] m = m_str.split(',') del cparams['markers'] cparams['markers'] = m # Expects nid to update mresp = mongo.update(cparams) #ut.log(mresp[1]) if mresp[0] is True: return {'err': True, 'msg': '[MONGO CLIENT EXCEPTION]' + mresp[1]} else: # No need to inser to Neo return {'val': 'SUCCESS'} except Exception as e: return {'err': True, 'msg': str(e)}
def cmd_find_by(cparams): ut.log('In cmd_find_by:', cparams) """ limit = 100 if cparams is not None and 'limit' in cparams: limit = cparams['limit'] resp = neo.select_all(int(limit)) p_resp = parse_neo_resp_list(resp) """ if checkKwds(cparams): kwds_str = cparams['kwds'] kwds = kwds_str.split(',') del cparams['kwds'] cparams['kwds'] = {'$in': kwds} if checkMarkers(cparams): kwds_str = cparams['markers'] kwds = kwds_str.split(',') del cparams['markers'] cparams['markers'] = {'$in': kwds} ut.log(cparams) resp = mongo.read(cparams) if resp[0] is True: return {'err': True, 'msg': resp[1]} else: flist = [] for ritem in resp[1]: ritem['nid'] = str(ritem['_id']) del ritem['_id'] flist.append(ritem) return {'list': flist}
def run(): context = ('thea/core/ssl_cert/server.crt', 'thea/core/ssl_cert/server.key') ut.log('Started THEA server') str = """ o o \__/,'`.,'`._, /,-. \ / <_, > - )/ / <_, \__,/ / ,' _/_(_/______/__ ( (_ ,,--'---^,\\ ___/ \ / ___,' /,---' \\ \_ `. ` / `. \\ | thea \_ \\ |/\/\/\| `. \\ \ | /\ `.`. \( /\ \ `.`. | \ `.`._, `-\_, | /| `-' |/\( |(_\\_ | / \ ( /_/ \_\\ """ ut.log(str) app.run(port=3737, ssl_context=context, threaded=True, debug=False)
def cmd_create_node(cparams): try: ut.log('In cmd_create_node:', cparams) # cparams['nid'] = gen_uuid() if 'type' not in cparams or cparams['type'] is None: cparams['type'] = 'th' if 'zone' not in cparams or cparams['zone'] is None: cparams['zone'] = 'std' if checkKwds(cparams): kwds_str = cparams['kwds'] kwds = kwds_str.split(',') del cparams['kwds'] cparams['kwds'] = kwds if checkMarkers(cparams): m_str = cparams['markers'] m = m_str.split(',') del cparams['markers'] cparams['markers'] = m # MONGO INSERT mresp = mongo.insert(cparams) if mresp[0] is True: return {'err': True, 'msg': '[MONGO CLIENT EXCEPTION]' + mresp[1]} else: neorec = {'nid': str(mresp[1].inserted_id)} # NEO INSERT resp = neo.insert_node(neorec) #if resp[0] != 0: # raise Exception(str(resp)) return {'val': str(mresp[1].inserted_id)} except Exception as e: return {'err': True, 'msg': str(e)}
def delete_all(): try: db.mnet.remove({}) #ut.log('\nDeletion successful\n') return False, None except Exception as e: ut.log(str(e)) return True, str(e)
def delete_one(cparams): try: resp = db.mnet.delete_one({"_id": ObjectId(cparams['nid'])}) #ut.log('\nDeletion successful\n') return False, resp except Exception as e: ut.log(str(e)) return True, str(e)
def insert(cparams): try: resp = db.mnet.insert_one(cparams) #ut.log('\n[MONGO_CLIENT] Inserted data successfully\n') return False, resp except Exception as e: ut.log(str(e)) return True, str(e)
def find(self, **params): ut.log('In g.find()') resp = cm.cmd_find_by(params) nlist = [] for rec in resp['list']: nd = Node(e=True) nd.dat = rec nlist.append(nd) return nlist
def cmd_delete_all(cparams): try: ut.log('In cmd_delete_all:', cparams) neo.delete_all() mresp = mongo.delete_all() return {'val': "SUCCESS"} except Exception as e: return {'err': True, 'msg': str(e)}
def update(cparams): try: nid = cparams['nid'] del cparams['nid'] db.mnet.update_one({"_id": ObjectId(nid)}, {"$set": cparams}) #ut.log("\nRecords updated successfully\n") return False, None except Exception as e: ut.log(str(e)) return True, str(e)
def cmd_delete_node(cparams): ut.log('In cmd_delete_one:', cparams) neo.delete_by_nid(cparams['nid']) #if nresp[0] != 0: # raise Exception(str(nresp)) mresp = mongo.delete_one(cparams) if mresp[0] is True: return {'err': True, 'msg': mresp[1]} else: return {'val': str(mresp[1].deleted_count)}
def commandBus(): try: resp = dict(state=0, err=False) body = request.get_json() code = "resp ['data']=" + body['cmd'] ut.log("Executing->", code) exec(code) except Exception as ex: ut.log('Error in commandBus: ', ex) resp = {"err": True, "msg": str(ex)} return jsonify(resp)
def cmd_create_conn(cparams): try: ctype = 'std' st = 50 if 'type' in cparams and cparams['type'] is not None: ctype = cparams['type'] if 'st' in cparams: st = cparams['st'] resp = neo.insert_rel_by_nid(cparams['src'], cparams['dest'], st, ctype, 1) ut.log(resp) return {'val': resp} except Exception as e: return {'err': True, 'msg': str(e)}
def read_multi_by_nid(cparams): try: obj_id_list = [] for nid in cparams: obj_id_list.append(ObjectId(nid)) rlist = [] recs = db.mnet.find({"_id": {"$in": obj_id_list}}) for rec in recs: rlist.append(rec) return False, rlist except Exception as e: ut.log(str(e)) return True, str(e)
def read(cparams): try: if cparams is not None and 'nid' in cparams: id = cparams['nid'] del cparams['nid'] cparams['_id'] = ObjectId(id) rlist = [] recs = db.mnet.find(cparams) for rec in recs: rlist.append(rec) return False, rlist except Exception as e: ut.log(str(e)) return True, str(e)
def cmd_find_all(cparams=None): ut.log('In cmd_fetch_all:', cparams) """ limit = 100 if cparams is not None and 'limit' in cparams: limit = cparams['limit'] resp = neo.select_all(int(limit)) p_resp = parse_neo_resp_list(resp) """ resp = mongo.read(cparams) if resp[0] is True: return {'err': True, 'msg': resp[1]} else: flist = [] for r in resp[1]: r['nid'] = str(r['_id']) del r['_id'] flist.append(r) return {'list': flist}
from pymongo import MongoClient from bson.objectid import ObjectId import thea.core.utils as ut import os server_host = '192.168.1.119' if os.environ[ 'thea_server'] is None else os.environ['thea_server'] MONGO_HOST = '{}:27017'.format(server_host) # creating connections for communicating with Mongo DB ut.log('Connecting to MongoDB at {}'.format(MONGO_HOST)) client = MongoClient(MONGO_HOST) ut.log('Connected to MongoDB') db = client.MnetPioneer # Function to insert data into mongo db def insert(cparams): try: resp = db.mnet.insert_one(cparams) #ut.log('\n[MONGO_CLIENT] Inserted data successfully\n') return False, resp except Exception as e: ut.log(str(e)) return True, str(e) # Function to update record to mongo db def update(cparams): try: nid = cparams['nid']
def delete_all(self): ut.log('delete_all') return cm.cmd_delete_all(None)
def __init__(self, **params): ut.log('Graph object initialized') super().__init__(**params)
def log(self): ut.log(self.__repr__()) return self
from neo4j.v1 import GraphDatabase import thea.core.utils as ut """ refer: https://neo4j.com/docs/api/python-driver/current/ """ # password = os.getenv("NEO4J_PASSWORD") import os server_host = '192.168.1.119' if os.environ[ 'thea_server'] is None else os.environ['thea_server'] NEO_URL = 'bolt://{}'.format(server_host) ut.log('Connecting to Neo4j at {}'.format(NEO_URL)) driver = GraphDatabase.driver(NEO_URL) ut.log('Connected to Neo4j') class GraphDb: def __init__(self): self.sess = driver.session() def fire_cypher_single(self, cyp, params): r = self.sess.run(cyp, params) rec = r.single() if rec is None: raise Exception("Unexpected result None.") dic = {} for kv in rec[0].items(): dic[kv[0]] = kv[1] return dic def fire_cypher_multi(self, cyp, params):