Ejemplo n.º 1
0
def delete_file_by_id(user, file_id):
    file = v1_utils.verify_existence_and_get(file_id, _TABLE)

    if not user.is_in_team(file['team_id']):
        raise dci_exc.Unauthorized()

    values = {'state': 'archived'}
    where_clause = _TABLE.c.id == file_id

    with flask.g.db_conn.begin():
        query = _TABLE.update().where(where_clause).values(**values)
        result = flask.g.db_conn.execute(query)

        if not result.rowcount:
            raise dci_exc.DCIDeleteConflict('File', file_id)

        return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 2
0
def delete_meta(job_id, meta_id):
    """Delete a meta from a specific job."""

    meta_retrieved = v1_utils.verify_existence_and_get(meta_id, _TABLE)

    if meta_retrieved['job_id'] != job_id:
        raise dci_exc.DCIDeleteConflict(
            "Meta '%s' is not associated to job '%s'." % (meta_id, job_id))

    query = _TABLE.delete().where(_TABLE.c.id == meta_id)

    result = flask.g.db_conn.execute(query)

    if not result.rowcount:
        raise dci_exc.DCIConflict('Meta deletion conflict', meta_id)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 3
0
def delete_component_by_id(user, c_id):
    # get If-Match header
    if not auth.is_admin(user):
        raise auth.UNAUTHORIZED

    v1_utils.verify_existence_and_get(c_id, _TABLE)

    values = {'state': 'archived'}
    where_clause = sql.and_(_TABLE.c.id == c_id)
    query = _TABLE.update().where(where_clause).values(**values)

    result = flask.g.db_conn.execute(query)

    if not result.rowcount:
        raise dci_exc.DCIDeleteConflict('Component', c_id)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 4
0
def delete_component_by_id(user, c_id):
    component = v1_utils.verify_existence_and_get(c_id, _TABLE)

    if str(component['topic_id']) not in v1_utils.user_topic_ids(user):
        raise dci_exc.Unauthorized()

    values = {'state': 'archived'}
    where_clause = sql.and_(
        _TABLE.c.id == c_id
    )
    query = _TABLE.update().where(where_clause).values(**values)

    result = flask.g.db_conn.execute(query)

    if not result.rowcount:
        raise dci_exc.DCIDeleteConflict('Component', c_id)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 5
0
def delete_configuration_by_id(user, r_id, c_id):
    remoteci = v1_utils.verify_existence_and_get(r_id, models.REMOTECIS)
    v1_utils.verify_existence_and_get(c_id, _RCONFIGURATIONS)

    if not user.is_in_team(remoteci['team_id']):
        raise auth.UNAUTHORIZED

    with flask.g.db_conn.begin():
        values = {'state': 'archived'}
        query = _RCONFIGURATIONS.update().where(
            _RCONFIGURATIONS.c.id == c_id).values(**values)

        result = flask.g.db_conn.execute(query)

        if not result.rowcount:
            raise dci_exc.DCIDeleteConflict('rconfiguration', c_id)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 6
0
def delete_role_by_id(user, role_id):
    # get If-Match header
    if_match_etag = utils.check_and_get_etag(flask.request.headers)
    v1_utils.verify_existence_and_get(role_id, _TABLE)

    if not auth.is_admin(user):
        raise auth.UNAUTHORIZED

    values = {'state': 'archived'}
    where_clause = sql.and_(_TABLE.c.etag == if_match_etag,
                            _TABLE.c.id == role_id)
    query = _TABLE.update().where(where_clause).values(**values)
    result = flask.g.db_conn.execute(query)

    if not result.rowcount:
        raise dci_exc.DCIDeleteConflict('Role', role_id)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 7
0
def delete_test_by_id(user, t_id):
    v1_utils.verify_existence_and_get(t_id, _TABLE)

    with flask.g.db_conn.begin():
        values = {'state': 'archived'}
        where_clause = _TABLE.c.id == t_id
        query = _TABLE.update().where(where_clause).values(**values)
        result = flask.g.db_conn.execute(query)

        if not result.rowcount:
            raise dci_exc.DCIDeleteConflict('Test', t_id)

        for model in [models.FILES]:
            query = model.update().where(model.c.test_id == t_id).values(
                **values)
            flask.g.db_conn.execute(query)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 8
0
def delete_file_by_id(user, file_id):
    file = v1_utils.verify_existence_and_get(file_id, _TABLE)

    if not (auth.is_admin(user) or auth.is_in_team(user, file['team_id'])):
        raise auth.UNAUTHORIZED

    values = {'state': 'archived'}
    where_clause = _TABLE.c.id == file_id

    with flask.g.db_conn.begin():
        query = _TABLE.update().where(where_clause).values(**values)
        result = flask.g.db_conn.execute(query)

        if not result.rowcount:
            raise dci_exc.DCIDeleteConflict('File', file_id)
        files_events.create_event(file_id, models.FILES_DELETE)

        return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 9
0
def delete_feeder_by_id(user, f_id):
    if_match_etag = utils.check_and_get_etag(flask.request.headers)
    feeder = v1_utils.verify_existence_and_get(f_id, _TABLE)

    if not user.is_in_team(feeder['team_id']):
        raise auth.UNAUTHORIZED

    with flask.g.db_conn.begin():
        values = {'state': 'archived'}
        where_clause = sql.and_(_TABLE.c.etag == if_match_etag,
                                _TABLE.c.id == f_id)
        query = _TABLE.update().where(where_clause).values(**values)

        result = flask.g.db_conn.execute(query)

        if not result.rowcount:
            raise dci_exc.DCIDeleteConflict('Feeder', f_id)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 10
