def calculate_space_from_linkgroup(cp, lg_info, pools, section='se'): seUniqueID = cp.get(section, "unique_name") accesslatency = 'offline' if lg_info['nearline']: accesslatency = 'nearline' elif lg_info['online']: accesslatency = 'online' retentionpolicy = 'replica' if lg_info['custodial']: retentionpolicy = 'custodial' elif lg_info['output']: retentionpolicy = 'output' saLocalID = '%s:%s:%s' % (lg_info['name'], retentionpolicy, accesslatency) expirationtime = 'neverExpire' stateAvailable = lg_info.get('available', \ lg_info['free']-lg_info['reserved'])/1024 total_kb = sum([i.totalSpaceKB for i in pools]) used_kb = sum([i.usedSpaceKB for i in pools]) un, fn, tn = getSETape(cp, vo=lg_info['name']) acbr_attr = 'GlueSAAccessControlBaseRule: %s' acbr = '\n'.join([ acbr_attr % i for i in getLGAllowedVOs(cp, lg_info['vos'], lg_info['name']) ]) path = getPath(cp, lg_info['name'], section=section) lg_info['saLocalID'] = saLocalID info = { "saLocalID": saLocalID, "seUniqueID": seUniqueID, "root": "/", "path": path, "filetype": "permanent", "saName": saLocalID, "totalOnline": total_kb / 1024**2, "usedOnline": used_kb / 1024**2, "freeOnline": stateAvailable / 1024**2, "reservedOnline": lg_info['reserved'] / 1024**3, "totalNearline": tn, "usedNearline": un, "freeNearline": fn, "reservedNearline": 0, "retention": retentionpolicy, "accessLatency": accesslatency, "expiration": expirationtime, "availableSpace": stateAvailable, "usedSpace": used_kb, "acbr": acbr, } return info
def calculate_space_from_linkgroup(cp, lg_info, pools, section='se'): seUniqueID = cp.get(section, "unique_name") accesslatency = 'offline' if lg_info['nearline']: accesslatency = 'nearline' elif lg_info['online']: accesslatency = 'online' retentionpolicy = 'replica' if lg_info['custodial']: retentionpolicy = 'custodial' elif lg_info['output']: retentionpolicy = 'output' saLocalID = '%s:%s:%s' % (lg_info['name'], retentionpolicy, accesslatency) expirationtime = 'neverExpire' stateAvailable = lg_info.get('available', \ lg_info['free']-lg_info['reserved'])/1024 total_kb = sum([i.totalSpaceKB for i in pools]) used_kb = sum([i.usedSpaceKB for i in pools]) un, fn, tn = getSETape(cp, vo=lg_info['name']) acbr_attr = 'GlueSAAccessControlBaseRule: %s' acbr = '\n'.join([acbr_attr%i for i in getLGAllowedVOs(cp, lg_info['vos'], lg_info['name'])]) path = getPath(cp, lg_info['name'], section=section) lg_info['saLocalID'] = saLocalID info = {"saLocalID" : saLocalID, "seUniqueID" : seUniqueID, "root" : "/", "path" : path, "filetype" : "permanent", "saName" : saLocalID, "totalOnline" : total_kb/1024**2, "usedOnline" : used_kb/1024**2, "freeOnline" : stateAvailable/1024**2, "reservedOnline" : lg_info['reserved']/1024**3, "totalNearline" : tn, "usedNearline" : un, "freeNearline" : fn, "reservedNearline" : 0, "retention" : retentionpolicy, "accessLatency" : accesslatency, "expiration" : expirationtime, "availableSpace" : stateAvailable, "usedSpace" : used_kb, "acbr" : acbr, } return info
def calculate_space_from_poolgroup(cp, pgroup, pools, admin, links, \ link_settings, allow_staging=False, allow_p2p=False, section='se'): saLocalID = '%s:poolgroup' % pgroup seUniqueID = cp.get(section, 'unique_name') myLinks = sets.Set() for link, pgroups in links.items(): if pgroup in pgroups: myLinks.add(link) or_func = lambda x, y: x or y can_write = reduce(or_func, [link_settings[i]['write']>0 for i in myLinks], False) can_read = reduce(or_func, [link_settings[i]['read']>0 for i in myLinks], False) can_p2p = reduce(or_func, [link_settings[i]['p2p']>0 for i in myLinks], False) and allow_p2p can_stage = reduce(or_func, [link_settings[i]['cache']>0 for i in myLinks], False) and allow_staging accesslatency = 'online' retentionpolicy = 'replica' if can_stage: accesslatency = 'nearline' retentionpolicy = 'custodial' saLocalID = '%s:%s:%s' % (pgroup, retentionpolicy, accesslatency) if can_stage: expirationtime = 'releaseWhenExpired' else: expirationtime = 'neverExpire' totalKB = sum([i.totalSpaceKB for i in pools]) usedKB = sum([i.usedSpaceKB for i in pools]) reservedKB = sum([i.reservedKB for i in pools])+sum([i.preciousKB for i in \ pools]) availableKB = sum([i.freeSpaceKB for i in pools]) un, fn, tn = getSETape(cp, vo=pgroup) acbr_attr = 'GlueSAAccessControlBaseRule: %s' acbr = '\n'.join([acbr_attr%i for i in getAllowedVOs(cp, pgroup)]) path = getPath(cp, pgroup, section=section) info = {"saLocalID" : saLocalID, "seUniqueID" : seUniqueID, "root" : "/", "path" : path, "filetype" : "permanent", "saName" : saLocalID, "totalOnline" : totalKB/1024**2, "usedOnline" : usedKB/1024**2, "freeOnline" : availableKB/1024**2, "reservedOnline" : reservedKB/1024**2, "totalNearline" : tn, "usedNearline" : un, "freeNearline" : fn, "reservedNearline" : 0, "retention" : retentionpolicy, "accessLatency" : accesslatency, "expiration" : expirationtime, "availableSpace" : availableKB, "usedSpace" : usedKB, "acbr" : acbr, } return info
def calculate_space_from_poolgroup(cp, pgroup, pools, admin, links, \ link_settings, allow_staging=False, allow_p2p=False, section='se'): saLocalID = '%s:poolgroup' % pgroup seUniqueID = cp.get(section, 'unique_name') myLinks = sets.Set() for link, pgroups in links.items(): if pgroup in pgroups: myLinks.add(link) or_func = lambda x, y: x or y can_write = reduce(or_func, [link_settings[i]['write'] > 0 for i in myLinks], False) can_read = reduce(or_func, [link_settings[i]['read'] > 0 for i in myLinks], False) can_p2p = reduce(or_func, [link_settings[i]['p2p'] > 0 for i in myLinks], False) and allow_p2p can_stage = reduce(or_func, [link_settings[i]['cache'] > 0 for i in myLinks], False) and allow_staging accesslatency = 'online' retentionpolicy = 'replica' if can_stage: accesslatency = 'nearline' retentionpolicy = 'custodial' saLocalID = '%s:%s:%s' % (pgroup, retentionpolicy, accesslatency) if can_stage: expirationtime = 'releaseWhenExpired' else: expirationtime = 'neverExpire' totalKB = sum([i.totalSpaceKB for i in pools]) usedKB = sum([i.usedSpaceKB for i in pools]) reservedKB = sum([i.reservedKB for i in pools])+sum([i.preciousKB for i in \ pools]) availableKB = sum([i.freeSpaceKB for i in pools]) un, fn, tn = getSETape(cp, vo=pgroup) acbr_attr = 'GlueSAAccessControlBaseRule: %s' acbr = '\n'.join([acbr_attr % i for i in getAllowedVOs(cp, pgroup)]) path = getPath(cp, pgroup, section=section) info = { "saLocalID": saLocalID, "seUniqueID": seUniqueID, "root": "/", "path": path, "filetype": "permanent", "saName": saLocalID, "totalOnline": totalKB / 1024**2, "usedOnline": usedKB / 1024**2, "freeOnline": availableKB / 1024**2, "reservedOnline": reservedKB / 1024**2, "totalNearline": tn, "usedNearline": un, "freeNearline": fn, "reservedNearline": 0, "retention": retentionpolicy, "accessLatency": accesslatency, "expiration": expirationtime, "availableSpace": availableKB, "usedSpace": usedKB, "acbr": acbr, } return info
else: log.info("Advertising a classic SE.") #if cp_getBoolean(cp, "se", "shares_fs_with_ce", False): # log.info("Not advertising a classic SE because the SE shares a FS.") # return status = cp_get(cp, "classic_se", "status", "Production") version = cp_get(cp, "classic_se", "version", "UNKNOWN") try: used, available, total = getClassicSESpace(cp, total=True, gb=True) except Exception, e: log.error("Unable to get SE space: %s" % str(e)) used, available, total = 0, 0, 0 # Tape information, if we have it... nu, _, nt = getSETape(cp) siteUniqueID = cp_get(cp, "site", "unique_name", "UNKNOWN") implementation = cp_get(cp, "classic_se", "implementation", "classicSE") arch = 'other' # Fill in the information for the template fallback_name = siteUniqueID + "_classicSE" seName = cp_get(cp, "classic_se", "name", fallback_name) seUniqueID = cp_get(cp, "classic_se", "unique_name", fallback_name) info = { 'seName': seName, 'seUniqueID': seUniqueID, 'implementation': implementation, "version": version, "status": status,
else: log.info("Advertising a classic SE.") #if cp_getBoolean(cp, "se", "shares_fs_with_ce", False): # log.info("Not advertising a classic SE because the SE shares a FS.") # return status = cp_get(cp, "classic_se", "status", "Production") version = cp_get(cp, "classic_se", "version", "UNKNOWN") try: used, available, total = getClassicSESpace(cp, total=True, gb=True) except Exception, e: log.error("Unable to get SE space: %s" % str(e)) used, available, total = 0, 0, 0 # Tape information, if we have it... nu, _, nt = getSETape(cp) siteUniqueID = cp_get(cp, "site", "unique_name", "UNKNOWN") implementation = cp_get(cp, "classic_se", "implementation", "classicSE") arch = 'other' # Fill in the information for the template fallback_name = siteUniqueID + "_classicSE" seName = cp_get(cp, "classic_se", "name", fallback_name) seUniqueID = cp_get(cp, "classic_se", "unique_name", fallback_name) info = { 'seName' : seName, 'seUniqueID' : seUniqueID, 'implementation' : implementation, "version" : version, "status" : status, "port" : 2811,