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
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
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
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:
'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
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