improved post server setup code in Monitor.spec
[monitor.git] / monitor / wrapper / plc.py
index 8f70c1f..1515396 100644 (file)
@@ -71,7 +71,7 @@ class PLC:
 
                try:
                        return lambda *params : method(self.auth, *params)
-               except ProtocolError:
+               except xmlrpclib.ProtocolError:
                        traceback.print_exc()
                        global_error_count += 1
                        if global_error_count >= 10:
@@ -84,7 +84,6 @@ class PLC:
        def __repr__(self):
                return self.api.__repr__()
 
-api = PLC(auth.auth, auth.server)
 
 class CachedPLC(PLC):
 
@@ -132,6 +131,9 @@ class CachedPLC(PLC):
 
                return run_or_returncached
 
+api = PLC(auth.auth, auth.server)
+cacheapi = CachedPLC(auth.auth, auth.server)
+
 
 def getAPI(url):
        return xmlrpclib.Server(url, verbose=False, allow_none=True)
@@ -146,6 +148,13 @@ def getAuthAPI():
 def getCachedAuthAPI():
        return CachedPLC(auth.auth, auth.server)
 
+def getSessionAPI(session, server):
+       nodeauth = Auth(session=session)
+       return PLC(nodeauth.auth, server)
+def getUserAPI(username, password, server):
+       auth = Auth(username,password)
+       return PLC(auth.auth, server)
+
 def getTechEmails(loginbase):
        """
                For the given site, return all user email addresses that have the 'tech' role.