Exemplo n.º 1
0
def redis_init(client):
    sqls_user = """select `ep_id`, `level_id`, `vsp_id` from adjacency"""
    res_user = db.execFetch(sqls_user)
    for ep, ep_level, ep_vsp in res_user:
        client.hmset("user:%s" % ep, {"level_id": ep_level, "vsp_id": ep_vsp})

    sqls_sys = """select `lr_id`, `level_id`, `sysload`, `ip`, `port`, `lr_type` from lr_node"""
    res_sys = db.execFetch(sqls_sys)
    for lr, level, sysload, ip, port, lr_type in res_sys:
        #  client.set("lrid:%s:%s"%(level,lr), sysload)
        client.hmset("lrid:%s:%s" % (level, lr), {
            "sysload": sysload,
            "ip": ip,
            "port": port,
            "lr_type": lr_type
        })

    sqls_qos = """select `level_src`,`level_dst`,`weight`,`layer_distance`,`path` from net_qos"""
    res_qos = db.execFetch(sqls_qos)
    for src, dst, weight, layer_distance, path in res_qos:
        client.hmset("qos:%s:%s" % (src, dst), {
            "weight": weight,
            "layer_distance": layer_distance,
            "path": path
        })
Exemplo n.º 2
0
 def delLrnode(self):
     # 删除LR记录
     sql_6 = """delete from lr_node where lr_id='%s'""" % self.lr_id
     db.execFetch(sql_6)
     level_id_res = redis_client.keys("lr:*:%s" % self.lr_id)
     if len(level_id_res) == 0:
         level_id = None
         self.logger.warn("Not found level_id by lr_id [%s]" % self.lr_id)
     else:
         level_id = level_id_res[0].split(":")[1]
     if level_id:
         #  sql_check = """select lr_id from lr_node where level_id='%s'""" % level_id
         #  result = db.execFetch(sql_check)
         result = redis_client.keys("lr:%s:*" % level_id)
         #  print "*"*20
         level_cluster, _ = write_level(level_id)
         redis_client.hset("level:%s" % level_id, "level_cluster",
                           level_cluster)
         if len(result) <= 1:
             sql_delete = """delete from `level_node` where `level_id`='%s'""" % level_id
             db.execOnly(sql_delete)
             redis_client.delete("level:%s" % level_id)
             reset_ancestors()
     self.logger.info("Del lr_node with lrid=%s success." % level_id)
     return {"code": 200, "status": "success"}
Exemplo n.º 3
0
def setMembership(level_id, plevel_id):
    sqls = """select count(*) from `level_node` where `level_id`='%s'""" % level_id
    sqli = """insert into level_node (`level_id`, `plevel_id`) values ('%s', '%s')""" % (
        level_id, plevel_id)
    count = db.execFetch(sqls)[0][0]
    #  print level_id, plevel_id, type(count)
    if count == 0:
        db.execFetch(sqli)
        return True
    else:
        return False
