示例#1
0
def add_counter(rse_id, account, session=None):
    """
    Creates the specified counter for a rse_id and account.

    :param rse_id:  The id of the RSE.
    :param account: The account name.
    :param session: The database session in use
    """

    models.AccountUsage(rse_id=rse_id, account=account, files=0, bytes=0).save(session=session)
示例#2
0
def update_account_counter(account, rse_id, session=None):
    """
    Read the updated_account_counters and update the account_counter.

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

    updated_account_counters = session.query(
        models.UpdatedAccountCounter).filter_by(account=account,
                                                rse_id=rse_id).all()

    try:
        account_counter = session.query(models.AccountUsage).filter_by(
            account=account, rse_id=rse_id).one()
        account_counter.bytes += sum([
            updated_account_counter.bytes
            for updated_account_counter in updated_account_counters
        ])
        account_counter.files += sum([
            updated_account_counter.files
            for updated_account_counter in updated_account_counters
        ])
    except NoResultFound:
        models.AccountUsage(
            rse_id=rse_id,
            account=account,
            files=sum([
                updated_account_counter.files
                for updated_account_counter in updated_account_counters
            ]),
            bytes=sum([
                updated_account_counter.bytes
                for updated_account_counter in updated_account_counters
            ])).save(session=session)

    for update in updated_account_counters:
        update.delete(flush=False, session=session)