Ejemplo n.º 1
0
def set_rse_usage(rse, source, used, free, session=None):
    """
    Set RSE usage information.

    :param rse: the location name.
    :param source: The information source, e.g. srm.
    :param used: the used space in bytes.
    :param free: the free in bytes.
    :param session: The database session in use.

    :returns: True if successful, otherwise false.
    """
    rse_id = get_rse_id(rse, session=session)
    rse_usage = models.RSEUsage(rse_id=rse_id,
                                source=source,
                                used=used,
                                free=free)
    # versioned_session(session)
    rse_usage = session.merge(rse_usage)
    rse_usage.save(session=session)

    # rse_usage_history = models.RSEUsage.__history_mapper__.class_(rse_id=rse.id, source=source, used=used, free=free)
    # rse_usage_history.save(session=session)

    return True
Ejemplo n.º 2
0
def update_rse_counter(rse_id, session=None):
    """
    Read the updated_rse_counters and update the rse_counter.

    :param rse_id:   The rse_id to update.
    :param session:  Database session in use.
    """

    updated_rse_counters = session.query(
        models.UpdatedRSECounter).filter_by(rse_id=rse_id).all()
    sum_bytes = sum([
        updated_rse_counter.bytes
        for updated_rse_counter in updated_rse_counters
    ])
    sum_files = sum([
        updated_rse_counter.files
        for updated_rse_counter in updated_rse_counters
    ])

    try:
        rse_counter = session.query(models.RSEUsage).filter_by(
            rse_id=rse_id, source='rucio').one()
        rse_counter.used += sum_bytes
        rse_counter.files += sum_files
    except NoResultFound:
        models.RSEUsage(rse_id=rse_id,
                        used=sum_bytes,
                        files=sum_files,
                        source='rucio').save(session=session)

    for update in updated_rse_counters:
        update.delete(flush=False, session=session)
Ejemplo n.º 3
0
def add_counter(rse_id, session=None):
    """
    Creates the specified counter for a rse_id.

    :param rse_id:  The id of the RSE.
    :param session: The database session in use.
    """
    models.RSEUsage(rse_id=rse_id, source='rucio', files=0, used=0).\
        save(session=session)