Exemplo n.º 4
0
 def delLrnode(self):
     #  sql_1 = """select `lr_id`,`plr_id` from `lr_node` where `plr_id` REGEXP '%s'"""%self.lr_id
     #  sql_3 = """select `plr_id` from `lr_node` where `lr_id`='%s'"""%self.lr_id
     #  # 更新以本身为父层的LR记录
     #  res = db.execFetch(sql_1)
     #  if len(res) > 0:
     #  for node in res:
     #  lrid = node[0]
     #  plrid = eval(node[1])
     #  plrid.remove(self.lr_id)
     #  if len(plrid) == 0:
     #  ret = db.execFetch(sql_3)[0][0]
     #  new_plr = ret
     #  else: new_plr = str(plrid)
     #  self.logger.info("update lr_node -> lrid : %s, parent_lr: %s"%(lrid, new_plr))
     #  sql_2 = """update `lr_node` set `plr_id`="%s" where `lr_id`='%s'"""%(new_plr, lrid)
     #  db.execOnly(sql_2)
     #  # 更新以本身为LR的用户记录
     #  sql_4 = """select `ep_id`,`lr_id` from `adjacency` where lr_id REGEXP '%s'"""%self.lr_id
     #  res = db.execFetch(sql_4)
     #  if len(res) > 0:
     #  for user in res:
     #  userid = user[0]
     #  userlr = eval(user[1])
     #  userlr.remove(self.lr_id)
     #  if len(userlr) == 0:
     #  new_userlr = db.execFetch(sql_3)[0][0]
     #  else: new_userlr = str(userlr)
     #  self.logger.info("update user table -> ep_id: %s, lr_id: %s"%(userid, new_userlr))
     #  sql_5 = """update `adjacency` set `lr_id`="%s" where `ep_id`='%s'"""%(new_userlr, userid)
     #  db.execOnly(sql_5)
     # 删除LR记录
     sql_6 = """delete from lr_node where lr_id='%s'""" % self.lr_id
     sql_s = """select `level_id` from lr_node where `lr_id`='%s'""" % self.lr_id
     level_id_res = db.execFetch(sql_s)
     if len(level_id_res) == 0:
         level_id = None
         self.logger.warn("Not found level_id by lr_id [%s]" % self.lr_id)
     else:
         level_id = level_id_res[0][0]
     #  res = db.execFetch(sql_6)
     #  if res > 0:
     if level_id:
         sql_check = """select lr_id from lr_node where level_id='%s'""" % level_id
         result = db.execFetch(sql_check)
         if len(result) <= 1:
             sql_delete = """delete from `level_node` where `level_id`='%s'""" % level_id
             db.execOnly(sql_delete)
             netqos = netQos(level_id)
             netqos.lrDel()
     db.execFetch(sql_6)
     self.logger.info("Del lr_node with lrid=%s success." % level_id)
     return {"code": 200, "status": "success"}
Exemplo n.º 5
0
def redis_save(client):
    logger = logging.getLogger("nc")
    lr_sysload_list = client.keys("lrid:*")
    sqlu_sys = """update lr_node set `sysload` = CASE `lr_id` """
    sqlu_time = """update lr_node set `last_subtime` = CASE `lr_id` """
    sqlu_active = """update lr_node set `active` = CASE `lr_id` """
    for lr in lr_sysload_list:
        sysload, last_subtime, active = client.hmget(lr, "sysload",
                                                     "last_subtime", "active")
        sqlu_sys += "WHEN '%s' THEN '%s' " % (lr.split(":")[2], sysload)
        sqlu_time += "WHEN '%s' THEN '%s'" % (lr.split(":")[2], last_subtime)
        sqlu_active += "WHEN '%s' THEN '%s'" % (lr.split(":")[2], active)
    sqlu_sys += "END"
    sqlu_time += "END"
    sqlu_active += "END"
    db.execFetch(sqlu_sys)
    db.execFetch(sqlu_time)
    db.execFetch(sqlu_active)

    qos_list = client.keys("qos:*")
    sqlu_qos = """update net_qos set `path` = CASE """
    for qos in qos_list:
        qos_src = qos.split(":")[1]
        qos_dst = qos.split(":")[2]
        path = float(client.hget(qos, "path"))
        sqlu_qos += """WHEN `level_src`='%s' AND `level_dst`='%s' THEN %f """ % (
            qos_src, qos_dst, path)
    sqlu_qos += "END"
    db.execFetch(sqlu_qos)
    #  print sqlu_qos
    logger.info("Successfully save the redis data to mysql.")
Exemplo n.º 6
0
def getPlevel(level):
    sql = """select plevel_id from level_node where level_id='%s'""" % level
    res = db.execFetch(sql)
    if res:
        return res[0][0]
    else:
        return None
Exemplo n.º 7
0
    def randomLr(self, name="level"):
        """ 返回当前lrcluster内sysload最低的lr """
        #  if name == "level":
        #  sqls = """select `lr_id` from `lr_node` where `level_id`='%s' order by `sysload` limit 1""" % self.lrcid
        #  res = db.execFetch(sqls)
        #  if len(res) == 0: return None
        #  lrid = res[0][0]
        #  # for redis
        if name == "level":
            lr_list = redis_client.keys("lrid:%s:*" % self.lrcid)
            if not lr_list: return None
            best_lr = lr_list[0]
            for lr in lr_list:
                sysload = redis_client.hget(lr, "sysload")
                active = redis_client.hget(lr, "active")
                if sysload < redis_client.hget(best_lr,
                                               "sysload") and active == '1':
                    best_lr = lr
            lrid = best_lr.split(":")[2]

        else:
            lr_list = []
            sqls = """ select `lr_id`,`lrc_ids`, `sysload` from `lr_node` where `lrc_id`!='[]'"""  # order by `sysload` limit 1""" % self.lrcid
            res = db.execFetch(sqls)
            if len(res) == 0: return None
            for lr in res:
                lrc_ids = eval(lr[1])
                if self.lrcid in lrc_ids:
                    lr_list.append({"lrid": lr[0], "sysload": lr[2]})
            lr_list.sort(key=lambda x: (x["sysload"]))
            lrid = lr_list[0]["lrid"]
        return lrid
