Exemple #1
0
def wait_db(config, db_name):
    m = DatabaseWrapper(config)

    start_time = time.time()

    connected = m.check_connections()[db_name]

    while not connected and (time.time() - start_time) < START_TIMEOUT:
        time.sleep(2)
        connected = m.check_connections()[db_name]

    return connected
Exemple #2
0
    def put(self, name):
        params = request.json.get('params')
        if not isinstance(params, dict):
            abort(400, "type of 'params' must be dict")

        is_test = params.get('test', False)
        if is_test:
            del params['test']

        integration = get_integration(name)
        if integration is not None:
            abort(400, f"Integration with name '{name}' already exists")
        try:
            if 'enabled' in params:
                params['publish'] = params['enabled']
                del params['enabled']
            ca.config_obj.add_db_integration(name, params)

            mdb = ca.mindsdb_native
            cst = ca.custom_models
            model_data_arr = get_all_models_meta_data(mdb, cst)
            dbw = DatabaseWrapper(ca.config_obj)
            dbw.register_predictors(model_data_arr)
        except Exception as e:
            print(traceback.format_exc())
            abort(500, f'Error during config update: {str(e)}')

        if is_test:
            cons = dbw.check_connections()
            ca.config_obj.remove_db_integration(name)
            return {'success': cons[name]}, 200

        return '', 200
Exemple #3
0
 def get(self, name):
     '''return datasource metadata'''
     dbw = DatabaseWrapper(ca.config_obj)
     for db_name, connected in dbw.check_connections().items():
         if db_name == name:
             return connected, 200
     return f'Can\'t find database integration: {name}', 400
Exemple #4
0
    model_data_arr = [{
        'name':
        x['name'],
        'predict':
        x['predict'],
        'data_analysis':
        mdb.get_model_data(x['name'])['data_analysis_v2']
    } for x in mdb.get_models()]

    model_data_arr.extend(cst.get_models())

    dbw = DatabaseWrapper(config)
    dbw.register_predictors(model_data_arr)

    for broken_name in [
            name for name, connected in dbw.check_connections().items()
            if connected is False
    ]:
        print(
            f'Error failed to integrate with database aliased: {broken_name}')

    ctx = mp.get_context('spawn')

    for api_name, api_data in apis.items():
        print(f'{api_name} API: starting...')
        try:
            p = ctx.Process(target=start_functions[api_name],
                            args=(config_path, args.verbose))
            p.start()
            api_data['process'] = p
        except Exception as e:
Exemple #5
0
        'mongodb': start_mongo
    }

    archive_obsolete_predictors(config, '2.11.0')

    mdb = MindsdbNative(config)
    cst = CustomModels(config)

    remove_corrupted_predictors(config, mdb)

    model_data_arr = get_all_models_meta_data(mdb, cst)

    dbw = DatabaseWrapper(config)
    dbw.register_predictors(model_data_arr)

    for broken_name in [name for name, connected in dbw.check_connections().items() if connected is False]:
        log.error(f'Error failed to integrate with database aliased: {broken_name}')

    ctx = mp.get_context('spawn')

    for api_name, api_data in apis.items():
        print(f'{api_name} API: starting...')
        try:
            p = ctx.Process(target=start_functions[api_name], args=(config_path, args.verbose))
            p.start()
            api_data['process'] = p
        except Exception as e:
            close_api_gracefully(apis)
            log.error(f'Failed to start {api_name} API with exception {e}\n{traceback.format_exc()}')
            raise
Exemple #6
0
 def get(self, name):
     if get_integration(name) is None:
         abort(404, f'Can\'t find database integration: {name}')
     dbw = DatabaseWrapper(ca.config_obj)
     connections = dbw.check_connections()
     return connections.get(name, False), 200