def _run(self): """ process metric(s) """ for row in self._elements: metric = None try: #start = time.time() if row['type'] == 'metric': metric = MetricElement(row['element_id'], self.index_interval_only) else: metric = MultiMetricElement(row['element_id'], self.index_interval_only) metric.init() metric.set_logger(self._logger) metric.update(self.segment_value_id, self.charting_interval_id) #print "it took", time.time() - start, "seconds." except MySQLdb.Error, message: self._logger.error("Metric generator. Report %s update failed. SQL error %s" % (row['element_id'], message)) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message':'metric %s update failed. SQL error %s' % (row['element_id'], message)}) if metric: metric.unlock() continue except Exception, exc: self._logger.error("Metric generator. Report %s update failed. Exception %s" % (row['element_id'], exc)) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message':'metric %s update failed. %s' % (row['element_id'], exc)}) if metric: metric.unlock() continue
def _run(self): """ process report(s) """ for row in self._elements: report = None try: report = Report(self.command, self.process_dataset_ids, self.initial_measurement_time, self.final_measurement_time) report.set_logger(self._logger) #start = time.time() report.init(row['element_id']) res = report.update(self.segment_value_id) #print "it took", time.time() - start, "seconds." except MySQLdb.Error, message: self._logger.error("Report generator. Report %s update failed. SQL error %s" % (row['element_id'], message)) log_traceback(self._logger, traceback) print simplejson.dumps({'status': 'ERROR', 'message': 'report %s update failed. SQL error %s' % (row['element_id'], message)}) if report: report.unlock() continue except Exception, exc: self._logger.error("Report generator. Report %s update failed. Exception %s" % (row['element_id'], exc)) log_traceback(self._logger, traceback) print simplejson.dumps({'status': 'ERROR', 'message': 'report %s update failed. %s' % (row['element_id'], exc)}) if report: report.unlock() continue
def _drop_table(self): try: data_manager = ReportDataTableManager(self.element_id, self._logger) table_name = data_manager.drop_table() except Exception, e: log_traceback(self._logger, traceback) print simplejson.dumps({'status': 'ERROR', 'message': "%s" % e}) sys.exit()
def _generate_data(self): try: data_manager = ReportDataTableManager(self.element_id, self._logger) table_name = data_manager.generate_data(self.initial_measurement_time) except Exception, e: log_traceback(self._logger, traceback) print simplejson.dumps({'status': 'ERROR', 'message': "%s" % e}) sys.exit()
def __init__(self) : logger = MLogger('report generator') self._logger = logger.get_logger() try: self._db = DBManager().get_query() except MySQLdb.Error, message: self._logger.error("Report generator. Init mysql db manager error - %s" % message) log_traceback(self._logger, traceback) print simplejson.dumps({'status': 'ERROR', 'message': '%s' % message}) sys.exit()
def _check_element(self): try: res = self._db.Query("""SELECT dashboard_element.element_id FROM dashboard_element WHERE dashboard_element.`type`='internal report' AND element_id = %s """, (self.element_id, )) except MySQLdb.Error, message: self._logger.error("Report generator. Try to get element %s" % self.element_id) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message':'SQL error %s' % message}) sys.exit()
def run(self, validator_command, element_id, extra_id): fetched_rows = 0 self._logger.info('Generator run: %s' % ' '.join(sys.argv)) try: res = self._db.Query("""SELECT dashboard_element.element_id FROM dashboard_element WHERE dashboard_element.`type`='internal report' AND element_id = %s""", (element_id, )) except MySQLdb.Error, message: self._logger.error("Report validator. Try to get element %s. SQL error %s" % (element_id, message)) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message':'SQL error %s' % message, 'fetched_rows': ''}) sys.exit()
def run(self): """ Process command """ self._logger.info('Generator run: %s' % ' '.join(sys.argv)) if self.element_id: # process specified report if self.command in self.delete_commands: # process delete command for specified report report = ReportPurge(self.element_id, self._logger) message = '' try: if self.command == 'delete_all': # delete whole report report.delete_all() message = 'Report %s deleted successfully.' % self.element_id elif self.command == 'delete_segment': # delete segment if self.segment_value_id is None: raise Exception('segment is not specified') report.delete_segment(self.segment_value_id) message = 'Segment %s of report %s deleted successfully.' % (self.segment_value_id, self.element_id) elif self.command == 'delete_pivot': # delete pivot if self.pivot_id is None: raise Exception('pivot is not specified') report.delete_pivot(self.pivot_id) message = 'Pivot %s of report %s deleted successfully.' % (self.pivot_id, self.element_id) elif self.command == 'delete_chart': # delete chart if self.chart_id is None: raise Exception('chart is not specified') report.delete_chart(self.chart_id) message = 'Chart %s of report %s deleted successfully.' % (self.chart_id, self.element_id) except MySQLdb.Error, message: # process Mysql error self._logger.error("Report generator. Report %s update failed. SQL error %s" % (self.element_id, message)) log_traceback(self._logger, traceback) print simplejson.dumps({'status': 'ERROR', 'message': 'SQL error %s' % message}) sys.exit() except Exception, exc: # process any other error self._logger.error("Report generator. Report %s update failed. Exception %s" % (self.element_id, exc)) log_traceback(self._logger, traceback) print simplejson.dumps({'status': 'ERROR', 'message': 'report %s update failed. %s' % (self.element_id, exc)}) sys.exit() print simplejson.dumps({'status': 'OK', 'message': message})
def _run_all(self): """ fetch all enabled metrics """ try: res = self._db.Query("""SELECT dashboard_element.element_id, dashboard_element.`type` FROM dashboard_element WHERE (dashboard_element.`type`='metric' OR dashboard_element.`type`='multi-metric chart') AND enabled_ind = 'Y' ORDER BY element_id""") except MySQLdb.Error, message: self._logger.error("Metric generator. Try to get all elements sql error - %s" % message) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message':'SQL error %s' % message}) sys.exit()
def _run_one(self): """ fetch specified metric """ try: res = self._db.Query("""SELECT dashboard_element.element_id, dashboard_element.`type` FROM dashboard_element WHERE (dashboard_element.`type`='metric' OR dashboard_element.`type`='multi-metric chart') AND element_id = %s """, (self.element_id, )) #AND enabled_ind = 'Y' except MySQLdb.Error, message: self._logger.error("Metric generator. Try to get element %s" % self.element_id) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message':'SQL error %s' % message}) sys.exit()
def run(self): """ Process command """ self._logger.info('Generator run: %s' % ' '.join(sys.argv)) if self.element_id: # process specified metric if self.command in self.delete_commands: # process delete command metric = MetricPurge(self.element_id, self._logger) message = '' try: if self.command == 'delete_all': # delete whole metric metric.delete_all() message = 'Metric %s deleted successfully.' % self.element_id elif self.command == 'delete_segment': # delete segment if self.segment_value_id is None: raise Exception('segment is not specified') metric.delete_segment(self.segment_value_id) message = 'Segment %s of report %s deleted successfully.' % (self.segment_value_id, self.element_id) elif self.command == 'delete_interval': # delete interval if self.charting_interval_id is None: raise Exception('interval is not specified') metric.delete_interval(self.charting_interval_id, self.segment_value_id) message = 'Interval %s of metric %s deleted successfully.' % (self.charting_interval_id, self.element_id) except MySQLdb.Error, message: # process Mysql error self._logger.error("Metric generator. Metric %s update failed. SQL error %s" % (self.element_id, message)) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message':'SQL error %s' % message}) sys.exit() except Exception, exc: # process any other error self._logger.error("Metric generator. Metric %s update failed. Exception %s" % (self.element_id, exc)) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message': 'metric %s update failed. %s' % (self.element_id, exc)}) sys.exit() print simplejson.dumps({'status':'OK', 'message': message})
clone_drill_to_links = '-d' in params if '-t' in params: _clone_element(db, orig_element_id, new_element_id) # try: # _clone_element(int(params[0]), int(params[1])) # except Exception, e: # # pass warning from MySQL # if str(e) == 'No data - zero rows fetched, selected, or processed': # pass # else: # raise clone(db, orig_element_id, new_element_id, clone_pivots, clone_charts, clone_drill_to_links) except MySQLdb.Error, message: error_message = "Report duplicator. Coping report %s to %s failed. SQL error %s" % (orig_element_id, new_element_id, message) _logger.error(error_message) log_traceback(_logger, traceback) print simplejson.dumps({'status':'ERROR', 'message': error_message}) exit() except Exception, exc: error_message = "Report duplicator. Coping report %s to %s failed. Exception %s" % (orig_element_id, new_element_id, exc) _logger.error(error_message) log_traceback(_logger, traceback) print simplejson.dumps({'status':'ERROR', 'message': error_message}) exit() print simplejson.dumps({'status':'OK', 'message': ''}) else: print usage sys.exit() else: print usage
command, params = validator_commands[validator_command] except ValueError: self.unknown_command() #if validator_command in ['restore_validation_data', 'saving_report', 'save_validation_data']: if validator_command in ['restore_validation_data']: report.get_data = False else: report.get_data = True report.init(element_id) if command: fetched_rows = command(**params) except MySQLdb.Error, message: self._logger.error("Report validator. Try to validate element %s. SQL error %s" % (element_id, message)) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message':'validation failed. SQL error %s' % message, 'fetched_rows':''}) sys.exit() except Exception, exc: self._logger.error("Report validator. Try to validate element %s. Exception %s" % (element_id, exc)) log_traceback(self._logger, traceback) print simplejson.dumps({'status':'ERROR', 'message':'validation failed. %s' % exc, 'fetched_rows': ''}) sys.exit() print simplejson.dumps({'status':'OK', 'message':'report validated successfully', 'fetched_rows': fetched_rows}) def unknown_command(self): print simplejson.dumps({'status': 'ERROR', 'message': 'Unknown validation command', 'fetched_rows':''}) sys.exit() if __name__ == "__main__":