Example #1
0
def test_delete_project(
    db: DBInterface,
    db_session: sqlalchemy.orm.Session,
):
    project_name = "project-name"
    project_description = "some description"
    db.create_project(
        db_session,
        mlrun.api.schemas.Project(name=project_name,
                                  description=project_description),
    )
    db.delete_project(db_session, project_name)

    with pytest.raises(mlrun.errors.MLRunNotFoundError):
        db.get_project(db_session, project_name)
Example #2
0
def test_delete_project_with_resources(db: DBInterface,
                                       db_session: sqlalchemy.orm.Session):
    project_to_keep = "project-to-keep"
    project_to_remove = "project-to-remove"
    _create_resources_of_all_kinds(db, db_session, project_to_keep)
    _create_resources_of_all_kinds(db, db_session, project_to_remove)
    project_to_keep_table_name_records_count_map_before_project_removal = _assert_resources_in_project(
        db, db_session, project_to_keep)
    _assert_resources_in_project(db, db_session, project_to_remove)
    db.delete_project(db_session, project_to_remove)
    project_to_keep_table_name_records_count_map_after_project_removal = _assert_resources_in_project(
        db, db_session, project_to_keep)
    _assert_resources_in_project(db,
                                 db_session,
                                 project_to_remove,
                                 assert_no_resources=True)
    assert (deepdiff.DeepDiff(
        project_to_keep_table_name_records_count_map_before_project_removal,
        project_to_keep_table_name_records_count_map_after_project_removal,
        ignore_order=True,
    ) == {})
Example #3
0
def test_delete_project_with_resources(db: DBInterface,
                                       db_session: sqlalchemy.orm.Session):
    project_to_keep = "project-to-keep"
    project_to_remove = "project-to-remove"
    _create_resources_of_all_kinds(db, db_session, project_to_keep)
    _create_resources_of_all_kinds(db, db_session, project_to_remove)
    project_to_keep_table_name_records_count_map_before_project_removal = _assert_resources_in_project(
        db, db_session, project_to_keep)
    _assert_resources_in_project(db, db_session, project_to_remove)
    # deletion strategy - restrict - should fail because there are resources
    with pytest.raises(mlrun.errors.MLRunPreconditionFailedError):
        db.delete_project(db_session, project_to_remove,
                          mlrun.api.schemas.DeletionStrategy.restrict)
    # deletion strategy - cascade - should succeed and remove all related resources
    db.delete_project(db_session, project_to_remove,
                      mlrun.api.schemas.DeletionStrategy.cascade)

    project_to_keep_table_name_records_count_map_after_project_removal = _assert_resources_in_project(
        db, db_session, project_to_keep)
    _assert_resources_in_project(db,
                                 db_session,
                                 project_to_remove,
                                 assert_no_resources=True)
    assert (deepdiff.DeepDiff(
        project_to_keep_table_name_records_count_map_before_project_removal,
        project_to_keep_table_name_records_count_map_after_project_removal,
        ignore_order=True,
    ) == {})

    # deletion strategy - restrict - should succeed cause no project
    db.delete_project(db_session, project_to_remove,
                      mlrun.api.schemas.DeletionStrategy.restrict)