logger = logging.getLogger("monitor")
class Auth:
- def __init__(self, username=None, password=None):
- if username==None and password==None:
- self.auth = {'AuthMethod': "anonymous"}
+ def __init__(self, username=None, password=None, **kwargs):
+ if 'session' in kwargs:
+ self.auth= { 'AuthMethod' : 'session',
+ 'session' : kwargs['session'] }
else:
- self.auth = {'Username' : username,
- 'AuthMethod' : 'password',
- 'AuthString' : password}
-
+ if username==None and password==None:
+ self.auth = {'AuthMethod': "anonymous"}
+ else:
+ self.auth = {'Username' : username,
+ 'AuthMethod' : 'password',
+ 'AuthString' : password}
# NOTE: this host is used by default when there are no auth files.
XMLRPC_SERVER="https://boot.planet-lab.org/PLCAPI/"
def run_or_returncached(*params):
cachename = self._param_to_str(name, *params)
#print "cachename is %s" % cachename
+ if hasattr(config, 'refresh'):
+ refresh = config.refresh
+ else:
+ refresh = False
+
if 'Get' in name:
if not database.cachedRecently(cachename):
load_old_cache = False
def getAPI(url):
return xmlrpclib.Server(url, verbose=False, allow_none=True)
+def getNodeAPI(session):
+ nodeauth = Auth(session=session)
+ return PLC(nodeauth.auth, auth.server)
+
def getAuthAPI():
return PLC(auth.auth, auth.server)
"""
For the given site, return all user email addresses that have the 'tech' role.
"""
- #api = getAuthAPI()
+ api = getAuthAPI()
# get site details.
s = api.GetSites(loginbase)[0]
# get people at site
anon = {'AuthMethod': "anonymous"}
nodeinfo = api.GetNodes(auth.auth, {"hostname": nodename}, ["pcu_ids", "ports"])[0]
if nodeinfo['pcu_ids']:
+ print nodeinfo
sitepcu = api.GetPCUs(auth.auth, nodeinfo['pcu_ids'])[0]
+ print sitepcu
+ print nodeinfo["ports"]
sitepcu[nodename] = nodeinfo["ports"][0]
return sitepcu
else: