Esempio n. 1
0
    def sampleJobInfo(self):
        """
        Sample job info, especially the memory usage info.
        """
        self.getDateInfo()
        self.jobDbFile = str(self.dbPath) + '/job.db'
        self.jobDbConn = sqlite3.connect(self.jobDbFile)
        self.jobDbCurs = self.jobDbConn.cursor()

        print('>>> Sampling job info into ' + str(self.jobDbFile) + ' ...')

        jobTableList = common.getSqlTableList(self.jobDbFile, self.jobDbCurs)
        bjobsDic = common.getBjobsUfInfo()
        jobList = list(bjobsDic.keys())

        for job in jobList:
            jobTableName = 'job_' + str(job)
            print('    Sampling for job "' + str(job) + '" ...')

            # Insert 'sampleTime', 'DATE', 'TIME' and 'SECONDS' into key list.
            jobDic = bjobsDic[job]
            keyList = list(jobDic.keys())
            valueList = list(jobDic.values())
            valueList = self.addValueDateInfo(valueList)

            # If job table (with old data) has been on the self.jobDbFile, drop it.
            if jobTableName in jobTableList:
                dataDic = common.getSqlTableData(self.jobDbFile,
                                                 self.jobDbCurs, jobTableName,
                                                 ['SECONDS'])
                if dataDic:
                    if len(dataDic['SECONDS']) > 0:
                        lastSeconds = int(dataDic['SECONDS'][-1])
                        if self.currentSeconds - lastSeconds > 864000:
                            common.printWarning(
                                '*Warning*: table "' + str(jobTableName) +
                                '" already existed even ten day ago, will drop it.'
                            )
                            common.dropSqlTable(self.jobDbFile, self.jobDbCurs,
                                                jobTableName)

            # If job table is not on the self.jobDbFile, create it.
            if jobTableName not in jobTableList:
                keyList = self.addKeyDateInfo(keyList)
                keyString = common.genSqlTableKeyString(keyList)
                common.createSqlTable(self.jobDbFile, self.jobDbConn,
                                      jobTableName, keyString)

            # Insert sql table value.
            valueString = common.genSqlTableValueString(valueList)
            common.insertIntoSqlTable(self.jobDbFile, self.jobDbConn,
                                      jobTableName, valueString)

        self.jobDbCurs.close()
        self.jobDbConn.close()
Esempio n. 2
0
    def sampleQueueInfo(self):
        """
        Sample queue info and save it into sqlite db.
        """
        self.getDateInfo()
        self.queueDbFile = str(self.dbPath) + '/queue.db'
        self.queueDbConn = sqlite3.connect(self.queueDbFile)
        self.queueDbCurs = self.queueDbConn.cursor()

        print('>>> Sampling queue info into ' + str(self.queueDbFile) + ' ...')

        queueTableList = common.getSqlTableList(self.queueDbFile,
                                                self.queueDbCurs)
        bqueuesDic = common.getBqueuesInfo()
        queueList = bqueuesDic['QUEUE_NAME']
        queueHostDic = common.getQueueHostInfo()

        # Insert 'sampleTime', 'DATE', 'TIME' and 'SECONDS' into key list.
        origKeyList = list(bqueuesDic.keys())
        keyList = self.addKeyDateInfo(origKeyList)
        keyList.append('HOST')

        for i in range(len(queueList)):
            queue = queueList[i]
            queueTableName = 'queue_' + str(queue)
            print('    Sampling for queue "' + str(queue) + '" ...')

            # Get the queue value infos.
            valueList = []
            valueList = self.addValueDateInfo(valueList)
            for key in origKeyList:
                keyValue = bqueuesDic[key][i]
                valueList.append(keyValue)

            # Add queue-host info into queue value infos.
            queueHosts = queueHostDic[queue]
            hostString = ' '.join(queueHosts)
            valueList.append(hostString)

            # Generate sql table.
            if queueTableName not in queueTableList:
                keyString = common.genSqlTableKeyString(keyList)
                common.createSqlTable(self.queueDbFile, self.queueDbConn,
                                      queueTableName, keyString)

            # Insert sql table value.
            valueString = common.genSqlTableValueString(valueList)
            common.insertIntoSqlTable(self.queueDbFile, self.queueDbConn,
                                      queueTableName, valueString)

        self.queueDbCurs.close()
        self.queueDbConn.close()
Esempio n. 3
0
    def sampleLoadInfo(self):
        """
        Sample host load info and save it into sqlite db.
        """
        self.getDateInfo()
        self.loadDbFile = str(self.dbPath) + '/load.db'
        self.loadDbConn = sqlite3.connect(self.loadDbFile)
        self.loadDbCurs = self.loadDbConn.cursor()

        print('>>> Sampling host load info into ' + str(self.loadDbFile) +
              ' ...')

        loadTableList = common.getSqlTableList(self.loadDbFile,
                                               self.loadDbCurs)
        lsloadDic = common.getLsloadInfo()
        hostList = lsloadDic['HOST_NAME']

        # Insert 'sampleTime', 'DATE', 'TIME' and 'SECONDS' into key list.
        origKeyList = list(lsloadDic.keys())
        keyList = self.addKeyDateInfo(origKeyList)

        for i in range(len(hostList)):
            host = hostList[i]
            loadTableName = 'host_' + str(host)
            print('    Sampling for host "' + str(host) + '" ...')

            # Get the host load value infos.
            valueList = []
            valueList = self.addValueDateInfo(valueList)
            for key in origKeyList:
                keyValue = lsloadDic[key][i]
                valueList.append(keyValue)

            # Generate sql table.
            if loadTableName not in loadTableList:
                keyString = common.genSqlTableKeyString(keyList)
                common.createSqlTable(self.loadDbFile, self.loadDbConn,
                                      loadTableName, keyString)

            # Insert sql table value.
            valueString = common.genSqlTableValueString(valueList)
            common.insertIntoSqlTable(self.loadDbFile, self.loadDbConn,
                                      loadTableName, valueString)

        self.loadDbCurs.close()
        self.loadDbConn.close()
Esempio n. 4
0
    def sampleUserInfo(self):
        """
        Sample user info and save it into sqlite db.
        """
        self.getDateInfo()
        self.userDbFile = str(self.dbPath) + '/user.db'
        self.userDbConn = sqlite3.connect(self.userDbFile)
        self.userDbCurs = self.userDbConn.cursor()

        print('>>> Sampling user info into ' + str(self.userDbFile) + ' ...')

        userTableList = common.getSqlTableList(self.userDbFile,
                                               self.userDbCurs)
        busersDic = common.getBusersInfo()
        userList = busersDic['USER/GROUP']

        # Insert 'sampleTime', 'DATE', 'TIME' and 'SECONDS' into key list.
        origKeyList = list(busersDic.keys())
        keyList = self.addKeyDateInfo(origKeyList)

        for i in range(len(userList)):
            user = userList[i]
            userTableName = 'user_' + str(user)
            print('    Sampling for user "' + str(user) + '" ...')

            # Get the user value infos.
            valueList = []
            valueList = self.addValueDateInfo(valueList)
            for key in origKeyList:
                keyValue = busersDic[key][i]
                valueList.append(keyValue)

            # Generate sql table.
            if userTableName not in userTableList:
                keyString = common.genSqlTableKeyString(keyList)
                common.createSqlTable(self.userDbFile, self.userDbConn,
                                      userTableName, keyString)

            # Insert sql table value.
            valueString = common.genSqlTableValueString(valueList)
            common.insertIntoSqlTable(self.userDbFile, self.userDbConn,
                                      userTableName, valueString)

        self.userDbCurs.close()
        self.userDbConn.close()