Example #1
0
def main():

    cp = config_file()
    # Read the CE entries from the BDII.
    entries = read_bdii(cp, query="(objectClass=GlueCE)")
    cluster_info = create_count_dict(entries)
    sc_info = sub_cluster_info(cluster_info.keys(), cp)
    specint = get_cpu_normalizations()
    for key, val in specint.items():
        if isinstance(val, types.TupleType):
            specint[key] = val[0]
    ksi2k_info = {}
    site_dict = create_site_dict(entries, cp)
    sites = cp.get("site_normalization", "sites").split(",")
    sites = [i.strip() for i in sites]
    for cluster, cpu in cluster_info.items():
        correct_sc_info(cluster, cpu, sc_info, specint)
        ksi2k = 0
        sc_cores = 0
        for sc in sc_info[cluster]:
            ksi2k += sc.glue["KSI2K"]
            sc_cores += int(sc.glue["SubClusterLogicalCPUs"])
        try:
            site = site_dict[cluster]
        except:
            print "Problem with %s" % cluster
            continue
        if site in sites:
            print site, (ksi2k * 1000) / sc_cores
def main():

    cp = config_file()
    # Read the CE entries from the BDII.
    entries = read_bdii(cp, query="(objectClass=GlueCE)")
    cluster_info = create_count_dict(entries)
    sc_info = sub_cluster_info(cluster_info.keys(), cp)
    specint = get_cpu_normalizations()
    for key, val in specint.items():
        if isinstance(val, types.TupleType):
            specint[key] = val[0]
    ksi2k_info = {}
    site_dict = create_site_dict(entries, cp)
    sites = cp.get("site_normalization", "sites").split(",")
    sites = [i.strip() for i in sites]
    for cluster, cpu in cluster_info.items():
        correct_sc_info(cluster, cpu, sc_info, specint)
        ksi2k = 0
        sc_cores = 0
        for sc in sc_info[cluster]:
            ksi2k += sc.glue["KSI2K"]
            sc_cores += int(sc.glue["SubClusterLogicalCPUs"])
        try:
            site = site_dict[cluster]
        except:
            print "Problem with %s" % cluster
            continue
        if site in sites:
            print site, (ksi2k*1000) / sc_cores
def main():

    # Load up the config file.
    cp = config_file()

    # Load the DB
    filename = os.path.expandvars("$HOME/dbinfo/DBParam.xml")
    if not os.path.exists(filename):
        filename = os.path.expandvars("$DBPARAM_LOCATION")
        if not os.path.exists(filename):
            filename = '/etc/DBParam.xml'
    x = XmlConfig(file=filename)
    conn = x.globals['GIPConnMan'].get_connection(None).get_connection()
    curs = conn.cursor()

    # Read the CE entries from the BDII.    
    entries = read_bdii(cp, query="(&(objectClass=GlueCE))")
    
    cluster_info = create_count_dict(entries)

    # Map from the cluster hostname to the unique ID
    id_to_hostname = {}
    for entry in entries:
        fk = entry.glue['ForeignKey']
        info = fk.split("=", 1)
        if len(info) != 2:
            continue
        if info[0] != "GlueClusterUniqueID":
            print >> sys.stderr, "Entry has unknown cluster FK: %s" % entry
            continue
        id = info[1]
        id_to_hostname[id] = entry.glue['CEHostingCluster']

    sc_info = sub_cluster_info(id_to_hostname.keys(), cp)

    # For each unique cluster ID, map to one of the cluster hostnames
    new_sc_info = {}
    for id, info in sc_info.items():
        if id not in id_to_hostname:
            print >> sys.stderr, "ID %s has no matching cluster hostname." % id
            continue
        new_sc_info[id_to_hostname[id]] = info
    sc_info = new_sc_info

    specint = get_cpu_normalizations()

    now = datetime.datetime.now()

    curs.execute("DELETE FROM cpu_score");
    for cpu, score in specint.items():
        if isinstance(score, types.TupleType):
            score = score[0]
            #specint[cpu] = score
        curs.execute("INSERT INTO cpu_score VALUES (%s, %s, %s)", (cpu, \
            int(score), int(0)));

    site_ownership = create_site_dict(entries, cp)
    ownership = ownership_info(entries, cp)

    # Initialize the Probe's configuration
    ProbeConfig = '/etc/osg-storage-report/ProbeConfig'
    try:        
        Gratia.Initialize(ProbeConfig)
    except Exception, e:
        print e
        raise
Example #4
0
def main():

    # Load up the config file.
    cp = config_file()

    # Load the DB
    filename = os.path.expandvars("$HOME/dbinfo/DBParam.xml")
    if not os.path.exists(filename):
        filename = os.path.expandvars("$DBPARAM_LOCATION")
        if not os.path.exists(filename):
            filename = '/etc/DBParam.xml'
    x = XmlConfig(file=filename)
    conn = x.globals['GIPConnMan'].get_connection(None).get_connection()
    curs = conn.cursor()

    # Read the CE entries from the BDII.
    entries = read_bdii(cp, query="(&(objectClass=GlueCE))")

    cluster_info = create_count_dict(entries)

    # Map from the cluster hostname to the unique ID
    id_to_hostname = {}
    for entry in entries:
        fk = entry.glue['ForeignKey']
        info = fk.split("=", 1)
        if len(info) != 2:
            continue
        if info[0] != "GlueClusterUniqueID":
            print >> sys.stderr, "Entry has unknown cluster FK: %s" % entry
            continue
        id = info[1]
        id_to_hostname[id] = entry.glue['CEHostingCluster']

    sc_info = sub_cluster_info(id_to_hostname.keys(), cp)

    # For each unique cluster ID, map to one of the cluster hostnames
    new_sc_info = {}
    for id, info in sc_info.items():
        if id not in id_to_hostname:
            print >> sys.stderr, "ID %s has no matching cluster hostname." % id
            continue
        new_sc_info[id_to_hostname[id]] = info
    sc_info = new_sc_info

    specint = get_cpu_normalizations()

    now = datetime.datetime.now()

    curs.execute("DELETE FROM cpu_score")
    for cpu, score in specint.items():
        if isinstance(score, types.TupleType):
            score = score[0]
            #specint[cpu] = score
        curs.execute("INSERT INTO cpu_score VALUES (%s, %s, %s)", (cpu, \
            int(score), int(0)))

    site_ownership = create_site_dict(entries, cp)
    ownership = ownership_info(entries, cp)

    # Initialize the Probe's configuration
    ProbeConfig = '/etc/osg-storage-report/ProbeConfig'
    try:
        Gratia.Initialize(ProbeConfig)
    except Exception, e:
        print e
        raise
