def update_account_counter_history(account, rse_id, session=None): """ Read the AccountUsage and update the AccountUsageHistory. :param account: The account to update. :param rse_id: The rse_id to update. :param session: Database session in use. """ AccountUsageHistory = models.AccountUsage.__history_mapper__.class_ try: counter = session.query(models.AccountUsage).filter_by(rse_id=rse_id, account=account).one() AccountUsageHistory(rse_id=rse_id, account=account, files=counter.files, bytes=counter.bytes).save(session=session) except NoResultFound: raise CounterNotFound('No usage can be found for account %s on RSE with id %s' % (account, rse_id))
def get_counter(rse_id, session=None): """ Returns current values of the specified counter or raises CounterNotFound if the counter does not exist. :param rse_id: The id of the RSE. :param session: The database session in use. :returns: A dictionary with total and bytes. :raises CounterNotFound: If the counter does not exist. :returns: A dictionary with total and bytes. """ try: counter = session.query(models.RSEUsage).\ filter_by(rse_id=rse_id, source='rucio').one() return {'bytes': counter.used, 'files': counter.files, 'updated_at': counter.updated_at} except NoResultFound: raise CounterNotFound()