Exemplo n.º 8
0
def getAlllevel():
    sqls = """select `level_id` from `level_node`"""
    level_list = []
    res = db.execFetch(sqls)
    for level in res:
        level_list.append(level[0])
    return level_list
Exemplo n.º 9
0
def getRootlevel():
    ''' 获取根LR列表 '''
    sqls = """select distinct level_id from level_node where plevel_id='0'"""
    res = db.execFetch(sqls)
    reslist = []
    for level in res:
        reslist.append(level[0])
    return reslist
Exemplo n.º 10
0
 def getCluster(self):
     sqls = """select `lrc_id`, `lrg_ids` from lr_cluster """
     lrc_list = []
     res = db.execFetch(sqls)
     for lrc in res:
         lrg_ids = eval(lrc[1])
         if self.lrgid in lrg_ids: lrc_list.append(lrc[0])
     return lrc_list
Exemplo n.º 11
0
def check_lrg(lrgid, lrgname, vspid):
    sqls = """select * from `lr_grid` where `lrg_id`='%s'""" % lrgid
    res = db.execFetch(sqls)
    if len(res) == 0:
        sqli = """insert into `lr_grid` (`lrg_id`, `lrg_name`, `vsp_id`) values ('%s', '%s', '%s')""" % (
            lrgid, lrgname, vspid)
        db.execOnly(sqli)
        return True
    return False
Exemplo n.º 12
0
def getDescendant(level_id, reslist=[]):
    ''' 递归获取指定LR的子层LR '''
    sqls = """select distinct level_id from lr_node where plevel_id='%s'""" % level_id
    res = db.execFetch(sqls)
    if len(res) == 0: return reslist
    for i in range(len(res)):
        lr = res[i][0]
        if lr not in reslist: reslist.append(lr)
        if i == len(res) - 1: return getDescendant(lr, reslist)
        else: reslist = getDescendant(lr, reslist)
Exemplo n.º 13
0
def detectForce(account):
    """ 检测帐号是否有指定LR """
    sqls = """select `lr_id` from `force_route` where `account`='%s'""" % account
    #  sql_id = """select `lr_id` from `lr_node` where `ip`='%s' and port='%s'"""
    rows = db.execFetch(sqls)
    if len(rows) > 0:
        lrid = rows[0][0]
        return {"statu": True, "lrid": lrid}
    else:
        return {"statu": False}
Exemplo n.º 14
0
 def getAlllr(self):
     sqls = """ select `lr_id` from `lr_node` where `level_id`='%s'""" % self.lrcid
     res = db.execFetch(sqls)
     if len(res) == 0:
         return None
     lr_list = []
     count = len(res)
     for lr in res:
         lr_list.append(lr[0])
     return {"count": count, "lr_list": lr_list}
Exemplo n.º 15
0
 def getDstlist(self):
     sqls = """select lr_id from lr_node"""
     lr_dst_list = []
     res = db.execFetch(sqls)
     if len(res) == 0:
         self.logger.error("lr_node table empty.")
         sys.exit(0)
     for record in res:
         lr_dst_list.append(record[0])
     lr_dst_list.remove(self.lr_id)
     return lr_dst_list
