def fread(self, file):

        portinfolist = []
        portlist = []
        crcBit, txBit, rxBit = False, False, False
        with open(file) as f:
            rd = f.read()

        lineset = rd.splitlines()
        self.line_tot_set = lineset
        num = 0
        slot, pnum, portnum = 0, 0, 0
        slotnum = 1
        serial = ''
        portnum = 0
        portmax = 0
        serialBit = False
        txlist = []
        rxlist = []

        event_time = ''
        onlineBit = False
        for i in range(len(lineset)):
            line = lineset[i]
            #             print line
            portinfo = {}

            if '#   EXECUTE DATE :' in line:
                event_time = ''.join(line.split('EXECUTE DATE :')[1:])
                event_time = event_time.replace('#', '').strip()

            if '#### DATA TIME :' in line:
                event_time = ''.join(line.split('EXECUTE DATE :')[1:])
                event_time = event_time.replace('#', '').strip()
#
            if '###***switchshow***###' in line:
                onlineBit = True
            title_line_set = []
            if onlineBit:
                linenum = 1

                if 'Port' in line and 'Status' in line:
                    title_line_set = line.split()
                    title_line_set['Port']
                    port_line_num = title_line_set.index('Port')
                    status_line_num = title_line_set.index('Status')
                    print len(title_line_set)

                if 'Online' in line:
                    print line
                    linetmp = line.split()
                    port_num = linetmp[linenum]
                    if len(linetmp) >= len(title_line_set):
                        self.online_port_list.append(port_num)

            if '###***chassisshow***###' in line:
                serialBit = True
                onlineBit = False
            if serialBit:

                if 'Factory Serial Num:' in line:

                    serial = line.split(':')[1].strip()
                    serialBit = False

            if '###***' in line:
                crcBit, txBit, rxBit, thBit = False, False, False, False
            if '###***porterrshow***###' in line:
                crcBit = True

            if crcBit:
                crcset = line.split()
                #                 print len(crcset),crcset
                #                 print line
                #                 print len(crcset) > 10 and 'frames' not in line and 'tx' not in line
                #                 print '-'*40
                if len(crcset
                       ) > 10 and 'frames' not in line and 'tx' not in line:
                    portinfo = {}
                    portnum = crcset[0]
                    portnum = portnum.replace(':', '')

                    portinfo['portindex'] = portnum

                    portinfo['crcerr'] = crcset[4]
                    #                     if datetime =='':
                    #                         datetime = time.strftime('%Y-%m-%d %H:%M:%S')
                    #                     portinfo['datetime'] = datetime
                    portinfo['serial'] = serial

                    self.portinfolist.append(portinfo)
                    self.portlist.append(portnum)

#                     print '-'*50
#                     print crcset[0]
#                     print crcset
#                     print line
#                     print portnum
#                     print portinfo
#

            if '###***sfpshow -all***###' in line:

                rxBit = True

            if rxBit:

                if re.search('^Slot ', line):

                    slotline = line
                    slotline = slotline.replace('Slot', '')
                    slotline = slotline.replace('/Port', '')
                    slotline = slotline.replace(':', '')
                    stset = slotline.split()
                    slot = int(stset[0])
                    pnum = int(stset[1])

                    listnum = self.getPortNum(self.portlist[num])
                    portinfo = self.portinfolist[listnum]
                    portinfo['slot'] = slot
                    portinfo['portnum'] = pnum

                    self.portinfolist[listnum] = portinfo
                    num = num + 1

                if re.search('^Port', line) and 'SFP' not in line:
                    pnum = line.split()[1].strip()
                    pnum = pnum.replace(':', '')
                    slot = 0
                    #print line,pnum,slot,len(self.portinfolist)

                    portinfo = self.portinfolist[int(num)]

                    portinfo['slot'] = slot
                    portinfo['portnum'] = portinfo['portindex']
                    #print self.portinfolist[-1]
                    self.portinfolist[int(num)] = portinfo
                    num = num + 1

                if ' GE: Port' in line:

                    try:
                        listnum = self.getPortNum(self.portlist[num])
                        portinfonum = self.portinfolist.index(listnum)
                        del self.portinfolist[portinfonum]
                    except:
                        pass

                    num = num + 1

                if 'TX Power: ' in line:
                    if 'uWatts' in line:
                        tx = line.split('(')[1].split(')')[0]
                        tx = tx.replace('uWatts', '')
                        tx = tx.replace('uW', '')
                    else:

                        if '(' in line:
                            tx = line.split('(')[1].split(')')[0]
                            tx = tx.replace('uWatts', '')
                            tx = tx.replace('uW', '')
                        else:
                            tx = line.split()[2]
                        if 'inf' in tx:
                            tx = '0'

                    listnum = self.getPortNum(self.portlist[num - 1])

                    portinfo = self.portinfolist[listnum]
                    portinfo['tx'] = tx

                    self.portinfolist[listnum] = portinfo
