#
-# Geniwrapper XML-RPC and SOAP interfaces
+# SFA XML-RPC and SOAP interfaces
#
-### $Id: api.py 15596 2009-10-31 21:42:05Z anil $
-### $URL: https://svn.planet-lab.org/svn/sfa/trunk/sfa/plc/api.py $
+### $Id$
+### $URL$
#
import sys
from sfa.util.debug import *
from sfa.trust.credential import *
from sfa.trust.certificate import *
-from sfa.util.misc import *
+from sfa.util.namespace import *
from sfa.util.sfalogging import *
+from sfa.server.registry import Registries
+from sfa.server.aggregate import Aggregates
# See "2.2 Characters" in the XML specification:
#
class BaseAPI:
- def __init__(self, config = "/etc/sfa/sfa_config", encoding = "utf-8", methods='sfa.methods',
+ def __init__(self, config = "/etc/sfa/sfa_config.py", encoding = "utf-8", methods='sfa.methods',
+
peer_cert = None, interface = None, key_file = None, cert_file = None):
self.encoding = encoding
# Load configuration
self.config = Config(config)
self.auth = Auth(peer_cert)
+ self.hrn = self.config.SFA_INTERFACE_HRN
self.interface = interface
self.key_file = key_file
self.key = Keypair(filename=self.key_file)
self.cert_file = cert_file
self.cert = Certificate(filename=self.cert_file)
self.credential = None
-
+ self.source = None
self.time_format = "%Y-%m-%d %H:%M:%S"
self.logger=get_sfa_logger()
+
+ # load registries
+ self.registries = Registries(self)
+
+ # load aggregates
+ self.aggregates = Aggregates(self)
def callable(self, method):
"""
# Look up method
if method not in self.methods:
- raise GeniInvalidAPIMethod, method
+ raise SfaInvalidAPIMethod, method
# Get new instance of method
try:
callablemethod = getattr(module, classname)(self)
return getattr(module, classname)(self)
except ImportError, AttributeError:
- raise GeniInvalidAPIMethod, method
+ raise SfaInvalidAPIMethod, method
def call(self, source, method, *args):
"""
"""
function = self.callable(method)
function.source = source
+ self.source = source
return function(*args)
def handle(self, source, data):
# Return result
if interface == xmlrpclib:
- if not isinstance(result, GeniFault):
+ if not isinstance(result, SfaFault):
result = (result,)
data = xmlrpclib.dumps(result, methodresponse = True, encoding = self.encoding, allow_none = 1)