Example #1
0
    def source_dbs(cls):
        if not getattr(cls, "source_db_objects", None):
            sources = metrics_session.query(cls).all()
            source_dbs = [s.get_db_object() for s in sources]
            cls.source_db_objects = source_dbs

        return cls.source_db_objects
Example #2
0
 def schema_changes(self):
     return (
         metrics_session.query(MetricFromCheck)
         .filter_by(table_id=self.id, metric="schema_change")
         .order_by("created_at")
         .all()
     )
Example #3
0
 def get_all_tables_per_namespace(cls, db_name, namespace):
     return (
         metrics_session.query(cls)
         .filter(cls.source_db == db_name)
         .filter(cls.namespace == namespace)
         .all()
     )
Example #4
0
 def get_monitored_tables(cls, db_name):
     return (
         metrics_session.query(cls)
         .filter(cls.active == True)
         .filter(cls.source_db == db_name)
         .all()
     )
Example #5
0
 def get_monitored_tables(cls, data_source):
     return (
         metrics_session.query(cls)
         .filter(cls.active == True)
         .filter(cls.data_source == data_source)
         .all()
     )
Example #6
0
 def last_records_added(self):
     return (
         metrics_session.query(MetricFromCheck)
         .filter_by(table_id=self.id, metric="delay")
         .order_by(MetricFromCheck.created_at.desc())
         .limit(1)
         .first()
     )
Example #7
0
def run_checks_for_table(db, table, conf):

    checks = metrics_session.query(Check).filter(Check.table_id == table.id).all()

    for check in checks:
        query = check.query
        if check.query["type"] == "standard":
            func = get_function(check.query["path"])
            result = func(
                db=db, table=table, check=check, conf=conf, **check.query["params"]
            )
        elif check.query["type"] == "sql":
            sql_code = check.query["sql"]
            result = db.check_custom_query(check.table, sql_code, conf=conf)

        MetricFromCheck.add_metrics(result, check, conf)
Example #8
0
    def create_admin_user_if_not_exist(cls):

        assert os.environ.get(
            'REDATA_ADMIN_USER'), 'please set env variable for admin user'
        assert os.environ.get('REDATA_ADMIN_PASSWORD'
                              ), 'please set env variable for admin password'

        is_admin = metrics_session.query(cls).filter(
            cls.login == os.environ.get('REDATA_ADMIN_USER')).count()
        if not is_admin:
            user = cls(login=os.environ.get('REDATA_ADMIN_USER'),
                       password=generate_password_hash(
                           os.environ.get('REDATA_ADMIN_PASSWORD')))
            metrics_session.add(user)
            metrics_session.commit()

            print("Created admin user")
Example #9
0
def run_checks_for_table(db, table, conf):

    checks = metrics_session.query(Check).filter(
        Check.table_id == table.id).all()

    for check in checks:
        query = check.query
        if check.query['type'] == 'standard':
            func = get_function(check.query['path'])
            result = func(db=db,
                          table=table,
                          check=check,
                          conf=conf,
                          **check.query['params'])
        else:
            #TODO run raw query on DB
            result = None

        MetricFromCheck.add_metrics(result, check, conf)
Example #10
0
    def update_schema_for_table(cls, table, schema_cols):
        table = metrics_session.query(cls).filter(
            cls.table_name == table).first()

        table.schema = {'columns': schema_cols}
        metrics_session.commit()
Example #11
0
 def get_user(self):
     return metrics_session.query(User).filter_by(
         login=self.login.data).first()
Example #12
0
 def load_user(user_id):
     return metrics_session.query(User).get(user_id)
Example #13
0
 def get_pending_run(cls):
     return (metrics_session.query(cls).filter(cls.status == "pending")).first()
Example #14
0
 def get_not_started_run(cls):
     return (metrics_session.query(cls).filter(cls.status == "not started")).first()