def main():
    # Determine any filters we should apply
    parser = optparse.OptionParser(add_help_option=False)
    parser.add_option("-e", "--endpoint")
    parser.add_option("-h", "--help")
    parser.add_option("-c", "--config")
    parser.parse_args()
    (options, args) = parser.parse_args()
    if len(args) >= 1:
        ce_glob = args[0]
    else:
        ce_glob = "*"

    # Load up the config file.
    cp = config_file()

    # Read the CE entries from the BDII.    
    entries = read_bdii(cp, 
        query="(&(objectClass=GlueCE)(GlueCEInfoHostName=%s))" % ce_glob)
    cluster_info = create_count_dict(entries)
    sc_info = sub_cluster_info(cluster_info.keys(), cp)
    specint = get_cpu_normalizations()
    for key, val in specint.items():
        if isinstance(val, types.TupleType):
            specint[key] = val[0]
    correction = eval(cp.get("cpu_count", "correction"))
    duplicate = eval(cp.get("cpu_count", "duplicate"))
    msi2k_ctr = 0.0
    ksi2k_info = {}
    ownership = ownership_info(entries, cp)
    gk_ctr = 0
    add_missing = cp.getboolean("cpu_count", "add_missing")
    do_not_add_missing = cp.get("cpu_count", "do_not_add_missing").split(',')
    do_not_add_missing = [i.strip() for i in do_not_add_missing]
    for cluster, cpu in cluster_info.items():
        print "* Cluster: ", cluster
        my_sc_cores = 0
        ksi2k_ctr = 0
        correct_sc_info(cluster, cpu, sc_info, specint)
        
        # Print out SC info.
        if len(sc_info[cluster]) > 0:
            print " - Sub-clusters:"
        for sc in sc_info[cluster]:
            ksi2k = sc.glue["KSI2K"]
            msi2k_ctr += ksi2k / 1000.0
            my_sc_cores += int(sc.glue["SubClusterLogicalCPUs"])
            print "   - %(SubClusterUniqueID)s, CPU Model:" \
                " %(HostProcessorModel)s, Cores: %(SubClusterLogicalCPUs)s," \
                " KSI2K: %(KSI2K)s" % sc.glue
            ksi2k_ctr += ksi2k
        
        # Do any KSI2K/CPU adjustments necessary.
        if my_sc_cores == 0:
            avg_ksi2k = 1.3
        else:
            avg_ksi2k = ksi2k_ctr / float(my_sc_cores)
        if my_sc_cores > cpu: # Not enough CPUs; use sum from SC.
            cpu = my_sc_cores
            cluster_info[cluster] = cpu
        elif my_sc_cores < cpu and add_missing and (cluster not in \
                do_not_add_missing): 
            # Not enough KSI2K; add average froom SCs.
            addl_ksi2k = avg_ksi2k * (cpu - my_sc_cores)
            print " - Additional kSI2K for %s: %i" % (cluster, addl_ksi2k)
            ksi2k_ctr += addl_ksi2k
            msi2k_ctr += addl_ksi2k / 1000.0
        ksi2k_info[cluster] = ksi2k_ctr

        # Print out any correction factors or duplicate clusters
        if cluster in correction:
            print " - Correction factor: %s" % correction[cluster]
        if cluster in duplicate:
            print " - Duplicates of this cluster: %s" % duplicate[cluster]
        try:
            print " - Ownership:", pretty_ownership(ownership[cluster])
        except:
            pass
        print " - Core count:", cpu
        print " - KSI2K: %.1f" % ksi2k_ctr
        gk_ctr += 1

    print "----------------------------"
    core_count, msi2k_count, vo_info = correct_count(cluster_info, ksi2k_info, 
        ownership, correction, duplicate)
    print "----------------------------"
    print "OSG cores sum:", core_count
    print "OSG MSI2K: %.2f" % msi2k_count
    print "OSG gatekeepers count:", gk_ctr
    print "----------------------------"
    other_cores = 0
    other_msi2k = 0
    other_vos = []
    print_vos = [i.strip() for i in cp.get("cpu_count", "print_vos").split(',')]
    for vo, info in vo_info.items():
        if vo not in print_vos:
            other_cores += info[0]
            other_msi2k += info[1]
            other_vos.append(vo)
            continue
        print "%s cores sum: %i" % (vo, info[0])
        print "%s MSI2K: %.2f" % (vo, info[1])

    print "Other cores sum: %i" % other_cores
    print "Other MSI2K: %.2f" % other_msi2k
    print "Other VOs:", other_vos