def sync_feeds(sync=True, force_flush=False): """ POST /feeds?sync=True&force_flush=True :param sync: Boolean. If true, do a sync. If false, don't sync. :param force_flush: Boolean. If true, remove all previous data and replace with data from upstream source :return: """ result = [] if sync: try: result = FeedsUpdateTask.run_feeds_update(force_flush=force_flush) except (LeaseAcquisitionFailedError, LeaseUnavailableError) as e: log.exception( 'Could not acquire lock on feed sync, likely another sync already in progress' ) return make_response_error( 'Feed sync lock already held', in_httpcode=409, details={ 'error_codes': [AnchoreError.FEED_SYNC_ALREADY_IN_PROGRESS.name], 'message': AnchoreError.FEED_SYNC_ALREADY_IN_PROGRESS.value }), 409 except Exception as e: log.exception('Error executing feed update task') return jsonify(make_response_error(e, in_httpcode=500)), 500 return jsonify(result), 200
def do_feed_sync(msg): if 'FeedsUpdateTask' not in locals(): from anchore_engine.services.policy_engine.engine.tasks import FeedsUpdateTask if 'get_selected_feeds_to_sync' not in locals(): from anchore_engine.services.policy_engine.engine.feeds import get_selected_feeds_to_sync handler_success = False timer = time.time() logger.info("FIRING: feed syncer") try: feeds = get_selected_feeds_to_sync(localconfig.get_config()) logger.info('Syncing configured feeds: {}'.format(feeds)) result = FeedsUpdateTask.run_feeds_update(json_obj=msg.get('data')) if result is not None: handler_success = True else: logger.warn('Feed sync task marked as disabled, so skipping') except ValueError as e: logger.warn('Received msg of wrong type') except Exception as err: logger.warn("failure in feed sync handler - exception: " + str(err)) if handler_success: anchore_engine.subsys.metrics.summary_observe('anchore_monitor_runtime_seconds', time.time() - timer, function='do_feed_sync', status="success") else: anchore_engine.subsys.metrics.summary_observe('anchore_monitor_runtime_seconds', time.time() - timer, function='do_feed_sync', status="fail")
def do_feed_sync(msg): if "FeedsUpdateTask" not in locals(): from anchore_engine.services.policy_engine.engine.tasks import FeedsUpdateTask handler_success = False timer = time.time() logger.info("FIRING: feed syncer") try: result = FeedsUpdateTask.run_feeds_update(json_obj=msg.get("data")) if result is not None: handler_success = True else: logger.warn("Feed sync task marked as disabled, so skipping") except ValueError as e: logger.warn("Received msg of wrong type") except Exception as err: logger.warn("failure in feed sync handler - exception: " + str(err)) if handler_success: anchore_engine.subsys.metrics.summary_observe( "anchore_monitor_runtime_seconds", time.time() - timer, function="do_feed_sync", status="success", ) else: anchore_engine.subsys.metrics.summary_observe( "anchore_monitor_runtime_seconds", time.time() - timer, function="do_feed_sync", status="fail", )
def sync_feeds(sync=True, force_flush=False): """ POST /feeds?sync=True&force_flush=True :param sync: Boolean. If true, do a sync. If false, don't sync. :param force_flush: Boolean. If true, remove all previous data and replace with data from upstream source :return: """ result = [] if sync: try: result = FeedsUpdateTask.run_feeds_update(force_flush=force_flush) except LeaseAcquisitionFailedError as e: log.exception( 'Could not acquire lock on feed sync, likely another sync already in progress' ) return make_response_error( 'Failed to execute feed sync', in_httpcode=409, detail= 'Could not acquire lock on feed sync, likely another sync already in progress' ), 409 except Exception as e: log.exception('Error executing feed update task') return make_response_error( 'Failed to execute feed sync due to an internal error', in_httpcode=500), 500 return jsonify(['{}/{}'.format(x[0], x[1]) for x in result]), 200
def sync_feeds(sync=True, force_flush=False): """ POST /feeds?sync=True&force_flush=True :param sync: Boolean. If true, do a sync. If false, don't sync. :param force_flush: Boolean. If true, remove all previous data and replace with data from upstream source :return: """ result = [] if sync: try: result = FeedsUpdateTask.run_feeds_update(force_flush=force_flush) except HTTPException: raise except Exception as e: log.exception('Error executing feed update task') abort( Response(status=500, response=json.dumps({ 'error': 'feed sync failure', 'details': 'Failure syncing feed: {}'.format( e.message if hasattr(e, 'message') else e) }), mimetype='application/json')) return jsonify(['{}/{}'.format(x[0], x[1]) for x in result]), 200