Exemplo n.º 16
0
 def addLrnode(self, sql_data):
     sqli = """insert into lr_node (`lr_id`, `name`, `plevel_id`, `ip`, `port`, `operator`, `cloud`, `price`, `lr_type`, `sysload`, `lrc_ids`, `level_id`, `last_subtime`) values ( "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", %s, "%s", "%s", %s)""" % sql_data
     try:
         res = db.execOnly(sqli)
     except:
         res = 0
     plevel_id = sql_data[2]
     level_id = sql_data[-2]
     if res > 0:
         sql_select = """select `level_id` from `level_node`"""
         level_list = [x[0] for x in db.execFetch(sql_select)]
         if level_id not in level_list:
             sql_1 = """insert into level_node (`level_id`, `plevel_id`) values ('%s', '%s')""" % (
                 level_id, plevel_id)
             db.execOnly(sql_1)
             netqos = netQos(level_id)
             ret = netqos.lrAddall()
             if ret > 0:
                 self.logger.info("Add lr_node with lrid=%s done." %
                                  self.lr_id)
                 return {
                     "code": 200,
                     "status": "success",
                     "msg": "Add lr_node with lrid=%s done." % self.lr_id
                 }
             else:
                 self.logger.error(
                     "Add lr_node with lrid=%s fail, on update table netqos."
                     % self.lr_id)
                 return {
                     "code":
                     400,
                     "status":
                     "failed",
                     "msg":
                     "Add lr_node with lrid=%s fail, on update table netqos."
                     % self.lr_id
                 }
         else:
             self.logger.info("Add lr_node success, level_id exists.")
             return {
                 "code": 200,
                 "status": "success",
                 "msg": "Add lr_node success, level_id exists."
             }
     else:
         self.logger.error("Add lr_node with lrid=%s failed." % self.lr_id)
         return {
             "code": 400,
             "status": "exist",
             "msg": "Add lr_node with lrid=%s failed." % self.lr_id
         }
Exemplo n.º 17
0
def getAncestor(level_id, reslist=[]):
    ''' 递归获取指定LR的父层LR '''
    sqls = """select `plevel_id`,`lr_type` from lr_node where `level_id`='%s' """ % level_id
    while True:
        sql_result = db.execFetch(sqls)
        #  print sql_result
        if len(
                sql_result
        ) == 0:  # or sql_result[0][1] == 'lr': # or sql_result[0][0] == '0':
            if reslist: return reslist[:-1]
            else: return reslist
        else:
            reslist.append(sql_result[0][0])
            return getAncestor(sql_result[0][0], reslist)
Exemplo n.º 18
0
def redis_init(client):
    # 初始化用户信息,string 格式:userid:xxxxxx "level_id"
    sqls_user = """select `ep_id`, `level_id` from adjacency"""
    res_user = db.execFetch(sqls_user)
    for user in res_user:
        user_id, user_level = user
        client.set("user:%s"%user_id, user_level)

    # 初始化lr信息,hash 格式:lrid:level_id:xxxxxx {"lr_type": "dlr", "ip": "10.x.x.x", "port": "900x", "sysload": 0, "last_subtime": "1509840xxx", "active": 1}
    sqls_lr = """select `lr_id`, `level_id`, `lr_type`, `ip`, `port`, `cluster`, `sysload`, `last_subtime`, `active` from lr_node"""
    res_lr = db.execFetch(sqls_lr)
    for lr in res_lr:
        lr_id, level_id, lr_type, ip, port, cluster, sysload, last_subtime, active = lr
        client.hmset("lr:%s:%s"%(level_id, lr_id), {"sysload": sysload, "ip": ip, "port": port, "cluster": cluster, "lr_type": lr_type, "last_subtime": last_subtime, "active": active})

    # 初始化level信息,hash 格式:level:xxxxxx {"plevel_id": "xxx", "level_cluster": "xxx", "level_type": "xxx"}
    sqls_level = """select `level_id`,`level_cluster`,`plevel_id`,`level_type` from level_node"""
    res_level = db.execFetch(sqls_level)
    for level in res_level:
        level_id, level_cluster, plevel_id, level_type = level
        client.hmset("level:%s"%level_id, {"level_cluster": level_cluster, "plevel_id": plevel_id, "level_type": level_type})

    # 初始化每个level的递归父层,list 格式:ancestors:xxx ['xxx', 'xxxxx', 'xxxxx']
    reset_ancestors()
