def delete_feed(feed): session = db.get_session() try: f = db.lookup_feed(db_session=session, feed_name=feed) if not f: raise ResourceNotFound(resource=feed, detail={}) elif f.enabled: raise ConflictingRequest( message="Cannot delete an enabled feed. Disable the feed first", detail={}, ) except AnchoreApiError: raise except Exception as e: return jsonify(make_response_error(e, in_httpcode=500)), 500 finally: session.rollback() try: f = sync.DataFeeds.delete_feed(feed) if f: return jsonify(_marshall_feed_response(f).to_json()), 200 else: raise ResourceNotFound(feed, detail={}) except KeyError as e: raise ResourceNotFound(resource=str(e), detail={"feed": feed}) except AnchoreApiError: raise except Exception as e: return jsonify(make_response_error(e, in_httpcode=500)), 500
def delete_group(feed, group): session = db.get_session() try: f = db.lookup_feed_group(db_session=session, feed_name=feed, group_name=group) if not f: raise ResourceNotFound(group, detail={}) elif f.enabled: raise ConflictingRequest(message='Cannot delete an enabled feed group. Disable the feed group first', detail={}) except AnchoreApiError: raise except Exception as e: return jsonify(make_response_error(e, in_httpcode=500)), 500 finally: session.rollback() try: g = sync.DataFeeds.delete_feed_group(feed_name=feed, group_name=group) log.info('Flushed group records {}'.format(g)) if g: return jsonify(_marshall_group_response(g)), 200 else: raise ResourceNotFound(group, detail={}) except KeyError as e: raise ResourceNotFound(resource=str(e), detail={'feed': feed, 'group': group}) except AnchoreApiError: raise except Exception as e: log.error('Could not flush feed group {}/{}'.format(feed, group)) return jsonify(make_response_error(e, in_httpcode=500)), 500
def toggle_group_enabled(feed, group, enabled): if type(enabled) != bool: raise BadRequest(message="state must be a boolean", detail={"value": enabled}) if feed == GRYPE_DB_FEED_NAME: raise HTTPNotImplementedError( message= "Enabling and disabling groups for grypedb feed is not currently supported.", detail={}, ) session = db.get_session() try: g = db.set_feed_group_enabled(session, feed, group, enabled) if not g: raise ResourceNotFound(group, detail={}) session.flush() grp = _marshall_group_response(g).to_json() session.commit() return jsonify(grp), 200 except AnchoreApiError: session.rollback() raise except Exception: log.error("Could not update feed group enabled status") session.rollback() raise
def delete_group(feed, group): if feed == GRYPE_DB_FEED_NAME: raise HTTPNotImplementedError( message= "Deleting individual groups for the grypedb feed is not yet supported.", detail={}, ) session = db.get_session() try: f = db.lookup_feed_group(db_session=session, feed_name=feed, group_name=group) if not f: raise ResourceNotFound(group, detail={}) elif f.enabled: raise ConflictingRequest( message= "Cannot delete an enabled feed group. Disable the feed group first", detail={}, ) except AnchoreApiError: raise except Exception as e: return jsonify(make_response_error(e, in_httpcode=500)), 500 finally: session.rollback() try: g = sync.DataFeeds.delete_feed_group(feed_name=feed, group_name=group) log.info("Flushed group records {}".format(g)) if g: return jsonify(_marshall_group_response(g).to_json()), 200 else: raise ResourceNotFound(group, detail={}) except KeyError as e: raise ResourceNotFound(resource=str(e), detail={ "feed": feed, "group": group }) except AnchoreApiError: raise except Exception as e: log.error("Could not flush feed group {}/{}".format(feed, group)) return jsonify(make_response_error(e, in_httpcode=500)), 500
def toggle_feed_enabled(feed, enabled): if type(enabled) != bool: raise BadRequest(message='state must be a boolean', detail={'value': enabled}) session = db.get_session() try: f = db.set_feed_enabled(session, feed, enabled) if not f: raise ResourceNotFound(feed, detail={}) session.flush() updated = _marshall_feed_response(f) session.commit() return jsonify(updated), 200 except AnchoreApiError: session.rollback() raise except Exception as e: log.error('Could not update feed enabled status') session.rollback() return jsonify(make_response_error(e, in_httpcode=500)), 500
def toggle_group_enabled(feed, group, enabled): if type(enabled) != bool: raise BadRequest(message='state must be a boolean', detail={'value': enabled}) session = db.get_session() try: g = db.set_feed_group_enabled(session, feed, group, enabled) if not g: raise ResourceNotFound(group, detail={}) session.flush() grp = _marshall_group_response(g) session.commit() return jsonify(grp), 200 except AnchoreApiError: session.rollback() raise except Exception: log.error('Could not update feed group enabled status') session.rollback() raise