#                     crcerr = portinfolist[listnum]['crcerr']
#                     portinfolist[listnum] = {'num' : portlist[num],'tx' : tx,'crcerr' : crcerr }

                if 'RX Power:' in line:

                    #                     print line
                    'uWatts'
                    if 'uWatts' in line:
                        rx = line.split('(')[1].split(')')[0]
                        rx = rx.replace('uWatts', '')
                        rx = rx.replace('uW', '')

                    else:
                        #print line

                        if '(' in line:
                            rx = line.split('(')[1].split(')')[0]
                            rx = rx.replace('uWatts', '')
                            rx = rx.replace('uW', '')
                        else:
                            rx = line.split()[2]
                        if 'inf' in rx:
                            rx = '0'
                    print 'RX :', rx

                    #sys.exit()
                    listnum = self.getPortNum(self.portlist[num - 1])

                    portinfo = self.portinfolist[listnum]

                    portinfo['rx'] = rx
                    self.portinfolist[listnum] = portinfo

            if '###***portperfshow***###' in line:
                thBit = True
                thList = []
                #                 print thBit
                if '###############################################################################' in line:
                    thBit = False

                if thBit:
                    linenum = i + 1
                    a = 0
                    for cnt in range(i + 1, len(lineset)):

                        num = a % 4
                        #                         print lineset[cnt],num,cnt,i,linenum,a,len(lineset[cnt].split())
                        if num == 2 and len(lineset[cnt].split()) > 0:

                            #                             print lineset[cnt]
                            thList = thList + lineset[cnt].split()
                        a = a + 1

        resutllist = []
        for i in range(len(self.portinfolist)):
            portInfo = self.portinfolist[i]
            th = thList[i]
            if th[-1] == 'k':
                #                 print th
                th = th.replace('k', '')
                th = float(th) * 1024
                print th

            elif th[-1] == 'm':
                #                 print th
                th = th.replace('m', '')
                th = float(th) * 1024 * 1024
                print th
            else:
                try:
                    th = float(th)
                except:
                    th = 0
                    pass

            if 'tx' not in portInfo.keys():
                portInfo['tx'] = '0'
                portInfo['rx'] = '0'

            portInfo['throughput'] = th

            if 'slot' in portinfo.keys():
                resutllist.append(portinfo)


#         se=serial.zfill(20)
        key = '%s::SAN_SWICH_PERFROM::%s' % (self.store_time, serial)
        lastkey = 'LASTKEY::%s' % serial
        self.r.set(lastkey, key)
        print 'portinfo list:', len(self.portinfolist)
        print self.portinfolist
        print '-' * 50
        print self.online_port_list
        print '-' * 50
        port_info_list = []
        for port_info in self.portinfolist:
            if port_info['portindex'] in self.online_port_list:
                port_info_list.append(port_info)
        self.portinfolist = port_info_list
        print 'portinfo list:', len(self.portinfolist)
        print self.portinfolist
        self.r.lpush(key, str(self.portinfolist))
        portinfo_insert.inst(self.portinfolist, self.store_time, event_time)

        self.setRedis()
        return True