Exemplo n.º 19
0
 def delCluster(self):
     sqld = """delete from `lr_cluster` where `lrc_id`='%s'""" % self.lrcid
     ret = db.execOnly(sqld)
     if ret:
         self.logger.info("Delete lr_cluster [%s] success." % self.lrcid)
     else:
         self.logger.error("Delete lr_cluster[%s] failed." % self.lrcid)
     sqls = """ select `lr_id`,`lrc_ids` from `lr_node` where `lrc_ids`!='[]'"""
     res = db.execFetch(sqls)
     sqlu = """update `lr_node` set `lrc_ids`="%s" where `lr_id`='%s'"""
     for lr in res:
         lrc_ids = eval(lr[1])
         if self.lrcid in lrc_ids:
             lrc_ids.remove(self.lrcid)
             db.execOnly(sqlu % (str(lrc_ids), lr[0]))
     return True
Exemplo n.º 20
0
 def delGrid(self):
     sqld = """delete from lr_grid where `lrg_id`='%s'""" % self.lrgid
     ret = db.execOnly(sqld)
     if ret:
         self.logger.info("Delete lr_grid [%s] success." % self.lrgid)
     else:
         self.logger.error("Delete lr_grid [%s] failed." % self.lrgid)
     sqls = """select `lrc_id`,`lrg_ids` from lr_cluster"""
     res = db.execFetch(sqls)
     sqlu = """update `lr_cluster` set `lrg_ids`='%s' where `lrg_ids`='%s'"""
     for lrc in res:
         lrgs = eval(lrc[1])
         if self.lrgid in lrgs:
             lrgs.remove(self.lrgid)
             db.execOnly(sqlu % (str(lrgs), lrc[0]))
     return True
Exemplo n.º 21
0
    def modLrnode(self, sql_data, level_id, plevel_id, old_level, lrid):
        sqlu = """update lr_node set `name`="%s", `plevel_id`="%s", `ip`="%s", `port`="%s", `operator`="%s", `cloud`="%s", `price`="%s", `lr_type`="%s", `sysload`=%s, `lrc_ids`="%s", `level_id`='%s', `last_subtime`=%s  where `lr_id`='%s' """ % sql_data
        sqlu_1 = """update level_node set `plevel_id`='%s' where `level_id`='%s'""" % (
            plevel_id, level_id)
        sql_select = """select `level_id` from `level_node`"""
        level_list = [x[0] for x in db.execFetch(sql_select)]
        #  sql_parent = """select `plevel_id` from level_node where `level_id`='%s'"""%old_level
        #  old_parent_level = db.execFetch(sql_parent)[0][0]

        if level_id not in level_list:
            sql_1 = """insert into level_node (`level_id`, `plevel_id`) values ('%s', '%s')""" % (
                level_id, plevel_id)
            if old_level:
                sql_check = """select lr_id from lr_node where level_id='%s'""" % old_level
                result = db.execFetch(sql_check)
                if len(result) <= 1:
                    sql_s_old = """select `plevel_id` from level_node where `level_id`='%s'""" % old_level
                    sql_u_old = """update level_node set `plevel_id`='%s' where `plevel_id`='%s'"""
                    need_r = db.execFetch(sql_s_old)
                    if need_r:
                        db.execFetch(sql_u_old % (need_r[0][0], old_level))
                    sql_delete = """delete from `level_node` where `level_id`='%s'""" % old_level
                    db.execOnly(sql_delete)
                    netqos = netQos(old_level)
                    netqos.lrDel()
            db.execOnly(sql_1)
            netqos = netQos(level_id)
            ret = netqos.lrAddall()
            if ret > 0:
                self.logger.info("Add new level and qos for  lrid=%s done." %
                                 self.lr_id)
                #  return {"code": 200, "status": "success", "msg": "Add new level and qos for  lrid=%s done."%self.lr_id}
            else:
                self.logger.error(
                    "Add new level for lrid=%s fail, on update table netqos." %
                    self.lr_id)
                #  return {"code": 400, "status": "failed", "msg": "Add new level for lrid=%s fail, on update table netqos."%self.lr_id}
        else:
            if level_id != old_level:
                sql_check = """select lr_id from lr_node where level_id='%s'""" % old_level
                result = db.execFetch(sql_check)
                if len(result) <= 1:
                    sql_delete = """delete from `level_node` where `level_id`='%s'""" % old_level
                    db.execOnly(sql_delete)
                    netqos = netQos(old_level)
                    netqos.lrDel()
        #  print sqlu
        try:
            db.execOnly(sqlu_1)
            res = db.execOnly(sqlu)
        except Exception, e:
            #  print "**************",e
            res = 0
