Changeset 3582
- Timestamp:
- 10/26/2009 09:01:43 PM (1 month ago)
- Files:
-
- gip/trunk/gip/libexec/osg_classad_transform.py (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gip/trunk/gip/libexec/osg_classad_transform.py
r3350 r3582 18 18 import osg_info_wrapper 19 19 import gip_common 20 import gip_ldap 20 21 21 22 log = gip_common.getLogger('CEMonUploader') … … 81 82 raise ValueError("Unable to find matching entry in list.") 82 83 83 def determine_ses(ce, all_cese ):84 def determine_ses(ce, all_cese, all_cese_se): 84 85 # Determine CESE binds, if any 85 86 if ce.multi: … … 88 89 unique = ce.glue['CEUniqueID'] 89 90 adjacent_ses = [] 91 se_to_cese = {} 90 92 for cese in all_cese: 91 93 if cese.multi and unique in cese.glue['CESEBindGroupCEUniqueID']: … … 94 96 elif not cese.multi and unique == cese.glue['CESEBindGroupCEUniqueID']: 95 97 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 97 108 98 109 ap_multi_attributes = ['SEAccessProtocolEndpoint', 'SEAccessProtocolVersion', … … 100 111 'SEAccessProtocolMaxStreams'] 101 112 drop_attrs = ['GlueForeignKey', 'GlueSiteDescription', 'GlueSiteLocation', 102 'GlueSiteWeb', 'GlueSiteSponsor', 'GlueSiteOtherInfo', 'GlueChunkKey'] 113 'GlueSiteWeb', 'GlueSiteSponsor', 'GlueSiteOtherInfo', 'GlueChunkKey', 114 'GlueCESEBindSEUniqueID', 'GlueCESEBindCEUniqueID', 115 'GlueCESEBindCEAccesspoint'] 103 116 104 117 … … 354 367 def add_aps(self, aps, results): 355 368 for ap in aps: 356 self.add_to_results( self,ap, results)369 self.add_to_results(ap, results) 357 370 for attr in ap_multi_attributes: 358 371 attr_val = [] 359 372 for ap in aps: 360 373 attr_val.append(str(ap.glue[attr][0])) 361 results["Glue" + attr _val] = ",".join(attr_val)374 results["Glue" + attr] = ",".join(attr_val) 362 375 363 376 def add_software(self, software, results): … … 366 379 def emit(self, site=None, cluster=None, ce=None, voview=None, software=None, 367 380 aps=None, service=None, se=None, voinfo=None, sa=None, 368 subcluster=None, **kw):381 subcluster=None, cese=None, **kw): 369 382 370 383 if not site or not cluster or not ce: … … 386 399 if se: 387 400 self.add_to_results(se, results) 401 if cese: 402 self.add_to_results(cese, results) 388 403 if subcluster: 389 404 self.add_to_results(subcluster, results) … … 497 512 parser.add_option("-c", "--certificate", dest="certificate", help="Cert" \ 498 513 "ificate file to use.", default=None) 514 parser.add_option("-i", "--uri", dest="uri", help="URI for input data.", 515 default=None) 499 516 parser.add_option("-k", "--keyfile", dest="key", help="Key file to use.", 500 517 default=None) … … 533 550 bdii = None 534 551 535 return cae, bdii 552 return cae, bdii, options.uri 536 553 537 554 538 555 def 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) 541 562 upload(cae, bdii, entries) 542 563 … … 561 582 all_sub = filter_by_class(entries, "GlueSubCluster") 562 583 all_cese = filter_by_class(entries, "GlueCESEBindGroup") 584 all_cese_se = filter_by_class(entries, "GlueCESEBind") 563 585 all_services = filter_by_class(entries, "GlueService") 564 586 all_cps = filter_by_class(entries, "GlueSEControlProtocol") … … 649 671 # Determine close SEs, if any 650 672 try: 651 adjacent_ses = determine_ses(ce, all_cese) 673 adjacent_ses, seid_to_cese = determine_ses(ce, all_cese, 674 all_cese_se) 652 675 except: 653 676 raise 654 adjacent_ses =[]677 adjacent_ses, seid_to_cese = [], [] 655 678 656 679 # Determine VOViews on this CE … … 661 684 # (thinking about better ways to do this) 662 685 kw = {'site': site, 'cluster': cluster} 663 print >> sys.stderr, "Adjacent SEs %s." % ", ".join(adjacent_ses)664 686 if adjacent_ses: 665 687 # All SEs … … 667 689 adjacent_sas = se_to_sas.get(se, []) 668 690 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], []) 670 692 kw['services'] = se_to_services.get(se, []) 693 if se in seid_to_cese: 694 kw['cese'] = seid_to_cese[se] 671 695 # All SAs 672 696 if adjacent_sas: … … 693 717 bdii.run() 694 718 695 def main():696 cae, bdii = configure_emitter()697 entries = osg_info_wrapper.main(return_entries=True)698 upload(cae, bdii, entries)699 719 700 720 if __name__ == '__main__':
