def resolve_elements(self, session): """ Inherited from :py:func:`BaseExpressionElement.resolve_elements` """ rse_list = get_rses_with_attribute(key=self.key, session=session) if not rse_list: return (set(), {}) output = [] rse_dict = {} for rse in rse_list: try: if float(get_rse_attribute(key=self.key, rse_id=rse['id'], session=session)[0]) < float(self.value): rse_dict[rse['id']] = rse output.append(rse['id']) except ValueError: continue return (set(output), rse_dict)
def __init__(self, protocol_attr, rse_settings, logger=None): """ Initializes the object with information about the referred RSE. :param props: Properties of the requested protocol """ self.attributes = protocol_attr self.translator = None self.renaming = True self.overwrite = False self.rse = rse_settings self.globus_endpoint_id = get_rse_attribute(key='globus_endpoint_id', rse_id=self.rse.get('id')) if self.rse['deterministic']: self.translator = RSEDeterministicTranslation(self.rse['rse'], rse_settings, self.attributes) if getattr(rsemanager, 'CLIENT_MODE', None) and \ not RSEDeterministicTranslation.supports(self.rse.get('lfn2pfn_algorithm')): # Remote server has an algorithm we don't understand; always make the server do the lookup. setattr(self, 'lfns2pfns', self.__lfns2pfns_client) else: if getattr(rsemanager, 'CLIENT_MODE', None): setattr(self, 'lfns2pfns', self.__lfns2pfns_client) if getattr(rsemanager, 'SERVER_MODE', None): setattr(self, '_get_path', self._get_path_nondeterministic_server)
for rse in site_groupdisks: used = get_rse_usage(rse_id=rse['id'], source='rucio')[0]['used'] group_total += used return group_total # Calculate the current ratios rses = parse_expression( "datapolicynucleus=false&tier=2&type=DATADISK\\bb8-enabled=false") total_primary = 0 total_secondary = 0 total_total = 0 global_ratio = float(0) for rse in rses: site_name = get_rse_attribute(key='site', rse_id=rse['id'])[0] rse['groupdisk'] = group_space(site_name) rse['primary'] = get_rse_usage( rse_id=rse['id'], source='rucio')[0]['used'] - get_rse_usage( rse_id=rse['id'], source='expired')[0]['used'] rse['primary'] += rse['groupdisk'] rse['secondary'] = get_rse_usage(rse_id=rse['id'], source='expired')[0]['used'] rse['total'] = get_rse_usage( rse_id=rse['id'], source='storage')[0]['total'] - get_rse_usage( rse_id=rse['id'], source='min_free_space')[0]['used'] rse['ratio'] = float(rse['primary']) / float(rse['total']) total_primary += rse['primary'] total_secondary += rse['secondary'] total_total += float(rse['total']) rse['receive_volume'] = 0 # Already rebalanced volume in this run