Exemplo n.º 22
0
    def getLrnode(self, all=False):
        if all:
            sqls = """select `lr_id`,`name`,`ip`,`port`,`plevel_id`,`operator`,`cloud`,`price`, `lr_type`,`sysload`, `level_id`, `lrc_ids` from `lr_node`"""
            res = db.execFetch(sqls)
            all_lr_list = []
            for record in res:
                all_lr_list.append({
                    "lrid": record[0],
                    "name": record[1],
                    "ip": record[2],
                    "port": record[3],
                    "plevel_id": record[4],
                    "operator": record[5],
                    "cloud": record[6],
                    "price": record[7],
                    "lr_type": record[8],
                    "sysload": record[9],
                    "level_id": record[10],
                    "lrc_id": record[11]
                })
            data = all_lr_list
        else:
            lr_list = redis_client.keys("lrid:*:%s" % self.lr_id)
            if not lr_list: return None
            lr = lr_list.pop()
            lr_ip, lr_port, lr_type = redis_client.hmget(
                lr, "ip", "port", "lr_type")
            data = {
                "lrid": self.lr_id,
                "ip": lr_ip,
                "port": lr_port,
                "lr_type": lr_type,
                "level_id": lr.split(":")[1]
            }

            #  sqls = """select `lr_id`,`name`,`ip`,`port`,`operator`,`cloud`,`price`,`lr_type`, `plevel_id`, `sysload`, `level_id`, `lrc_ids`  from lr_node where lr_id='%s'""" % self.lr_id
            #  res = db.execFetch(sqls)
            #  if len(res) != 0: data = {"lrid": res[0][0], "name": res[0][1], "ip": res[0][2], "port": res[0][3], "operator": res[0][4], "cloud": res[0][5], "price": res[0][6], "lr_type": res[0][7],  "plevel_id": res[0][8], "sysload": res[0][9], "level_id": res[0][10], "lrc_id": res[0][11]}
            #  else: data = nc_config.DEFAULT_LR
        return data
Exemplo n.º 23
0
 def getLrnode(self, all=False):
     if all:
         sqls = """select `lr_id`,`name`,`ip`,`port`,`plevel_id`,`cluster`,`cloud`,`price`, `lr_type`,`sysload`, `level_id`, `last_subtime`, `active` from `lr_node`"""
         res = db.execFetch(sqls)
         all_lr_list = []
         for record in res:
             all_lr_list.append({
                 "lrid": record[0],
                 "name": record[1],
                 "ip": record[2],
                 "port": record[3],
                 "plevel_id": record[4],
                 "cluster": record[5],
                 "cloud": record[6],
                 "price": record[7],
                 "lr_type": record[8],
                 "sysload": record[9],
                 "level_id": record[10],
                 "last_subtime": record[11],
                 "active": record[12]
             })
         data = all_lr_list
     else:
         lr_list = redis_client.keys("lr:*:%s" % self.lr_id)
         if not lr_list: return None
         lr = lr_list.pop()
         lr_ip, lr_port, lr_type, cluster, last_subtime, active = redis_client.hmget(
             lr, "ip", "port", "lr_type", "cluster", "last_subtime",
             "active")
         data = {
             "lrid": self.lr_id,
             "ip": lr_ip,
             "port": lr_port,
             "lr_type": lr_type,
             "level_id": lr.split(":")[1],
             "cluster": cluster,
             "last_subtime": last_subtime,
             "active": active
         }
     return data
Exemplo n.º 24
0
def redis_save(client):
    #  logger = logging.getLogger("nc")
    lr_sysload_list = client.keys("lr:*")
    sqlu_sys = """update lr_node set `sysload` = CASE `lr_id` """
    sqlu_time = """update lr_node set `last_subtime` = CASE `lr_id` """
    sqlu_active = """update lr_node set `active` = CASE `lr_id` """
    for lr in lr_sysload_list:
        sysload, last_subtime, active = client.hmget(lr, "sysload", "last_subtime", "active")
        sqlu_sys += "WHEN '%s' THEN '%s' "% (lr.split(":")[2], sysload)
        sqlu_time += "WHEN '%s' THEN '%s'"%(lr.split(":")[2], last_subtime)
        sqlu_active += "WHEN '%s' THEN '%s'"%(lr.split(":")[2], active)
    sqlu_sys += "END"
    sqlu_time += "END"
    sqlu_active += "END"
    db.execFetch(sqlu_sys)
    db.execFetch(sqlu_time)
    db.execFetch(sqlu_active)
