Example #1
0
    def calculatePort(self):
        collection_name = self.month + '_' + self.dev_name
        port_data_list = mongo.db[collection_name].find(
            {'ifDescr': self.port_name})

        if port_data_list.count() == 0:
            logging.error("Cannot get data from {} with port {}".format(
                collection_name, self.port_name))
            return json.dumps({'data': [], 'length': 0})

        self.port_billing = portBilling(port_data_list, self.billing_method)

        result = None

        if self.datetype == 'all':
            month_result = self.port_billing.getPortDataPerMonth()
            day_result = self.port_billing.getPortDataPerDay()
            result = {'month': month_result, 'allday': day_result}

        elif self.datetype == 'month':
            result = self.port_billing.getPortDataPerMonth()

        elif self.datetype == 'allday':
            result = self.port_billing.getPortDataPerDay()

        # self.datetype is like 20140801
        else:
            result = self.port_billing.getPortDataPerDay(self.datetype)

        if result is not None:
            return json.dumps({'data': result, 'error': 'false'})
        else:
            return json.dumps({'error': 'true', 'data': []})
Example #2
0
    def calculatePort(self):
        collection_name = self.month + '_' + self.dev_name
        port_data_list = mongo.db[collection_name].find({'ifDescr': self.port_name})

        if port_data_list.count() == 0:
            logging.error("Cannot get data from {} with port {}".format(collection_name,self.port_name ))
            return json.dumps({'data':[],'length':0})

        self.port_billing = portBilling(port_data_list, self.billing_method)

        result = None

        if self.datetype == 'all':
            month_result = self.port_billing.getPortDataPerMonth()
            day_result = self.port_billing.getPortDataPerDay()
            result = { 'month': month_result, 'allday': day_result }

        elif self.datetype == 'month':
            result = self.port_billing.getPortDataPerMonth()

        elif self.datetype == 'allday':
            result = self.port_billing.getPortDataPerDay()

        # self.datetype is like 20140801
        else:
            result = self.port_billing.getPortDataPerDay(self.datetype)

        if result is not None:
            return json.dumps({'data': result, 'error': 'false'})
        else:
            return json.dumps({'error': 'true', 'data': []})
Example #3
0
    def generatePortReport(self, port_args, csv_split=','):
        collection_name = port_args['month'] + '_' + port_args['dev_name']
        port_data_list = mongo.db[collection_name].find(
            {'ifDescr': port_args['port_name']})

        if port_data_list.count() == 0:
            logging.error("Cannot get data from {} with port {}".format(
                collection_name, port_args['port_name']))
            return None

        port_billing = portBilling(port_data_list, port_args['billing_method'])

        # 得到当月的每日详细值
        day_result = port_billing.getPortDataPerDay()

        # 得到当月的总计值
        month_result = port_billing.getPortDataPerMonth()

        # CSV报表的基本信息
        csv_string = ''
        csv_string += csv_split.join(['设备名称:', port_args['dev_name']])
        csv_string += '\n'
        csv_string += csv_split.join(['端口名称:', port_args['port_name']])
        csv_string += '\n'
        csv_string += csv_split.join(['计费时间段:', port_args['month']])
        csv_string += '\n'

        # CSV报表的计费信息表示 和 当月统计值
        date_list = ['', '月度']
        billing_list = ['计费 (95th)', month_result['report_billing']]
        avrg_list = ['平均值 (In/Out)', month_result['report_avrg']]
        max_list = ['最大值 (In/Out)', month_result['report_max']]
        min_list = ['最小值 (In/Out)', month_result['report_min']]

        # CSV报表的每日详细信息
        for port_item in day_result:
            date_list.append(port_item['date_type'])
            billing_list.append(port_item['report_billing'])
            avrg_list.append(port_item['report_avrg'])
            max_list.append(port_item['report_max'])
            min_list.append(port_item['report_min'])

        # CSV的详细计费字段
        csv_string += '\n'
        csv_string += csv_split.join(date_list)
        csv_string += '\n'
        csv_string += csv_split.join(billing_list)
        csv_string += '\n'
        csv_string += csv_split.join(avrg_list)
        csv_string += '\n'
        csv_string += csv_split.join(max_list)
        csv_string += '\n'
        csv_string += csv_split.join(min_list)
        csv_string += '\n'

        # print(csv_string)
        return csv_string
Example #4
0
    def generatePortReport(self, port_args, csv_split=','):
        collection_name = port_args['month'] + '_' + port_args['dev_name']
        port_data_list = mongo.db[collection_name].find({'ifDescr': port_args['port_name']})

        if port_data_list.count() == 0:
            logging.error("Cannot get data from {} with port {}".format(collection_name, port_args['port_name']))
            return None

        port_billing = portBilling(port_data_list, port_args['billing_method'])

        # 得到当月的每日详细值
        day_result = port_billing.getPortDataPerDay()

        # 得到当月的总计值
        month_result = port_billing.getPortDataPerMonth()

        # CSV报表的基本信息
        csv_string = ''
        csv_string += csv_split.join(['设备名称:', port_args['dev_name']])
        csv_string += '\n'
        csv_string += csv_split.join(['端口名称:', port_args['port_name']])
        csv_string += '\n'
        csv_string += csv_split.join(['计费时间段:', port_args['month']])
        csv_string += '\n'

        # CSV报表的计费信息表示 和 当月统计值
        date_list = ['', '月度']
        billing_list = ['计费 (95th)', month_result['report_billing']]
        avrg_list = ['平均值 (In/Out)', month_result['report_avrg']]
        max_list = ['最大值 (In/Out)', month_result['report_max']]
        min_list = ['最小值 (In/Out)', month_result['report_min']]

        # CSV报表的每日详细信息
        for port_item in day_result:
            date_list.append(port_item['date_type'])
            billing_list.append(port_item['report_billing'])
            avrg_list.append(port_item['report_avrg'])
            max_list.append(port_item['report_max'])
            min_list.append(port_item['report_min'])

        # CSV的详细计费字段
        csv_string += '\n'
        csv_string += csv_split.join(date_list)
        csv_string += '\n'
        csv_string += csv_split.join(billing_list)
        csv_string += '\n'
        csv_string += csv_split.join(avrg_list)
        csv_string += '\n'
        csv_string += csv_split.join(max_list)
        csv_string += '\n'
        csv_string += csv_split.join(min_list)
        csv_string += '\n'

        # print(csv_string)
        return csv_string