Esempio n. 2
0
    def fread(self,file):
        
        portinfolist=[]
        portlist=[]
        crcBit,txBit,rxBit=False,False,False
        with open(file) as f:
            rd=f.read()

        
        lineset=rd.splitlines()
        
        num = 0
        slot,pnum,portnum=0,0,0
        slotnum=1
        serial=''
        portnum = 0
        portmax = 0
        serialBit = False
        txlist=[]
        rxlist=[]
        for line in lineset :
            portinfo={}
            
            if  '#   EXECUTE DATE :' in line:
                datetime = ''.join(line.split('EXECUTE DATE :')[1:])
                datetime = datetime.replace('#','').strip()
                 
                 
            if  '#### DATA TIME :' in line:
                datetime = ''.join(line.split('#### DATA TIME :')[1:])
                datetime = datetime.replace('#','').strip()
                 
                
            
            if '###***chassisshow***###' in line:
                serialBit= True
            if serialBit:
                
                if 'Factory Serial Num:' in line:
                    
                    serial = line.split(':')[1].strip()
                    serialBit = False
                    
            
            
            
            if '###***' in line:
                crcBit,txBit,rxBit=False,False,False
            if '###***porterrshow***###' in line:
                crcBit=True
            
            if crcBit:
                crcset= line.split()
#                 print len(crcset),crcset
#                 print line
#                 print len(crcset) > 10 and 'frames' not in line and 'tx' not in line 
#                 print '-'*40
                if len(crcset) > 10 and 'frames' not in line and 'tx' not in line :
                    portinfo={}
                    portnum=crcset[0]
                    portnum=portnum.replace(':','')
                    
                    portinfo['portindex'] =   portnum
                    
                    ran=random.randrange(1,100)
                    if ran < 2:
                        crc = random.randrange(int(crcset[4]),int(crcset[4]) + 30)
                        print portinfo,'CRC :',crc
                    else:
                        crc = crcset[4]
                        
                    portinfo['crcerr'] = crc
#                     if datetime =='':
#                         datetime = time.strftime('%Y-%m-%d %H:%M:%S')
#                     portinfo['datetime'] = datetime 
                    portinfo['serial'] = serial
                    
                    self.portinfolist.append(portinfo)
                    self.portlist.append(portnum)
#                     print '-'*50
#                     print crcset[0]
#                     print crcset
#                     print line
#                     print portnum
#                     print portinfo
#             
                        
            if '###***sfpshow -all***###' in line:
                
                rxBit = True
                
                
            if rxBit:
                
                
                if re.search('^Slot ', line) :
                    
                    slotline=line
                    slotline=slotline.replace('Slot','')
                    slotline=slotline.replace('/Port','')
                    slotline=slotline.replace(':','')
                    stset= slotline.split()
                    slot=int(stset[0])
                    pnum=int(stset[1])
                    
                    
                    listnum=self.getPortNum(self.portlist[num])
                    portinfo = self.portinfolist[listnum]
                    portinfo['slot'] = slot
                    portinfo['portnum'] = pnum
                    
                    
                    self.portinfolist[listnum] = portinfo
                    num = num +1
                
                 
                if re.search('^Port', line)  and 'SFP' not in line:
                    pnum = line.split()[1].strip()
                    pnum = pnum.replace(':','')
                    slot=0
#                     print line,pnum,slot,len(self.portinfolist)
                    
                    portinfo=self.portinfolist[int(num)]
                    
                    portinfo['slot'] = slot
                    portinfo['portnum'] = portinfo['portindex']
#                     print self.portinfolist[-1]
                    self.portinfolist[int(num)] = portinfo 
                    num = num +1
                    
                if ' GE: Port' in line:
                    
                    
                    try:
                        listnum=self.getPortNum(self.portlist[num])
                        portinfonum=self.portinfolist.index(listnum)
                        del self.portinfolist[portinfonum]
                    except:
                        pass
                    
                    num = num +1 
                    
                if 'TX Power: ' in line:
                    if 'uWatts' not in line:
                        tx=line.split('(')[1].split(')')[0]
                        
                        tx=tx.replace('uW','')
                    else:
                        tx=line.split()[2]
                        
                    listnum=self.getPortNum(self.portlist[num-1])
                    
                    portinfo = self.portinfolist[listnum]
                    ran=random.randrange(1,300)
                    if ran < 2:
                        tx = random.randrange(100,300)
                        print portinfo,'TX :',tx
                    portinfo['tx'] = tx
                   
                    self.portinfolist[listnum] = portinfo