Exemplo n.º 25
0
    def modLrnode(self, sql_data, level_id, plevel_id, old_level, lrid):
        sqlu = """update lr_node set `name`="%s", `plevel_id`="%s", `ip`="%s", `port`="%s", `cluster`="%s", `cloud`="%s", `price`="%s", `lr_type`="%s", `sysload`=%s, `level_id`='%s', `last_subtime`=%s  where `lr_id`='%s' """ % sql_data
        sqlu_1 = """update level_node set `plevel_id`='%s' where `level_id`='%s'""" % (
            plevel_id, level_id)
        sql_select = """select `level_id` from `level_node`"""
        level_list = [x[0] for x in db.execFetch(sql_select)]
        #  sql_parent = """select `plevel_id` from level_node where `level_id`='%s'"""%old_level
        #  old_parent_level = db.execFetch(sql_parent)[0][0]

        if level_id not in level_list:
            if old_level:
                sql_check = """select lr_id from lr_node where level_id='%s'""" % old_level
                result = db.execFetch(sql_check)
                if len(result) <= 1:
                    sql_s_old = """select `level_id`, `plevel_id` from level_node where `level_id`='%s'""" % old_level
                    sql_u_old = """update level_node set `plevel_id`='%s' where `plevel_id`='%s'"""
                    need_r = db.execFetch(sql_s_old)
                    if need_r:
                        db.execFetch(sql_u_old % (need_r[0][1], old_level))
                        for l in need_r:
                            redis_client.hset("level:%s" % l[0], "plevel_id",
                                              l[1])
                    sql_delete = """delete from `level_node` where `level_id`='%s'""" % old_level
                    db.execOnly(sql_delete)
                    redis_client.delete("level:%s" % old_level)
            db.execOnly(sqlu)
            res = write_level(level_id)
            redis_client.hmset(
                "level:%s" % level_id, {
                    "plevel_id": plevel_id,
                    "level_cluster": res[0],
                    "level_type": res[1]
                })
            reset_ancestors()
            self.logger.info("Add new level and qos for  lrid=%s done." %
                             self.lr_id)
            #  return {"code": 200, "status": "success", "msg": "Add new level and qos for  lrid=%s done."%self.lr_id}
        else:
            if level_id != old_level:
                sql_check = """select lr_id from lr_node where level_id='%s'""" % old_level
                result = db.execFetch(sql_check)
                if len(result) <= 1:
                    sql_delete = """delete from `level_node` where `level_id`='%s'""" % old_level
                    db.execOnly(sql_delete)
                    redis_client.delete("level:%s" % old_level)
                    reset_ancestors()
        #  print sqlu
        try:
            db.execOnly(sqlu_1)
            result = db.execOnly(sqlu)
            write_level(old_level)
            res = write_level(level_id)
            redis_client.hmset(
                "level:%s" % level_id, {
                    "plevel_id": plevel_id,
                    "level_cluster": res[0],
                    "level_type": res[1]
                })
            redis_client.delete("ancestors:%s" % level_id)
            redis_client.rpush("ancestors:%s" % level_id, level_id)
            for l in getAncestor(level_id, []):
                redis_client.rpush("ancestors:%s" % level_id, l)
        except Exception, e:
            #  print "**************",e
            result = 0
Exemplo n.º 26
0
 def getGrid(self):
     sqls = """select `lrg_id` from `lr_grid` where `vsp_id`='%s'""" % self.vspid
     res = db.execFetch(sqls)
     if len(res) == 0: lrg = None
     else: lrg = res[0][0]
     return lrg
