def __init__(self,conn_dict): # self.conn=mysql.connect(host="localhost",user="******",passwd="ljsljs",db="openstack"); self.conn=mysql.connect(conn_dict['host'],conn_dict['user'],conn_dict['passwd'],conn_dict['db']); self.cursor=self.conn.cursor(); ### create Memecached Client Object self.cache=CacheClient(conn_dict);
def __init__(self, conn_dict): # self.conn=mysql.connect(host="localhost",user="******",passwd="ljsljs",db="openstack"); self.conn = mysql.connect(conn_dict["host"], conn_dict["user"], conn_dict["passwd"], conn_dict["db"]) self.cursor = self.conn.cursor() ### create Memecached Client Object self.cache = CacheClient(conn_dict)
class MysqlDb(object): def __init__(self,conn_dict): # self.conn=mysql.connect(host="localhost",user="******",passwd="ljsljs",db="openstack"); self.conn=mysql.connect(conn_dict['host'],conn_dict['user'],conn_dict['passwd'],conn_dict['db']); self.cursor=self.conn.cursor(); ### create Memecached Client Object self.cache=CacheClient(conn_dict); def __del__(self): print 'close connection to mysql...'; self.cursor.close(); self.conn.close(); def __reconnect_db__(self): self.conn.ping(True); self.cursor=self.conn.cursor(); def insert_monitor_data(self,data): self.__reconnect_db__(); sql_cmd='''insert into vm_monitor(instance_id,cpu_usage,mem_free,mem_max,nic_in,nic_out,\ disk_read,disk_write,monitor_time,uuid)values('%s','%s',%s,%s,'%s','%s','%s','%s',from_unixtime('%s',\ '%%Y-%%m-%%d %%T'),'%s');'''%tuple(data); #print "in insert_monitor_data, the data=",data; #print "\nsql_cmd=%s\n"%(sql_cmd); sys.stdout.flush(); self.cursor.execute(sql_cmd); self.conn.commit(); self.cache.push_vm_info(data); return True; def get_instances_in_cache(self): return self.cache.get_instance_list(); def get_instance_info_in_cache(self,instance_id): return self.cache.get_instance_info(instance_id); def get_all_instances(self,start_time): """ list all instances from time ${start_time} to now""" self.__reconnect_db__(); sql_cmd='''select distinct instance_id from vm_monitor where monitor_time>='%s';'''%start_time; # print ' in get all instances func: sql_cmd=%s'%sql_cmd; self.cursor.execute(sql_cmd); return self.cursor.fetchall(); def get_instance_info(self,instance_id,start_time): """ get vm info by instance_id from time $(start_time) to now""" self.__reconnect_db__(); sql_cmd='''select cpu_usage,mem_free,mem_max,nic_in,nic_out,disk_read,disk_write,monitor_time uuid from vm_monitor where instance_id='%s' and monitor_time>='%s' '''%(instance_id,start_time); #print " in get instance info by id sql cmd=%s"%sql_cmd; self.cursor.execute(sql_cmd); return self.cursor.fetchall(); def process_monitor_info(self,tool,info): ### info= {'instance-00000001': [('cpu', 'total', (1344394313.516737, 0.0)), ('mem', 'total', (1344394313.516737, 524288L, 0L)), ('nic', 'vnet0', (1344394313.52059, 29645L, 0L)), ('blk', 'vda', (1344394313.525229, 512L, 0L))] for instance in info: ## create a list with length 9 data=range(10); data[0]=instance; data[9]=tool.get_uuid_by_novaid(instance); #print 'nova id:%s--->uuid:%s'%(data[0],data[9]); instance_info=info[instance]; nic_in_info=""; nic_out_info=""; blk_read_info=""; blk_write_info=""; for item_info in instance_info: if item_info[0]==unicode("cpu"): cpu_usage=str(item_info[2][1]); ##print 'cpu_usage=',cpu_usage; data[1]=cpu_usage[0:5]; data[8]=timestamp=int(item_info[2][0]); elif item_info[0]==unicode("mem"): data[2]=mem_free=item_info[2][2]; data[3]=mem_max=item_info[2][1]; elif item_info[0]==unicode("nic"): vnet_in=item_info[1]+":"+str(item_info[2][1]); vnet_out=item_info[1]+":"+str(item_info[2][2]); if nic_in_info is "" or nic_out_info is "": nic_in_info=vnet_in; nic_out_info=vnet_out; else: nic_in_info=nic_in_info+"#"+vnet_in; nic_out_info=nic_out_info+"#"+vnet_out; elif item_info[0]==unicode("blk"): vd_read=item_info[1]+":"+str(item_info[2][1]); vd_write=item_info[1]+":"+str(item_info[2][2]); if blk_read_info is "" or blk_write_info is "": blk_read_info=vd_read; blk_write_info=vd_write; else: blk_read_info=blk_read_info+"#"+vd_read; blk_write_info=blk_write_info+"#"+vd_write; data[4]=nic_in_info; data[5]=nic_out_info; data[6]=blk_read_info; data[7]=blk_write_info; self.insert_monitor_data(data); return True;
class MysqlDb(object): def __init__(self, conn_dict): # self.conn=mysql.connect(host="localhost",user="******",passwd="ljsljs",db="openstack"); self.conn = mysql.connect(conn_dict["host"], conn_dict["user"], conn_dict["passwd"], conn_dict["db"]) self.cursor = self.conn.cursor() ### create Memecached Client Object self.cache = CacheClient(conn_dict) def __del__(self): print "close connection to mysql..." self.cursor.close() self.conn.close() def __reconnect_db__(self): self.conn.ping(True) self.cursor = self.conn.cursor() def insert_monitor_data(self, data): self.__reconnect_db__() sql_cmd = """insert into vm_monitor(instance_id,cpu_usage,mem_free,mem_max,nic_in,nic_out,\ disk_read,disk_write,monitor_time,uuid)values('%s','%s',%s,%s,'%s','%s','%s','%s',from_unixtime('%s',\ '%%Y-%%m-%%d %%T'),'%s');""" % tuple( data ) # print "in insert_monitor_data, the data=",data; # print "\nsql_cmd=%s\n"%(sql_cmd); sys.stdout.flush() self.cursor.execute(sql_cmd) self.conn.commit() self.cache.push_vm_info(data) return True def get_instances_in_cache(self): return self.cache.get_instance_list() def get_instance_info_in_cache(self, instance_id): return self.cache.get_instance_info(instance_id) def get_all_instances(self, start_time): """ list all instances from time ${start_time} to now""" self.__reconnect_db__() sql_cmd = """select distinct instance_id from vm_monitor where monitor_time>='%s';""" % start_time # print ' in get all instances func: sql_cmd=%s'%sql_cmd; self.cursor.execute(sql_cmd) return self.cursor.fetchall() def get_instance_info(self, instance_id, start_time): """ get vm info by instance_id from time $(start_time) to now""" self.__reconnect_db__() sql_cmd = ( """select cpu_usage,mem_free,mem_max,nic_in,nic_out,disk_read,disk_write,monitor_time uuid from vm_monitor where instance_id='%s' and monitor_time>='%s' """ % (instance_id, start_time) ) # print " in get instance info by id sql cmd=%s"%sql_cmd; self.cursor.execute(sql_cmd) return self.cursor.fetchall() def process_monitor_info(self, tool, info): ### info= {'instance-00000001': [('cpu', 'total', (1344394313.516737, 0.0)), ('mem', 'total', (1344394313.516737, 524288L, 0L)), ('nic', 'vnet0', (1344394313.52059, 29645L, 0L)), ('blk', 'vda', (1344394313.525229, 512L, 0L))] for instance in info: ## create a list with length 9 data = range(10) data[0] = instance data[9] = tool.get_uuid_by_novaid(instance) # print 'nova id:%s--->uuid:%s'%(data[0],data[9]); instance_info = info[instance] nic_in_info = "" nic_out_info = "" blk_read_info = "" blk_write_info = "" for item_info in instance_info: if item_info[0] == unicode("cpu"): cpu_usage = str(item_info[2][1]) ##print 'cpu_usage=',cpu_usage; data[1] = cpu_usage[0:5] data[8] = timestamp = int(item_info[2][0]) elif item_info[0] == unicode("mem"): data[2] = mem_free = item_info[2][2] data[3] = mem_max = item_info[2][1] elif item_info[0] == unicode("nic"): vnet_in = item_info[1] + ":" + str(item_info[2][1]) vnet_out = item_info[1] + ":" + str(item_info[2][2]) if nic_in_info is "" or nic_out_info is "": nic_in_info = vnet_in nic_out_info = vnet_out else: nic_in_info = nic_in_info + "#" + vnet_in nic_out_info = nic_out_info + "#" + vnet_out elif item_info[0] == unicode("blk"): vd_read = item_info[1] + ":" + str(item_info[2][1]) vd_write = item_info[1] + ":" + str(item_info[2][2]) if blk_read_info is "" or blk_write_info is "": blk_read_info = vd_read blk_write_info = vd_write else: blk_read_info = blk_read_info + "#" + vd_read blk_write_info = blk_write_info + "#" + vd_write data[4] = nic_in_info data[5] = nic_out_info data[6] = blk_read_info data[7] = blk_write_info self.insert_monitor_data(data) return True