Skip to content

Instantly share code, notes, and snippets.

@jrha
Created November 2, 2017 10:17
Show Gist options
  • Save jrha/16189ed835be61512d7d695ba3e4eb8b to your computer and use it in GitHub Desktop.
Save jrha/16189ed835be61512d7d695ba3e4eb8b to your computer and use it in GitHub Desktop.
#!/usr/bin/env python2
"""
Use VO card XML feed to generate vomses data
"""
from urllib2 import urlopen
from lxml import etree
URL = 'http://operations-portal.egi.eu/xml/voIDCard/public/all/true'
data = urlopen(URL)
tree = etree.parse(data)
results = {}
# Collect data
for card in tree.iterfind('/IDCard'):
vo_name = card.get('Name')
results[vo_name] = {
'servers' : {},
}
voms_servers = card.findall('./gLiteConf/VOMSServers/VOMS_Server')
for server in voms_servers:
server_name = server.find('./hostname').text
dn = server.find('./X509Cert/DN')
ca_dn = server.find('./X509Cert/CA_DN')
if dn is not None:
results[vo_name]['servers'][server_name] = {
'MembersListUrl' : server.get('MembersListUrl'),
'VomsesPort' : server.get('VomsesPort'),
'DN' : dn.text,
'CA_DN' : ca_dn.text,
}
# Render vomses
for vo_name, vo_info in results.iteritems():
for server_name, server_info in vo_info['servers'].iteritems():
print '# /etc/vomses/%s-%s' % (vo_name, server_name)
print '"%s" "%s" "%s" "%s" "%s"' % (
vo_name,
server_name,
server_info['VomsesPort'],
server_info['DN'],
vo_name,
)
print
# Render lsc
for vo_name, vo_info in results.iteritems():
for server_name, server_info in vo_info['servers'].iteritems():
print '# /etc/grid-security/vomsdir/%s/%s.lsc' % (vo_name, server_name)
print server_info['DN']
print server_info['CA_DN']
print
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment