99 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
from ssl import ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE
 | 
						|
import taos
 | 
						|
import sys
 | 
						|
import time
 | 
						|
import os 
 | 
						|
import  socket
 | 
						|
 | 
						|
from util.log import *
 | 
						|
from util.sql import *
 | 
						|
from util.cases import *
 | 
						|
from util.dnodes import *
 | 
						|
from util.common import *
 | 
						|
 | 
						|
class ClusterDnodes(TDDnodes):
 | 
						|
    """rewrite TDDnodes and make MyDdnodes as TDDnodes child class"""
 | 
						|
    def __init__(self ,dnodes_lists):
 | 
						|
 | 
						|
        super(ClusterDnodes,self).__init__()
 | 
						|
        self.dnodes = dnodes_lists  # dnode must be TDDnode instance
 | 
						|
        self.simDeployed = False
 | 
						|
        self.testCluster = False
 | 
						|
        self.valgrind = 0
 | 
						|
        self.killValgrind = 1
 | 
						|
 | 
						|
 | 
						|
class ConfigureyCluster:
 | 
						|
    """This will create defined number of dnodes and create a cluster.
 | 
						|
       at the same time, it will return TDDnodes list:  dnodes, """
 | 
						|
    hostname = socket.gethostname()
 | 
						|
 | 
						|
    def __init__(self):
 | 
						|
        self.dnodes = []      
 | 
						|
        self.dnodeNums = 5
 | 
						|
        self.independent = True
 | 
						|
        self.startPort = 6030
 | 
						|
        self.portStep = 100
 | 
						|
        self.mnodeNums = 0
 | 
						|
 | 
						|
    def configure_cluster(self ,dnodeNums=5,mnodeNums=0,startPort=6030,portStep=100,hostname="%s"%hostname): 
 | 
						|
        self.startPort=int(startPort)
 | 
						|
        self.portStep=int(portStep)
 | 
						|
        self.hostname=hostname
 | 
						|
        self.dnodeNums = int(dnodeNums)
 | 
						|
        self.mnodeNums = int(mnodeNums)
 | 
						|
        self.dnodes = []
 | 
						|
        startPort_sec = int(startPort+portStep)
 | 
						|
        for num in range(1, (self.dnodeNums+1)):
 | 
						|
            dnode = TDDnode(num)
 | 
						|
            dnode.addExtraCfg("firstEp", f"{hostname}:{self.startPort}")
 | 
						|
            dnode.addExtraCfg("fqdn", f"{hostname}")
 | 
						|
            dnode.addExtraCfg("serverPort", f"{self.startPort + (num-1)*self.portStep}")
 | 
						|
            dnode.addExtraCfg("secondEp", f"{hostname}:{startPort_sec}")
 | 
						|
 | 
						|
            # configure  dnoe of independent mnodes
 | 
						|
            if num <= self.mnodeNums and self.mnodeNums != 0 :
 | 
						|
                dnode.addExtraCfg("supportVnodes", 0)
 | 
						|
            # print(dnode)
 | 
						|
            self.dnodes.append(dnode)
 | 
						|
        return self.dnodes
 | 
						|
        
 | 
						|
    def create_dnode(self,conn,dnodeNum):
 | 
						|
        tdSql.init(conn.cursor())
 | 
						|
        dnodeNum=int(dnodeNum)
 | 
						|
        for dnode in self.dnodes[1:dnodeNum]:
 | 
						|
            # print(dnode.cfgDict)
 | 
						|
            dnode_id = dnode.cfgDict["fqdn"] +  ":" +dnode.cfgDict["serverPort"]
 | 
						|
            tdSql.execute(" create dnode '%s';"%dnode_id)
 | 
						|
 | 
						|
        
 | 
						|
        
 | 
						|
    def check_dnode(self,conn):
 | 
						|
        tdSql.init(conn.cursor())
 | 
						|
        count=0
 | 
						|
        while count < 5:
 | 
						|
            tdSql.query("select * from information_schema.ins_dnodes")
 | 
						|
            # tdLog.debug(tdSql.queryResult)
 | 
						|
            status=0
 | 
						|
            for i in range(self.dnodeNums):
 | 
						|
                if tdSql.queryResult[i][4] == "ready":
 | 
						|
                    status+=1
 | 
						|
            # tdLog.debug(status)
 | 
						|
            
 | 
						|
            if status == self.dnodeNums:
 | 
						|
                tdLog.debug(" create cluster with %d dnode and check cluster dnode all ready within 5s! " %self.dnodeNums)
 | 
						|
                break 
 | 
						|
            count+=1
 | 
						|
            time.sleep(1)
 | 
						|
        else:
 | 
						|
            tdLog.exit("create cluster with %d dnode but  check dnode not ready within 5s ! "%self.dnodeNums)
 | 
						|
 | 
						|
    def checkConnectStatus(self,dnodeNo,hostname=hostname):
 | 
						|
        dnodeNo = int(dnodeNo)
 | 
						|
        tdLog.info("check dnode-%d connection"%(dnodeNo+1))
 | 
						|
        hostname = socket.gethostname()
 | 
						|
        port = 6030 + dnodeNo*100
 | 
						|
        connectToDnode = tdCom.newcon(host=hostname,port=port)
 | 
						|
        return connectToDnode
 | 
						|
 | 
						|
cluster = ConfigureyCluster() |