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)
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)