#                     crcerr = portinfolist[listnum]['crcerr']
#                     portinfolist[listnum] = {'num' : portlist[num],'tx' : tx,'crcerr' : crcerr }
                    
                    
                if 'RX Power:' in line:
#                     print slot,pnum,portlist[num]
#                     print line
                    if 'uWatts' not in line:
                        rx=line.split('(')[1].split(')')[0]
                        rx=rx.replace('uW','')
                    else:
#                         print line
                        rx=line.split()[2]
#                         print rx
                    
#                     print num
#                     print '-'*50
                    listnum=self.getPortNum( self.portlist[num-1])
                    
                    
                    portinfo = self.portinfolist[listnum]
                    
                    portinfo['rx'] = rx
                    ran=random.randrange(1,100)
                    if ran < 2:
                        rx = random.randrange(100,300)
                        print portinfo,'RX :',rx
                    
                    portinfo['rx'] = rx
                    self.portinfolist[listnum] = portinfo
        



        rtfile = os.path.join('ret''%s.tmp'%serial)
        
        resutllist=[]
        with open('result.txt','a') as f:
            for no in range(len(self.portinfolist)):
                
                portinfo = self.portinfolist[no]
                if 'slot' in portinfo.keys():
                    resutllist.append(portinfo)
        
                
                
                f.write(str(portinfo)+'\n')
            f.write(file)
        print 'serial :',serial            
        
        print len(self.portinfolist)
        print file
        try:
            portinfo_insert.inst(resutllist,self.store_time,datetime)
        except:
            print 'error :',file
Esempio n. 3
0
    def main(self):
        headmsg=self.com.get_module_head_msg(s_hostname=self.name,s_ip=self.ip)
        
        print headmsg
        self.getOnlinePort()
        print 'online-port-list :'
        print self.portValue.keys()
        self.fileWrite(headmsg, 'w')
        cmd='date'
        title='###***{}***###'.format(cmd)
        self.fileWrite(title)
        ret=self.exec_cmd(cmd)
        self.fileWrite(ret)
        
#         self.onlinePort=self.getOnlinePort()
        
        print 'SFP bit :',self.targetList['sfp_bit']
        
        if self.targetList['sfp_bit']:
            self.getSfp()
        else:
            for key in self.portValue.keys():
                self.portValue[key]['tx'] = '-1'
                self.portValue[key]['rx'] = '-1'
            
        print 'Port value:',self.portValue
        print 'crc_bit',self.targetList['crc_bit']
        if self.targetList['crc_bit']:
            self.getCrc()
        else:
            for key in self.portValue.keys():
                self.portValue[key]['crcerr'] = '-1'
        if self.targetList['throughput_bit']:
            self.getThroughput()
        else:
            for key in self.portValue.keys():
                self.portValue[key]['throughput'] = '-1'
            
        print '-'*50
        
        print 'Port value:',self.portValue
        portvaluelise=self.sort_portValue()
#         print portvaluelise
        self.setRedisLastkey(portvaluelise)
        self.setRedis(portvaluelise)
#         print portvaluelise
        portinfo_insert.inst(portvaluelise,self.store_time,self.event_time)
        self.result_update('True')
#         print self.fileName
#
#         
#         self.targetList['log_bit']
#         
#         if self.targetList['throughput_bit']:
#             self.getThroughput()
#         
# #         self.run()
#         self.expectCmd()
#         endmsg = self.com.get_module_tail_msg()
#         self.fileWrite(endmsg)
#         
#         store_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
#         
#         self.fread(self.fileName)
#         self.line_tot_set=self.get_line_set()
#         
        if self.targetList['log_bit']:
            # errdump -> snmp
            cmd='errdump'
            self.fileWrite('###***{}***###'.format(cmd))
            ret=self.exec_cmd(cmd)
            self.fileWrite(ret)
            errdump_str.err_dump(self.sw_serial,ret).main()
            
        self.net_connect.disconnect()
        set_check_date(self.store_time,True,self.sw_serial)