def test_call_insights_recommender_npm(self, mock_get, mock_post): """Test if the correct service is called for the correct ecosystem.""" with app.app_context(): # Test whether the correct service is called for NPM. called_url_json = RecommendationTask.call_insights_recommender([{ "ecosystem": "npm" }]) self.assertTrue('npm-insights' in called_url_json['url']) # Now test whether the correct service is called for maven. called_url_json = RecommendationTask.call_insights_recommender([{ "ecosystem": "maven" }]) self.assertTrue('pgm' in called_url_json['url'])
def recommender(): """Handle POST requests that are sent to /api/v1/recommender REST API endpoint.""" r = {'recommendation': 'failure', 'external_request_id': None} status = 400 input_json = request.get_json() current_app.logger.debug( 'recommender/ request with payload: {p}'.format(p=input_json)) if input_json and 'external_request_id' in input_json and input_json[ 'external_request_id']: try: check_license = request.args.get('check_license', 'false') == 'true' persist = request.args.get('persist', 'true') == 'true' r = RecommendationTask().execute(input_json, persist=persist, check_license=check_license) status = 200 except Exception as e: r = { 'recommendation': 'unexpected error', 'external_request_id': input_json.get('external_request_id'), 'message': '%s' % e } status = 500 return flask.jsonify(r), status
def recommender(): r = {'recommendation': 'failure', 'external_request_id': None} input_json = request.get_json() if input_json: try: r = RecommendationTask().execute(input_json) except Exception as e: r = { 'recommendation': 'unexpected error', 'external_request_id': input_json.get('external_request_id'), 'message': '%s' % e } return flask.jsonify(r)
def recommender(): r = {'recommendation': 'failure', 'external_request_id': None} status = 400 input_json = request.get_json() if input_json and 'external_request_id' in input_json and input_json['external_request_id']: try: r = RecommendationTask().execute(input_json) status = 200 except Exception as e: r = { 'recommendation': 'unexpected error', 'external_request_id': input_json.get('external_request_id'), 'message': '%s' % e } status = 500 return flask.jsonify(r), status
def recommender(payload: ServiceInput, request: Request, check_license: bool = True, persist: bool = True): """Handle POST requests that are sent to /api/v1/recommender REST API endpoint.""" r = {'recommendation': 'failure', 'external_request_id': None} request_dict = dict(request) metrics_payload = { 'pid': os.getpid(), 'hostname': os.environ.get("HOSTNAME"), 'endpoint': request_dict['path'], 'request_method': request_dict['method'], 'status_code': 200 } input_json = json.loads(payload.json()) logger.info('recommender/ request with payload: {p}'.format(p=input_json)) if input_json and 'external_request_id' in input_json and input_json[ 'external_request_id']: try: logger.info('### {} - {}'.format(check_license, persist)) r = RecommendationTask().execute(input_json, persist=persist, check_license=check_license) except Exception as e: r = { 'recommendation': 'unexpected error', 'external_request_id': input_json.get('external_request_id'), 'message': '%s' % e } metrics_payload['status_code'] = 400 try: metrics_payload['value'] = get_time_delta( audit_data=r['result']['_audit']) push_data(metrics_payload) except KeyError: pass return r, metrics_payload['status_code']
def recommender(): """Handle POST requests that are sent to /api/v1/recommender REST API endpoint.""" r = {'recommendation': 'failure', 'external_request_id': None} metrics_payload = { 'pid': os.getpid(), 'hostname': os.environ.get("HOSTNAME"), 'endpoint': request.endpoint, 'request_method': request.method, 'status_code': 200 } input_json = request.get_json() current_app.logger.debug( 'recommender/ request with payload: {p}'.format(p=input_json)) if input_json and 'external_request_id' in input_json and input_json[ 'external_request_id']: try: check_license = request.args.get('check_license', 'false') == 'true' persist = request.args.get('persist', 'true') == 'true' r = RecommendationTask().execute(input_json, persist=persist, check_license=check_license) except Exception as e: r = { 'recommendation': 'unexpected error', 'external_request_id': input_json.get('external_request_id'), 'message': '%s' % e } metrics_payload['status_code'] = 400 try: metrics_payload['value'] = get_time_delta( audit_data=r['result']['_audit']) push_data(metrics_payload) except KeyError: pass return flask.jsonify(r), metrics_payload['status_code']
def recommender_result(self, input_json, persist): self.recommender_task = RecommendationTask().execute(arguments=input_json, persist=persist)
def recommender_result(self, input_json, persist): """Start the recommendation task asynchronously.""" self.recommender_task = yield from self.loop.run_in_executor( self.executor, RecommendationTask().execute, input_json, persist)