-# $Id$
-
import safexmlrpc
-import hmac, sha
+import hmac
+try:
+ from hashlib import sha1 as sha
+except ImportError:
+ import sha
+import logger
class PLCAPI:
"""
session => SessionAuth
To authenticate using the Boot Manager authentication method, or
- the new session-based method.
+ the new session-based method, respectively.
"""
def __init__(self, uri, cacert, auth, timeout = 90, **kwds):
self.node_id = self.key = self.session = None
self.server = safexmlrpc.ServerProxy(self.uri, self.cacert, self.timeout, allow_none = 1, **kwds)
-
- self.__check_authentication()
- def __update_session(self, f="/usr/boot/plnode.txt"):
- # try authenticatipopulate /etc.planetlab/session
+ def update_session(self, f="/usr/boot/plnode.txt"):
+ # try authenticatipopulate /etc.planetlab/session
def plnode(key):
try:
return [i[:-1].split('=') for i in open(f).readlines() if i.startswith(key)][0][1].strip('"')
plc = PLCAPI(self.uri, self.cacert, auth, self.timeout)
open("/etc/planetlab/session", 'w').write(plc.GetSession().strip())
self.session = open("/etc/planetlab/session").read().strip()
-
- def __check_authentication(self):
- # just a simple call to check authentication
- def check():
- if (self.node_id and self.key) or self.session:
- if self.AuthCheck() == 1: return True
- return False
- if not check():
- if self.node_id and self.key:
- # if hmac fails, just make it fail
- raise Exception, "Unable to authenticate with hmac"
- else:
- self.__update_session()
- if not check():
- raise Exception, "Unable to authenticate with session"
-
+
+
+ def check_authentication(self):
+ authstatus = False
+ if self.key or self.session:
+ try:
+ authstatus = self.AuthCheck()
+ except:
+ logger.log_exc("plcapi: failed in plcapi.check_authentication")
+ return authstatus
+
def add_auth(self, function):
"""