0
def delete_user_by_id(user, user_id):
    # get If-Match header
    if_match_etag = utils.check_and_get_etag(flask.request.headers)

    _verify_existence_and_get_user(user_id)

    if user.is_not_super_admin():
        raise dci_exc.Unauthorized()

    values = {'state': 'archived'}
    where_clause = sql.and_(_TABLE.c.etag == if_match_etag,
                            _TABLE.c.id == user_id)
    query = _TABLE.update().where(where_clause).values(**values)

    result = flask.g.db_conn.execute(query)

    if not result.rowcount:
        raise dci_exc.DCIDeleteConflict('User', user_id)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 11
0
def delete_topic_by_id(user, topic_id):
    if user.is_not_super_admin() and user.is_not_epm():
        raise dci_exc.Unauthorized()

    topic_id = v1_utils.verify_existence_and_get(topic_id, _TABLE, get_id=True)

    with flask.g.db_conn.begin():
        values = {'state': 'archived'}
        where_clause = sql.and_(_TABLE.c.id == topic_id)
        query = _TABLE.update().where(where_clause).values(**values)

        result = flask.g.db_conn.execute(query)

        if not result.rowcount:
            raise dci_exc.DCIDeleteConflict('Topic', topic_id)

        query = models.COMPONENTS.update().where(
            models.COMPONENTS.c.topic_id == topic_id).values(**values)
        flask.g.db_conn.execute(query)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 12
0
def delete_component_file(user, c_id, f_id):
    COMPONENT_FILES = models.COMPONENT_FILES
    component = v1_utils.verify_existence_and_get(c_id, _TABLE)
    if str(component['topic_id']) not in v1_utils.user_topic_ids(user):
        raise dci_exc.Unauthorized()
    v1_utils.verify_existence_and_get(f_id, COMPONENT_FILES)

    where_clause = COMPONENT_FILES.c.id == f_id

    query = COMPONENT_FILES.delete().where(where_clause)

    result = flask.g.db_conn.execute(query)

    if not result.rowcount:
        raise dci_exc.DCIDeleteConflict('Component File', f_id)

    store = dci_config.get_store('components')
    file_path = files_utils.build_file_path(component['topic_id'], c_id, f_id)
    store.delete(file_path)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 13
0
def delete_component_file(user, c_id, f_id):
    if not auth.is_admin(user):
        raise auth.UNAUTHORIZED

    COMPONENT_FILES = models.COMPONENT_FILES
    component = v1_utils.verify_existence_and_get(c_id, _TABLE)
    v1_utils.verify_existence_and_get(f_id, COMPONENT_FILES)

    where_clause = COMPONENT_FILES.c.id == f_id

    query = COMPONENT_FILES.delete().where(where_clause)

    result = flask.g.db_conn.execute(query)

    if not result.rowcount:
        raise dci_exc.DCIDeleteConflict('Component File', f_id)

    swift = dci_config.get_store('components')
    file_path = swift.build_file_path(component['topic_id'], c_id, f_id)
    swift.delete(file_path)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 14
0
def delete_topic_by_id(user, topic_id):
    if not (auth.is_admin(user)):
        raise auth.UNAUTHORIZED

    topic_id = v1_utils.verify_existence_and_get(topic_id, _TABLE, get_id=True)

    with flask.g.db_conn.begin():
        values = {'state': 'archived'}
        where_clause = sql.and_(_TABLE.c.id == topic_id)
        query = _TABLE.update().where(where_clause).values(**values)

        result = flask.g.db_conn.execute(query)

        if not result.rowcount:
            raise dci_exc.DCIDeleteConflict('Topic', topic_id)

        for model in [models.COMPONENTS, models.JOBDEFINITIONS]:
            query = model.update().where(model.c.topic_id == topic_id).values(
                **values)
            flask.g.db_conn.execute(query)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 15
0
def delete_jobdefinition_by_id(user, jd_id):
    # get If-Match header
    if_match_etag = utils.check_and_get_etag(flask.request.headers)

    v1_utils.verify_existence_and_get(jd_id, _TABLE)

    with flask.g.db_conn.begin():
        values = {'state': 'archived'}
        where_clause = sql.and_(_TABLE.c.etag == if_match_etag,
                                _TABLE.c.id == jd_id)
        query = _TABLE.update().where(where_clause).values(**values)

        result = flask.g.db_conn.execute(query)

        if not result.rowcount:
            raise dci_exc.DCIDeleteConflict('Jobdefinition', jd_id)

        for model in [models.JOBS]:
            query = model.update().where(model.c.jobdefinition_id == jd_id) \
                         .values(**values)
            flask.g.db_conn.execute(query)

    return flask.Response(None, 204, content_type='application/json')
Ejemplo n.º 16
0
def delete_topic_by_id(user, topic_id):
    topic = v1_utils.verify_existence_and_get(topic_id, _TABLE)
    if not user.is_super_admin() and \
       not ((user.is_product_owner() or user.is_feeder()) and
            user.product_id == topic['product_id']):
        raise auth.UNAUTHORIZED

    topic_id = v1_utils.verify_existence_and_get(topic_id, _TABLE, get_id=True)

    with flask.g.db_conn.begin():
        values = {'state': 'archived'}
        where_clause = sql.and_(_TABLE.c.id == topic_id)
        query = _TABLE.update().where(where_clause).values(**values)

        result = flask.g.db_conn.execute(query)

        if not result.rowcount:
            raise dci_exc.DCIDeleteConflict('Topic', topic_id)

        query = models.COMPONENTS.update().where(
            models.COMPONENTS.c.topic_id == topic_id).values(**values)
        flask.g.db_conn.execute(query)

    return flask.Response(None, 204, content_type='application/json')