Changeset 3582

Show
Ignore:
Timestamp:
10/26/2009 09:01:43 PM (1 month ago)
Author:
brian
Message:

ClassAd? generator update to add AccessPoints? and MountInfo?.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gip/trunk/gip/libexec/osg_classad_transform.py

    r3350 r3582  
    1818import osg_info_wrapper 
    1919import gip_common 
     20import gip_ldap 
    2021 
    2122log = gip_common.getLogger('CEMonUploader') 
     
    8182    raise ValueError("Unable to find matching entry in list.") 
    8283 
    83 def determine_ses(ce, all_cese): 
     84def determine_ses(ce, all_cese, all_cese_se): 
    8485    # Determine CESE binds, if any 
    8586    if ce.multi: 
     
    8889        unique = ce.glue['CEUniqueID'] 
    8990    adjacent_ses = [] 
     91    se_to_cese = {} 
    9092    for cese in all_cese: 
    9193        if cese.multi and unique in cese.glue['CESEBindGroupCEUniqueID']: 
     
    9496        elif not cese.multi and unique == cese.glue['CESEBindGroupCEUniqueID']: 
    9597            adjacent_ses.append(cese.glue['CESEBindGroupSEUniqueID']) 
    96     return adjacent_ses 
     98            se_to_cese[se] = cese 
     99    for cese in all_cese_se: 
     100        for se in adjacent_ses: 
     101            if cese.multi and unique in cese.glue['CESEBindCEUniqueID'] \ 
     102                    and se in cese.glue['CESEBindSEUniqueID']: 
     103                se_to_cese[se] = cese 
     104            elif not cese.multi and unique==cese.glue['CESEBindCEUniqueID']\ 
     105                    and se in cese.glue['CESEBindSEUniqueID']: 
     106                se_to_cese[se] = cese 
     107    return adjacent_ses, se_to_cese 
    97108 
    98109ap_multi_attributes = ['SEAccessProtocolEndpoint', 'SEAccessProtocolVersion', 
     
    100111    'SEAccessProtocolMaxStreams'] 
    101112drop_attrs = ['GlueForeignKey', 'GlueSiteDescription', 'GlueSiteLocation', 
    102     'GlueSiteWeb', 'GlueSiteSponsor', 'GlueSiteOtherInfo', 'GlueChunkKey'] 
     113    'GlueSiteWeb', 'GlueSiteSponsor', 'GlueSiteOtherInfo', 'GlueChunkKey', 
     114    'GlueCESEBindSEUniqueID', 'GlueCESEBindCEUniqueID', 
     115    'GlueCESEBindCEAccesspoint'] 
    103116 
    104117 
     
    354367    def add_aps(self, aps, results): 
    355368        for ap in aps: 
    356             self.add_to_results(self, ap, results) 
     369            self.add_to_results(ap, results) 
    357370        for attr in ap_multi_attributes: 
    358371            attr_val = [] 
    359372            for ap in aps: 
    360373                attr_val.append(str(ap.glue[attr][0])) 
    361             results["Glue" + attr_val] = ",".join(attr_val) 
     374            results["Glue" + attr] = ",".join(attr_val) 
    362375 
    363376    def add_software(self, software, results): 
     
    366379    def emit(self, site=None, cluster=None, ce=None, voview=None, software=None, 
    367380            aps=None, service=None, se=None, voinfo=None, sa=None, 
    368             subcluster=None, **kw): 
     381            subcluster=None, cese=None, **kw): 
    369382 
    370383        if not site or not cluster or not ce: 
     
    386399        if se: 
    387400            self.add_to_results(se, results) 
     401        if cese: 
     402            self.add_to_results(cese, results) 
    388403        if subcluster: 
    389404            self.add_to_results(subcluster, results) 
     
    497512    parser.add_option("-c", "--certificate", dest="certificate", help="Cert" \ 
    498513        "ificate file to use.", default=None) 
     514    parser.add_option("-i", "--uri", dest="uri", help="URI for input data.", 
     515        default=None) 
    499516    parser.add_option("-k", "--keyfile", dest="key", help="Key file to use.", 
    500517        default=None) 
     
    533550        bdii = None 
    534551     
    535     return cae, bdii 
     552    return cae, bdii, options.uri 
    536553 
    537554 
    538555def main(): 
    539     cae, bdii = configure_emitter() 
    540     entries = osg_info_wrapper.main(return_entries=True) 
     556    cae, bdii, uri = configure_emitter() 
     557    if not uri: 
     558        entries = osg_info_wrapper.main(return_entries=True) 
     559    else: 
     560        fd = urllib2.urlopen(uri) 
     561        entries = gip_ldap.read_ldap(fd, multi=True) 
    541562    upload(cae, bdii, entries) 
    542563 
     
    561582    all_sub = filter_by_class(entries, "GlueSubCluster") 
    562583    all_cese = filter_by_class(entries, "GlueCESEBindGroup") 
     584    all_cese_se = filter_by_class(entries, "GlueCESEBind") 
    563585    all_services = filter_by_class(entries, "GlueService") 
    564586    all_cps = filter_by_class(entries, "GlueSEControlProtocol") 
     
    649671        # Determine close SEs, if any 
    650672        try: 
    651             adjacent_ses = determine_ses(ce, all_cese) 
     673            adjacent_ses, seid_to_cese = determine_ses(ce, all_cese, 
     674                all_cese_se) 
    652675        except: 
    653676            raise 
    654             adjacent_ses = [] 
     677            adjacent_ses, seid_to_cese = [], [] 
    655678 
    656679        # Determine VOViews on this CE 
     
    661684        # (thinking about better ways to do this) 
    662685        kw = {'site': site, 'cluster': cluster} 
    663         print >> sys.stderr, "Adjacent SEs %s." % ", ".join(adjacent_ses) 
    664686        if adjacent_ses: 
    665687            # All SEs 
     
    667689                adjacent_sas = se_to_sas.get(se, []) 
    668690                kw['se'] = id_to_se[se] 
    669                 kw['aps'] = se_to_aps.get(se, []) 
     691                kw['aps'] = se_to_aps.get(id_to_se[se], []) 
    670692                kw['services'] = se_to_services.get(se, []) 
     693                if se in seid_to_cese: 
     694                    kw['cese'] = seid_to_cese[se] 
    671695                # All SAs 
    672696                if adjacent_sas: 
     
    693717        bdii.run() 
    694718 
    695 def main(): 
    696     cae, bdii = configure_emitter() 
    697     entries = osg_info_wrapper.main(return_entries=True) 
    698     upload(cae, bdii, entries) 
    699719 
    700720if __name__ == '__main__':