def generate_fee_data(cls, item_search_result, awsname): result = {} # table_head = AWS_FEE_TABEL_HEAD row_content_generator = RowContentGeneratorFactory()\ .produce_generator(awsname) assert row_content_generator != None, 'Row type do not exists' table_head = row_content_generator.get_head() metric_count = 0 metric_result = [] for s in item_search_result: if s.itemtype.aws != None and s.itemtype.aws.awsname == awsname: try: row = row_content_generator.id_2_content(s) except Exception, e: continue metric_result.append(row) metric_count += 1
def generate_by_group_result_no_fee(cls, item_search_result, asg_name=None): result = {} row_content_generator = RowContentGeneratorFactory()\ .produce_generator(BY_GROUP_RESULT) assert row_content_generator != None, 'Row type do not exists' table_head = row_content_generator.get_head() metric_count = 0 metric_result = [] for s in item_search_result: if s.itemtype.aws != None or s.itemtype.itemunit == None: continue if s.itemtype.zabbixvaluetype is not None and int( s.itemtype.zabbixvaluetype) not in [0, 3, 15]: continue if asg_name != None and s.host.service.servicename != asg_name: continue if s.host.service is None: continue try: tmp_row = row_content_generator.id_2_content(s) except Exception, e: continue if tmp_row not in metric_result: metric_result.append(tmp_row) metric_count += 1
def generate_per_instance_result_no_fee(cls, item_search_result, asg_name=None): result = {} row_content_generator = RowContentGeneratorFactory()\ .produce_generator(PER_INSTANCE_RESULT) assert row_content_generator != None, 'Row type do not exists' metric_count = 0 metric_result = [] table_head = row_content_generator.get_head() for s in item_search_result: if s.itemtype.aws != None or s.itemtype.itemunit == None: continue if s.itemtype.zabbixvaluetype is not None and int( s.itemtype.zabbixvaluetype) not in [0, 3, 15]: continue if asg_name != None and s.host.service.servicename != asg_name: continue try: row = row_content_generator.id_2_content(s) except Exception, e: continue metric_result.append(row) metric_count += 1
def save_chart(cls,selected_metrics,chart_config,windowname,user,index,window_type,page): if window_type == WINDOW_CHART: tmp_window = user.windows.filter_by(windowname=windowname).filter_by(type=window_type).first() if tmp_window != None: raise Exception('same name for saving is already exists') window = Window(windowname,window_type,index,user,page) db.session.add(window) sm = Selectedmetrics(window) db.session.add(sm) for option_iter in selected_metrics: option = Option(option_iter,sm) db.session.add(option) for table_title_iter in selected_metrics[option_iter]: dt = Displaytable(table_title_iter,option) db.session.add(dt) row_content_generator = RowContentGeneratorFactory().\ produce_generator(table_title_iter) assert row_content_generator != None, 'undefined' + \ ' row_content_generator' table_head = row_content_generator.get_head() for td_content in selected_metrics[option_iter][table_title_iter]['metric_result']: dtr = Displaytablerow(dt) db.session.add(dtr) assert len(table_head) == len(td_content) for i in range(len(td_content)): attr = Attr(table_head[i],td_content[i],dtr,None) db.session.add(attr) cc = Chartconfig(window) db.session.add(cc) for key in chart_config: tmp_attr = Attr(key,chart_config[key],None,cc) db.session.add(tmp_attr) return window
def load_window_chart(cls,windowid): result = {} window = Window.query.get(windowid) if window == None: raise Exception('window do not exist') selected_metrics = {} selectedmetrics = window.selectedmetrics.first() chartconfig = window.chartconfig.first() chart_config = {} if selectedmetrics != None: for option in selectedmetrics.options.all(): selected_metrics[option.optionname] = {} for dt in option.displaytables.all(): selected_metrics[option.optionname][dt.displaytablename] = {} row_content_generator = RowContentGeneratorFactory()\ .produce_generator(dt.displaytablename) assert row_content_generator != None, 'not defined ' + \ 'row_content_generator' table_head = row_content_generator.get_head() if table_head == None: raise Exception('unknown table head') selected_metrics[option.optionname][dt.displaytablename]['metric_count'] = 0 selected_metrics[option.optionname][dt.displaytablename]['metric_result'] = [] selected_metrics[option.optionname][dt.displaytablename]['table_head'] = table_head for dtr in dt.rows.all(): selected_metrics[option.optionname][dt.displaytablename]['metric_count'] += 1 tmp_arr = list(table_head) for attr in dtr.attrs.all(): tmp_arr[table_head.index(attr.attrname)] = attr.attrvalue item_list = row_content_generator.content_2_id(tmp_arr) if len(item_list) > 0: item = Item.query.get(item_list[0]) tmp_arr = row_content_generator.id_2_content(item) selected_metrics[option.optionname][dt.displaytablename]['metric_result'].append(tmp_arr) if chartconfig != None: for attr in chartconfig.attrs.all(): chart_config[attr.attrname] = attr.attrvalue if chart_config['use_utc'] == '0': chart_config['use_utc'] = False elif chart_config['use_utc'] == '1': chart_config['use_utc'] = True result['selected_metrics'] = selected_metrics result['chart_config'] = chart_config result['chart_name'] = window.windowname return result