Exemplo n.º 27
0
            for user_lr in api_data:
                if user_lr["user_id"] == '' or user_lr[
                        "node_level"] == '' or user_lr["vsp_id"] == '':
                    continue
                ep_user = "******" % (user_lr["user_id"], user_lr["account"])
                query_data.append(
                    (user_lr["account"], ep_user, str(user_lr["node_level"]),
                     user_lr["vsp_id"]))
                #  redis_client.hmset("user:%s"%ep_user, {"level_id": str(user_lr["node_level"]), "vsp_id": user_lr["vsp_id"]})
            sqli = """insert into `adjacency` (`account`, `ep_id`, `level_id`, `vsp_id`) values (%s, %s, %s, %s)"""
        else:
            lr_all_list = []
            for lr_info in api_data:
                lr_all_list.append(lr_info["id"])
                query_data.append(
                    (lr_info["id"], lr_info["name"], lr_info["p_node_level"],
                     lr_info["ip"], lr_info["port"], lr_info["op_name"],
                     lr_info["net_type"], lr_info["price"], lr_info["lr_type"],
                     lr_info["level_id"], cur_time))  #  -------------------
            sqli = """insert into `lr_node` (`lr_id`, `name`, `plevel_id`, `ip`, `port`, `cluster`, `cloud`, `price`, `lr_type`, `level_id`, `last_subtime`, `sysload`, `active`) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, 0, '1')"""
        logger.info("%s query_data: %s" % (db_table, query_data))
        db.execOnly(sqli, query_data)
        logger.info("Fill table %s success." % db_table)
    # 自lr_node表中提取所有的level(去重),并初始化生成level_node表
    sqls_level = """select distinct `level_id` from lr_node"""
    level_res = db.execFetch(sqls_level)
    for level_temp in level_res:
        level = level_temp[0]
        result = write_level(level)
        if not result: logger.error("Error inserting level/%s" % level)
Exemplo n.º 28
0
def write_level(level_id):
    sqls = """select * from level_node where `level_id`='%s'""" % level_id
    res = db.execFetch(sqls)
    sqls_c = """select distinct `cluster` from lr_node  where `level_id`='%s'""" % level_id
    level_c_list = db.execFetch(sqls_c)
    level_c_by_lr = ''
    for c in level_c_list:
        level_c_by_lr += c[0]
        level_c_by_lr += ":"
    level_c_by_lr = level_c_by_lr.strip(":")
    sqls_t = """select distinct `lr_type` from lr_node where `level_id`='%s'""" % level_id
    level_type_by_lr = db.execFetch(sqls_t)[0][0]
    if len(res) == 0:
        sqls_p = """select distinct `plevel_id` from lr_node where `level_id`='%s'""" % level_id
        plevel_id = db.execFetch(sqls_p)[0][0]
        sqli = """insert into level_node (`level_id`, `level_cluster`, `level_type`, `plevel_id`) values ('%s', '%s', '%s', '%s')""" % (
            level_id, level_c_by_lr, level_type_by_lr, plevel_id)
        db.execFetch(sqli)
        return (level_c_by_lr, level_type_by_lr)
    else:
        sqls_c_f_level = """select `level_cluster` from level_node where `level_id`='%s'""" % level_id
        level_c_by_levelnode = db.execFetch(sqls_c_f_level)[0][0]
        if level_c_by_lr != level_c_by_levelnode:
            sqlu = """update level_node set `level_cluster`='%s' where `level_id`='%s'""" % (
                level_c_by_lr, level_id)
            db.execFetch(sqlu)
        sqls_t_f_level = """select `level_type` from level_node where `level_id`='%s'""" % level_id
        level_t_by_levelnode = db.execFetch(sqls_t_f_level)[0][0]
        if level_type_by_lr != level_t_by_levelnode:
            sqlu = """update level_node set `level_type`='%s' where `level_id`='%s'""" % (
                level_type_by_lr, level_id)
            db.execFetch(sqlu)
        return (level_c_by_lr, level_type_by_lr)
Exemplo n.º 29
0
 def getProperty(self, attr):
     sqls = """select %s from lr_node where lr_id='%s'""" % (attr,
                                                             self.lr_id)
     res = db.execFetch(sqls)
     return res[0][0]
Exemplo n.º 30
0
def getLrProperty(lrid, attr):
    sqls = """select %s from `lr_node` where `lr_id`='%s'""" % (attr, lrid)
    res = db.execFetch(sqls)
    return res[0][0]