# configured, use them, with their auth definitions.
auth = Auth()
try:
- import monitorconfig
- auth.auth = {'Username' : monitorconfig.API_AUTH_USER,
+ from monitor import config
+ auth.auth = {'Username' : config.API_AUTH_USER,
'AuthMethod' : 'password',
- 'AuthString' : monitorconfig.API_AUTH_PASSWORD}
- auth.server = monitorconfig.API_SERVER
+ 'AuthString' : config.API_AUTH_PASSWORD}
+ auth.server = config.API_SERVER
except:
try:
import auth
def getAuthAPI():
return PLC(auth.auth, auth.server)
+
+def getTechEmails(loginbase):
+ """
+ For the given site, return all user email addresses that have the 'tech' role.
+ """
+ api = getAuthAPI()
+ # get site details.
+ s = api.GetSites(loginbase)[0]
+ # get people at site
+ p = api.GetPersons(s['person_ids'])
+ # pull out those with the right role.
+ emails = [ person['email'] for person in filter(lambda x: 'tech' in x['roles'], p) ]
+ return emails
+
+def getPIEmails(loginbase):
+ """
+ For the given site, return all user email addresses that have the 'tech' role.
+ """
+ api = getAuthAPI()
+ # get site details.
+ s = api.GetSites(loginbase)[0]
+ # get people at site
+ p = api.GetPersons(s['person_ids'])
+ # pull out those with the right role.
+ emails = [ person['email'] for person in filter(lambda x: 'pi' in x['roles'], p) ]
+ return emails
+
+def getSliceUserEmails(loginbase):
+ """
+ For the given site, return all user email addresses that have the 'tech' role.
+ """
+ #api = getAuthAPI()
+ # get site details.
+ s = api.GetSites(loginbase)[0]
+ # get people at site
+ slices = api.GetSlices(s['slice_ids'])
+ people = []
+ for slice in slices:
+ people += api.GetPersons(slice['person_ids'])
+ # pull out those with the right role.
+ emails = [ person['email'] for person in filter(lambda x: 'pi' in x['roles'], people) ]
+ unique_emails = [ x for x in set(emails) ]
+ return unique_emails
+
'''
Returns list of nodes in dbg as reported by PLC
'''
Returns loginbase for given nodename
'''
def siteId(nodename):
- api = xmlrpclib.Server(auth.server, verbose=False)
- anon = {'AuthMethod': "anonymous"}
- site_id = api.GetNodes (anon, {"hostname": nodename}, ['site_id'])
+ api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True)
+ site_id = api.GetNodes (auth.auth, {"hostname": nodename}, ['site_id'])
if len(site_id) == 1:
- loginbase = api.GetSites (anon, site_id[0], ["login_base"])
+ loginbase = api.GetSites (auth.auth, site_id[0], ["login_base"])
return loginbase[0]['login_base']
+ else:
+ print "Not nodes returned!!!!"
'''
Returns list of slices for a site.
'''
def slices(loginbase):
siteslices = []
- api = xmlrpclib.Server(auth.server, verbose=False)
+ api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True)
sliceids = api.GetSites (auth.auth, {"login_base" : loginbase}, ["slice_ids"])[0]['slice_ids']
for slice in api.GetSlices(auth.auth, {"slice_id" : sliceids}, ["name"]):
siteslices.append(slice['name'])
Returns dict of PCU info of a given node.
'''
def getpcu(nodename):
- api = xmlrpclib.Server(auth.server, verbose=False)
+ api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True)
anon = {'AuthMethod': "anonymous"}
nodeinfo = api.GetNodes(auth.auth, {"hostname": nodename}, ["pcu_ids", "ports"])[0]
if nodeinfo['pcu_ids']:
print "getSiteNodes: %s" % exc
return nodelist
+
def getPersons(filter=None, fields=None):
api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True)
persons = []