Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
    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,
Esempio n. 6
0
    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,