def add_rse(rse, deterministic=True, volatile=False, city=None, region_code=None, country_name=None, continent=None, time_zone=None, ISP=None, staging_area=False, session=None): """ Add a rse with the given location name. :param rse: the name of the new rse. :param deterministic: Boolean to know if the pfn is generated deterministically. :param volatile: Boolean for RSE cache. :param city: City for the RSE. :param region_code: The region code for the RSE. :param country_name: The country. :param continent: The continent. :param time_zone: Timezone. :param ISP: Internet service provider. :param staging_area: Staging area. :param session: The database session in use. """ new_rse = models.RSE(rse=rse, deterministic=deterministic, volatile=volatile, city=city, region_code=region_code, country_name=country_name, continent=continent, time_zone=time_zone, staging_area=staging_area, ISP=ISP, availability=7) try: new_rse.save(session=session) except IntegrityError: raise exception.Duplicate('RSE \'%(rse)s\' already exists!' % locals()) except DatabaseError as error: raise exception.RucioException(error.args) # Add rse name as a RSE-Tag add_rse_attribute(rse=rse, key=rse, value=True, session=session) # Add counter to monitor the space usage add_counter(rse_id=new_rse.id, session=session) # Add account counter rucio.core.account_counter.create_counters_for_new_rse(rse_id=new_rse.id, session=session) return new_rse.id
def test_inc_dec_get_counter(self): """ RSE COUNTER (CORE): Increase, decrease and get counter """ rse_id = get_rse_id(rse='MOCK', **self.vo) rse_update(once=True) rse_counter.del_counter(rse_id=rse_id) rse_counter.add_counter(rse_id=rse_id) cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': 0, 'bytes': 0}) count, sum = 0, 0 for i in range(10): rse_counter.increase(rse_id=rse_id, files=1, bytes=2.147e+9) rse_update(once=True) count += 1 sum += 2.147e+9 cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': count, 'bytes': sum}) for i in range(4): rse_counter.decrease(rse_id=rse_id, files=1, bytes=2.147e+9) rse_update(once=True) count -= 1 sum -= 2.147e+9 cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': count, 'bytes': sum}) for i in range(5): rse_counter.increase(rse_id=rse_id, files=1, bytes=2.147e+9) rse_update(once=True) count += 1 sum += 2.147e+9 cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': count, 'bytes': sum}) for i in range(8): rse_counter.decrease(rse_id=rse_id, files=1, bytes=2.147e+9) rse_update(once=True) count -= 1 sum -= 2.147e+9 cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': count, 'bytes': sum})
def test_inc_dec_get_counter(self): """ RSE COUNTER (CORE): Increase, decrease and get counter """ rse_id = get_rse('MOCK').id rse_update(once=True) rse_counter.del_counter(rse_id=rse_id) rse_counter.add_counter(rse_id=rse_id) cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': 0, 'bytes': 0}) count, sum = 0, 0 for i in xrange(10): rse_counter.increase(rse_id=rse_id, files=1, bytes=2.147e+9) rse_update(once=True) count += 1 sum += 2.147e+9 cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': count, 'bytes': sum}) for i in xrange(4): rse_counter.decrease(rse_id=rse_id, files=1, bytes=2.147e+9) rse_update(once=True) count -= 1 sum -= 2.147e+9 cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': count, 'bytes': sum}) for i in xrange(5): rse_counter.increase(rse_id=rse_id, files=1, bytes=2.147e+9) rse_update(once=True) count += 1 sum += 2.147e+9 cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': count, 'bytes': sum}) for i in xrange(8): rse_counter.decrease(rse_id=rse_id, files=1, bytes=2.147e+9) rse_update(once=True) count -= 1 sum -= 2.147e+9 cnt = rse_counter.get_counter(rse_id=rse_id) del cnt['updated_at'] assert_equal(cnt, {'files': count, 'bytes': sum})
time_zone=time_zone, staging_area=staging_area, ISP=ISP, availability=7) try: new_rse.save(session=session) except IntegrityError: raise exception.Duplicate('RSE \'%(rse)s\' already exists!' % locals()) except DatabaseError, e: raise exception.RucioException(e.args) # Add rse name as a RSE-Tag add_rse_attribute(rse=rse, key=rse, value=True, session=session) # Add counter to monitor the space usage add_counter(rse_id=new_rse.id, session=session) # Add account counter rucio.core.account_counter.create_counters_for_new_rse(rse_id=new_rse.id, session=session) return new_rse.id @read_session def rse_exists(rse, session=None): """ Checks to see if RSE exists. This procedure does not check its status. :param rse: Name of the rse. :param session: The database session in use.
def add_rse(rse, deterministic=True, volatile=False, city=None, region_code=None, country_name=None, continent=None, time_zone=None, ISP=None, staging_area=False, rse_type=RSEType.DISK, longitude=None, latitude=None, ASN=None, availability=7, session=None, supported_chksums=None): """ Add a rse with the given location name. :param rse: the name of the new rse. :param deterministic: Boolean to know if the pfn is generated deterministically. :param volatile: Boolean for RSE cache. :param city: City for the RSE. :param region_code: The region code for the RSE. :param country_name: The country. :param continent: The continent. :param time_zone: Timezone. :param ISP: Internet service provider. :param staging_area: Staging area. :param rse_type: RSE type. :param latitude: Latitude coordinate of RSE. :param longitude: Longitude coordinate of RSE. :param ASN: Access service network. :param availability: Availability. :param session: The database session in use. :param supported_chksums: The checksums supported by the RSE. """ if isinstance(rse_type, str) or isinstance(rse_type, unicode): rse_type = RSEType.from_string(str(rse_type)) new_rse = models.RSE(rse=rse, deterministic=deterministic, volatile=volatile, city=city, region_code=region_code, country_name=country_name, continent=continent, time_zone=time_zone, staging_area=staging_area, ISP=ISP, availability=availability, rse_type=rse_type, longitude=longitude, latitude=latitude, ASN=ASN) try: new_rse.save(session=session) except IntegrityError: raise exception.Duplicate('RSE \'%(rse)s\' already exists!' % locals()) except DatabaseError as error: raise exception.RucioException(error.args) # Add rse name as a RSE-Tag add_rse_attribute(rse=rse, key=rse, value=True, session=session) # Add supported checksums in rse_attr_map if specified if supported_chksums: for chksum in supported_chksums: add_rse_checksum(rse=rse, chksum_name=chksum, session=session) # Add counter to monitor the space usage add_counter(rse_id=new_rse.id, session=session) # Add account counter rucio.core.account_counter.create_counters_for_new_rse(rse_id=new_rse.id, session=session) return new_rse.id
""" new_rse = models.RSE(rse=rse, deterministic=deterministic, volatile=volatile, city=city, region_code=region_code, country_name=country_name, continent=continent, time_zone=time_zone, staging_area=staging_area, ISP=ISP, availability=7) try: new_rse.save(session=session) except IntegrityError: raise exception.Duplicate('RSE \'%(rse)s\' already exists!' % locals()) except DatabaseError, e: raise exception.RucioException(e.args) # Add rse name as a RSE-Tag add_rse_attribute(rse=rse, key=rse, value=True, session=session) # Add counter to monitor the space usage add_counter(rse_id=new_rse.id, session=session) # Add account counter rucio.core.account_counter.create_counters_for_new_rse(rse_id=new_rse.id, session=session) return new_rse.id @read_session def rse_exists(rse, session=None): """ Checks to see if RSE exists. This procedure does not check its status. :param rse: Name of the rse. :param session: The database session in use.